branch: externals/ement
commit f7b6a44b59f6d4cc42c433ee8591b4bc71773c40
Author: Adam Porter <[email protected]>
Commit: Adam Porter <[email protected]>

    Fix: Formatting of unban events
    
    * ement-room.el (ement-room--format-member-event):
    (ement-room--format-membership-events):
---
 README.org    |  1 +
 ement-room.el | 12 ++++++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/README.org b/README.org
index 3d233912f8..cf5f6f392b 100644
--- a/README.org
+++ b/README.org
@@ -297,6 +297,7 @@ Note that, while ~matrix-client~ remains usable, and 
probably will for some time
 
 *Fixes*
 + Retry sync for HTTP 502 "Bad Gateway" errors.
++ Formatting of unban events.
 
 ** 0.5.2
 
diff --git a/ement-room.el b/ement-room.el
index 082b91a73d..49cc82517b 100644
--- a/ement-room.el
+++ b/ement-room.el
@@ -3642,7 +3642,7 @@ a copy of the local keymap, and sets 
`header-line-format'."
            ("ban"
             (format "%s unbanned %s"
                     (sender-name-id-string)
-                    (new-displayname-sender-name-state-key-string)))
+                    state-key))
            (_ (format "%s left%s"
                       (prev-displayname-id-string)
                       (if reason
@@ -3698,7 +3698,9 @@ STRUCT should be an `ement-room-membership-events' 
struct."
         (0 (warn "No events in `ement-room-membership-events' struct"))
         (1 (ement-room--format-member-event (car events) room))
         (_ (let* ((left-events (cl-remove-if-not (lambda (event)
-                                                   (equal "leave" (cdr 
(membership-types event))))
+                                                   (and (equal "leave" (cdr 
(membership-types event)))
+                                                        (not (equal "ban" 
(map-nested-elt (ement-event-unsigned event)
+                                                                               
           '(prev_content membership))))))
                                                  events))
                   (join-events (cl-remove-if-not (lambda (event)
                                                    (pcase-let ((`(,old . ,new) 
(membership-types event)))
@@ -3717,6 +3719,11 @@ STRUCT should be an `ement-room-membership-events' 
struct."
                                                   (and (member (cdr 
(membership-types event)) '("invite" "leave"))
                                                        (equal "ban" (cdr 
(membership-types event)))))
                                                 events))
+                  (unban-events (cl-remove-if-not (lambda (event)
+                                                    (and (equal "ban" 
(map-nested-elt (ement-event-unsigned event)
+                                                                               
       '(prev_content membership)))
+                                                         (equal "leave" 
(alist-get 'membership (ement-event-content event)))))
+                                                  events))
                   (kick-and-ban-events (cl-remove-if-not (lambda (event)
                                                            (and (equal "join" 
(car (membership-types event)))
                                                                 (equal "ban" 
(cdr (membership-types event)))))
@@ -3774,6 +3781,7 @@ STRUCT should be an `ement-room-membership-events' 
struct."
                                                            "rejoined and left" 
rejoin-and-leave-events
                                                            "invited" 
invite-events
                                                            "banned" ban-events
+                                                           "unbanned" 
unban-events
                                                            "kicked and banned" 
kick-and-ban-events
                                                            "changed name" 
rename-events
                                                            "changed avatar" 
avatar-events)

Reply via email to