summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoutade <thegoofist@protonmail.com>2019-09-27 06:42:06 -0500
committerBoutade <thegoofist@protonmail.com>2019-09-27 06:42:06 -0500
commit7174ced32c6046114831fdc3691f1df6f9fd76c8 (patch)
treeef3c85e8397d4e01099ca3a1eb1ca345c65b58cc
parentdb1d26d76fc1946512469774afdce1d8e4ee28d5 (diff)
added account-data-event and account-data-event processor function
-rw-r--r--granolin.lisp20
1 files changed, 16 insertions, 4 deletions
diff --git a/granolin.lisp b/granolin.lisp
index 8ff860a..3750f51 100644
--- a/granolin.lisp
+++ b/granolin.lisp
@@ -105,6 +105,8 @@
(:documentation "Implemented on handlers that need to respond to events.")
(:method ((client client) room event) t))
+
+
(defgeneric clean-up (client)
(:documentation "To be run before the client crashes or is killed.")
(:method ((client client))
@@ -161,7 +163,8 @@
(rooms :|rooms|)
(presence :|presence|)
(joined-rooms :|rooms| :|join|)
- (invited-rooms :|rooms| :|invite|))
+ (invited-rooms :|rooms| :|invite|)
+ (account-data-events :|account_data| :|events|))
(def-json-wrap timeline-event
(event-content :|content|)
@@ -216,6 +219,10 @@
(event-type :|type|)
(sender :|sender|))
+(def-json-wrap account-data-event
+ (event-content :|content|)
+ (event-type :|type|))
+
(def-json-wrap basic-json)
@@ -364,8 +371,9 @@
(defvar *notice-message-event* (make-notice-message-event :data nil))
(defvar *location-message-event* (make-location-message-event :data nil))
(defvar *state-event* (make-room-state-event :data nil))
+(defvar *account-data-event* (make-account-data-event :data nil))
-(defun categorize-and-set-event (ob)
+(defun categorize-and-set-timeline-event (ob)
(cond
((text-message-event-p* ob)
(setf (timeline-event-data *text-message-event*) ob)
@@ -405,14 +413,13 @@
(dolist (ob (getob room :|timeline| :|events|))
(handle-event client
room-id
- (categorize-and-set-event ob)))
+ (categorize-and-set-timeline-event ob)))
;; 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*))))
-
(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
@@ -421,6 +428,11 @@
(setf (invitation-event-data invite-event) ob)
(handle-event client room-id invite-event)))))
+(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*)))
+
(defun send-text-message (client room-id message &rest args)
"Sends the MESSAGE (a string) to the room with id ROOM-ID. MESSAGE can also be