emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ement 85e4355789 2/3: Add: ("m.room.canonical_alias")


From: ELPA Syncer
Subject: [elpa] externals/ement 85e4355789 2/3: Add: ("m.room.canonical_alias")
Date: Mon, 14 Nov 2022 17:57:41 -0500 (EST)

branch: externals/ement
commit 85e43557895170d44b2bcc403d5fad6df8fcb145
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>

    Add: ("m.room.canonical_alias")
---
 README.org    |  1 +
 ement-room.el | 17 +++++++++++++++++
 ement.el      |  5 +++++
 3 files changed, 23 insertions(+)

diff --git a/README.org b/README.org
index 882be2e678..21614ab707 100644
--- a/README.org
+++ b/README.org
@@ -291,6 +291,7 @@ Note that, while ~matrix-client~ remains usable, and 
probably will for some time
 
 *Additions*
 + Present "joined-and-left" and "rejoined-and-left" membership event pairs as 
such.
++ Process and show rooms' canonical alias events.
 
 *Changes*
 + When selecting a room to view with completion, don't offer spaces.
diff --git a/ement-room.el b/ement-room.el
index 8610bb62cd..d9e8fba8c7 100644
--- a/ement-room.el
+++ b/ement-room.el
@@ -2301,6 +2301,21 @@ function to `ement-room-event-fns', which see."
                     new-level))
           'face 'ement-room-membership)))))
 
+(ement-room-defevent "m.room.canonical_alias"
+  (ement-room--insert-event event))
+
+(defun ement-room--format-canonical-alias-event (event room _session)
+  "Return canonical alias EVENT in ROOM formatted as a string."
+  (pcase-let (((cl-struct ement-event sender
+                          ;; TODO: Include alt_aliases, maybe.
+                          ;; TODO: Include old alias when it is being replaced.
+                          (content (map alias)))
+               event))
+    (format "%s set the canonical alias to <%s>"
+            (propertize (ement--user-displayname-in room sender)
+                        'help-echo (ement-user-id sender))
+            alias)))
+
 (ement-room-defevent "m.room.redaction"
   ;; We handle redaction events here rather than an `ement-defevent' handler.  
This way we
   ;; do less work for events in rooms that the user isn't looking at, at the 
cost of doing
@@ -3058,6 +3073,8 @@ Formats according to `ement-room-message-format-spec', 
which see."
                'face 'ement-room-membership))
             ("m.room.power_levels"
              (ement-room--format-power-levels-event event room session))
+            ("m.room.canonical_alias"
+             (ement-room--format-canonical-alias-event event room session))
             (_ (ement-room-wrap-prefix
                  (format "[sender:%s type:%s]"
                          (ement-user-id (ement-event-sender event))
diff --git a/ement.el b/ement.el
index 732e9ce2c4..a7187d5bc5 100644
--- a/ement.el
+++ b/ement.el
@@ -953,6 +953,11 @@ and `session' to the session.  Adds function to
         (setf (alist-get 'parents (ement-room-local child-room))
               (delete parent-room-id (alist-get 'parents (ement-room-local 
child-room))))))))
 
+(ement-defevent "m.room.canonical_alias"
+  (ignore session)
+  (pcase-let (((cl-struct ement-event (content (map alias))) event))
+    (setf (ement-room-canonical-alias room) alias)))
+
 (defun ement--link-children (session)
   "Link child rooms in SESSION.
 To be called after initial sync."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]