Fix sending message not mark as read

Signed-off-by: Ajay Bura <ajbura@gmail.com>
This commit is contained in:
Ajay Bura 2022-03-16 18:44:42 +05:30
parent 54d89d2321
commit 64670732b0

View file

@ -230,10 +230,18 @@ class RoomTimeline extends EventEmitter {
markAllAsRead() { markAllAsRead() {
const readEventId = this.getReadUpToEventId(); const readEventId = this.getReadUpToEventId();
const getLatestValidEvent = () => {
for (let i = this.timeline.length - 1; i >= 0; i -= 1) {
const latestEvent = this.timeline[i];
if (latestEvent.getId() === readEventId) return null;
if (!latestEvent.isSending()) return latestEvent;
}
return null;
};
this.notifications.deleteNoti(this.roomId); this.notifications.deleteNoti(this.roomId);
if (this.timeline.length === 0) return; if (this.timeline.length === 0) return;
const latestEvent = this.timeline[this.timeline.length - 1]; const latestEvent = getLatestValidEvent();
if (latestEvent.isSending() || latestEvent.getId().startsWith('~')) return; if (latestEvent === null) return;
if (readEventId === latestEvent.getId()) return; if (readEventId === latestEvent.getId()) return;
this.matrixClient.sendReadReceipt(latestEvent); this.matrixClient.sendReadReceipt(latestEvent);
this.emit(cons.events.roomTimeline.MARKED_AS_READ, latestEvent); this.emit(cons.events.roomTimeline.MARKED_AS_READ, latestEvent);