diff options
author | Boutade <thegoofist@protonmail.com> | 2019-09-27 06:51:51 -0500 |
---|---|---|
committer | Boutade <thegoofist@protonmail.com> | 2019-09-27 06:51:51 -0500 |
commit | 363130a78ffd704bed9d30d5920dd05acfe590ac (patch) | |
tree | 5f23f9fabb19f50d873c02d02c17dc111087d8d9 | |
parent | 7174ced32c6046114831fdc3691f1df6f9fd76c8 (diff) |
changed interface to handle-event, made room-id optional
-rw-r--r-- | granolin.lisp | 17 | ||||
-rw-r--r-- | utility-apps.lisp | 11 |
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))) |