[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ement 9450f74138 1/2: Change: (--format-membership-even
From: |
ELPA Syncer |
Subject: |
[elpa] externals/ement 9450f74138 1/2: Change: (--format-membership-events) "was kicked and rejoined" event pairs |
Date: |
Tue, 6 Feb 2024 03:57:59 -0500 (EST) |
branch: externals/ement
commit 9450f74138335ac036ae80a0c2a727fb9babe2cc
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>
Change: (--format-membership-events) "was kicked and rejoined" event pairs
---
README.org | 1 +
ement-room.el | 17 ++++++++++++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/README.org b/README.org
index 2df224121d..7c197490d0 100644
--- a/README.org
+++ b/README.org
@@ -297,6 +297,7 @@ Ement.el doesn't support encrypted rooms natively, but it
can be used transparen
*Changes*
+ Improve prompt used when viewing a room that is not joined.
([[https://github.com/alphapapa/ement.el/issues/241][#241]]. Thanks to
[[https://github.com/phil-s][Phil Sainty]].)
++ Format "was kicked and rejoined" membership event pairs.
** 0.14
diff --git a/ement-room.el b/ement-room.el
index 6f773225ef..f99f4b5571 100644
--- a/ement-room.el
+++ b/ement-room.el
@@ -4011,6 +4011,12 @@ STRUCT should be an `ement-room-membership-events'
struct."
(and (equal "ban"
(old-membership event))
(equal "leave"
(new-membership event))))
events))
+ (kicked-events (cl-remove-if-not (lambda (event)
+ (and (equal "join"
(old-membership event))
+ (equal "leave"
(new-membership event))
+ (not (equal
(ement-user-id (ement-event-sender event))
+
(ement-event-state-key event)))))
+ events))
(kick-and-ban-events (cl-remove-if-not (lambda (event)
(and (equal "join"
(old-membership event))
(equal "ban"
(new-membership event))))
@@ -4029,7 +4035,7 @@ STRUCT should be an `ement-room-membership-events'
struct."
(map-nested-elt (ement-event-unsigned event)
'(prev_content avatar_url))))))
events))
- join-and-leave-events rejoin-and-leave-events)
+ join-and-leave-events rejoin-and-leave-events
kicked-and-rejoined-events)
;; Remove apparent duplicates between join/rejoin events.
(setf join-events (cl-delete-if (lambda (event)
(cl-find (ement-event-state-key
event) rejoin-events
@@ -4048,6 +4054,14 @@ STRUCT should be an `ement-room-membership-events'
struct."
:test #'equal :key #'ement-event-state-key)
left-events
(cl-delete (ement-event-state-key left-event) left-events
:test #'equal :key #'ement-event-state-key)))
+ kicked-and-rejoined-events (cl-loop for rejoin-event in
rejoin-events
+ for kicked-event =
(cl-find (ement-event-state-key rejoin-event) kicked-events
+
:test #'equal :key #'ement-event-state-key)
+ when kicked-event
collect kicked-event
+ and do (setf
rejoin-events (cl-delete (ement-event-state-key kicked-event) rejoin-events
+
:test #'equal :key #'ement-event-state-key)
+
left-events (cl-delete (ement-event-state-key kicked-event) left-events
+
:test #'equal :key #'ement-event-state-key)))
rejoin-and-leave-events (cl-loop for rejoin-event in
rejoin-events
for left-event = (cl-find
(ement-event-state-key rejoin-event) left-events
:test #'equal :key #'ement-event-state-key)
@@ -4064,6 +4078,7 @@ STRUCT should be an `ement-room-membership-events'
struct."
"joined" join-events
"left" left-events
"joined and left"
join-and-leave-events
+ "was kicked and
rejoined" kicked-and-rejoined-events
"rejoined and left"
rejoin-and-leave-events
"invited"
invite-events
"rejected
invitation" reject-events