[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."