[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ement ef84ffcb1e 4/4: Change/Fix: (ement-room--insert-e
From: |
ELPA Syncer |
Subject: |
[elpa] externals/ement ef84ffcb1e 4/4: Change/Fix: (ement-room--insert-event) Account for timestamp headers |
Date: |
Fri, 23 Sep 2022 18:57:36 -0400 (EDT) |
branch: externals/ement
commit ef84ffcb1e10bc5ab9ee108a85fb858233add323
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>
Change/Fix: (ement-room--insert-event) Account for timestamp headers
This should be an improvement for when loading old messages, but it
may not be quite perfect yet.
---
README.org | 1 +
ement-room.el | 22 ++++++++++++++--------
2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/README.org b/README.org
index fa4813c671..83ef9c25f0 100644
--- a/README.org
+++ b/README.org
@@ -300,6 +300,7 @@ Note that, while ~matrix-client~ remains usable, and
probably will for some time
*Fixes*
+ Command ~ement-describe-room~ for rooms without topics.
++ Improve insertion of old messages around existing timestamp headers.
** 0.2.1
diff --git a/ement-room.el b/ement-room.el
index 7ced075ae4..3a65731d0f 100644
--- a/ement-room.el
+++ b/ement-room.el
@@ -2803,20 +2803,26 @@ Search starts from node START and moves by NEXT."
while node
when (funcall pred (ewoc-data node))
return node))
- (event-node-p (data)
- (or (ement-event-p data)
- (ement-room-membership-events-p data)))
+ (timestamped-node-p (data)
+ (pcase data
+ ((pred ement-event-p) t)
+ ((pred ement-room-membership-events-p) t)
+ (`(ts . ,_) t)))
(node-ts (data)
- (cl-etypecase data
- (ement-event (ement-event-origin-server-ts data))
- ;; Not sure whether to use earliest or latest ts;
let's try this for now.
- (ement-room-membership-events
(ement-room-membership-events-earliest-ts data))))
+ (pcase data
+ ((pred ement-event-p) (ement-event-origin-server-ts
data))
+ ((pred ement-room-membership-events-p)
+ ;; Not sure whether to use earliest or latest ts;
let's try this for now.
+ (ement-room-membership-events-earliest-ts data))
+ (`(ts ,ts)
+ ;; Matrix server timestamps are in ms, so we must
convert back.
+ (* 1000 ts))))
(node< (a b)
"Return non-nil if event A's timestamp is before B's."
(< (node-ts a) (node-ts b))))
(ement-debug "INSERTING NEW EVENT: " (format-event event))
(let* ((ewoc ement-ewoc)
- (event-node-before (ement-room--ewoc-node-before ewoc event #'node<
:pred #'event-node-p))
+ (event-node-before (ement-room--ewoc-node-before ewoc event #'node<
:pred #'timestamped-node-p))
new-node)
;; HACK: Insert after any read markers.
(cl-loop for node-after-node-before = (ewoc-next ewoc event-node-before)