summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoutade <thegoofist@protonmail.com>2019-09-27 06:51:51 -0500
committerBoutade <thegoofist@protonmail.com>2019-09-27 06:51:51 -0500
commit363130a78ffd704bed9d30d5920dd05acfe590ac (patch)
tree5f23f9fabb19f50d873c02d02c17dc111087d8d9
parent7174ced32c6046114831fdc3691f1df6f9fd76c8 (diff)
changed interface to handle-event, made room-id optional
-rw-r--r--granolin.lisp17
-rw-r--r--utility-apps.lisp11
2 files changed, 14 insertions, 14 deletions
diff --git a/granolin.lisp b/granolin.lisp
index 3750f51..6809fac 100644
--- a/granolin.lisp
+++ b/granolin.lisp
@@ -101,11 +101,9 @@
(when (and (hardcopy client) (probe-file (hardcopy client)))
(load-client-state client)))
-(defgeneric handle-event (client room event)
+(defgeneric handle-event (client event &optional room-id)
(:documentation "Implemented on handlers that need to respond to events.")
- (:method ((client client) room event) t))
-
-
+ (:method ((client client) event &optional room-id) t))
(defgeneric clean-up (client)
(:documentation "To be run before the client crashes or is killed.")
@@ -412,26 +410,27 @@
;; handle the timeline events (aka room events)
(dolist (ob (getob room :|timeline| :|events|))
(handle-event client
- room-id
- (categorize-and-set-timeline-event ob)))
+ (categorize-and-set-timeline-event ob)
+ room-id))
;; handle state chnage events (aka state events)
(dolist (ob (getob room :|state| :|events|))
(setf (room-state-event-data *state-event*) ob)
- (handle-event client room-id *state-event*))))
+ (handle-event client *state-event* room-id))))
+;; TODO add global cache variable for invite event
(defun process-invited-room-events (client)
(let ((invite-event (make-invitation-event :data nil)))
(loop :for (room-id room . ignore) :on (invited-rooms *response-object*) :by #'cddr :do
(setf room-id (symbol-name room-id))
(dolist (ob (getob room :|invite_state| :|events|))
(setf (invitation-event-data invite-event) ob)
- (handle-event client room-id invite-event)))))
+ (handle-event client invite-event room-id)))))
(defun process-account-data-events (client)
(dolist (ob (account-data-events *response-object*))
(setf (account-data-event-data *account-data-event*) ob)
- (handle-account-event client *account-data-event*)))
+ (handle-event client *account-data-event*)))
(defun send-text-message (client room-id message &rest args)
diff --git a/utility-apps.lisp b/utility-apps.lisp
index ec52773..07ce98d 100644
--- a/utility-apps.lisp
+++ b/utility-apps.lisp
@@ -17,7 +17,7 @@
(loop :for (k . v) :in alist
:do (format stream "~a: ~a~%" k v)))
-(defmethod handle-event :after ((log message-log) room (event timeline-event))
+(defmethod handle-event :after ((log message-log) (event timeline-event) &optional room)
(print "Joined Room Message/Timeline Event" (output log))
(let ((fields `(("room" . ,room)
("sender" . ,(sender event))
@@ -29,7 +29,7 @@
(terpri (output log))))
-(defmethod handle-event :after ((log message-log) room (event room-state-event))
+(defmethod handle-event :after ((log message-log) (event room-state-event) &optional room)
(print "Joined Room State Event" (output log))
(let ((fields `(("room" . ,room)
("sender" . ,(sender event))
@@ -40,7 +40,7 @@
(terpri (output log))))
-(defmethod handle-event :after ((log message-log) room (event invitation-event))
+(defmethod handle-event :after ((log message-log) (event invitation-event) &optional room)
(print "Invitation Event" (output log))
(let ((fields `(("room" . ,room)
("sender" . ,(sender event))
@@ -88,7 +88,8 @@
(defun update-room-aliases (client room-id member)
(declare (ignore client room-id member)))
-(defmethod handle-event :after ((client server-directory) room-id (event room-state-event))
+(defmethod handle-event :after
+ ((client server-directory) (event room-state-event) &optional room-id)
(cond
((string= "m.room.name" (event-type event))
(update-room-name client room-id (room-name event)))
@@ -137,7 +138,7 @@
(defclass auto-joiner () ())
-(defmethod handle-event :after ((client auto-joiner) room-id (event invitation-event))
+(defmethod handle-event :after ((client auto-joiner) (event invitation-event) &optional room-id)
(when (equal "invite"
(getf (event-content event) :|join_rule|))
(join-room client room-id)))