* Improve jump to unread button Signed-off-by: Ajay Bura <ajbura@gmail.com> * Remove unused cod Signed-off-by: Ajay Bura <ajbura@gmail.com> * Fix mark as read not hidding jump to unread btn Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add notification mark as read action Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add esc as hotkey to mark room as read Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add message icons Signed-off-by: Ajay Bura <ajbura@gmail.com> * Change jump to unread icon Signed-off-by: Ajay Bura <ajbura@gmail.com>
26 lines
839 B
JavaScript
26 lines
839 B
JavaScript
import initMatrix from '../initMatrix';
|
|
|
|
// eslint-disable-next-line import/prefer-default-export
|
|
export async function markAsRead(roomId) {
|
|
const mx = initMatrix.matrixClient;
|
|
const room = mx.getRoom(roomId);
|
|
if (!room) return;
|
|
initMatrix.notifications.deleteNoti(roomId);
|
|
|
|
const timeline = room.getLiveTimeline().getEvents();
|
|
const readEventId = room.getEventReadUpTo(mx.getUserId());
|
|
|
|
const getLatestValidEvent = () => {
|
|
for (let i = timeline.length - 1; i >= 0; i -= 1) {
|
|
const latestEvent = timeline[i];
|
|
if (latestEvent.getId() === readEventId) return null;
|
|
if (!latestEvent.isSending()) return latestEvent;
|
|
}
|
|
return null;
|
|
};
|
|
if (timeline.length === 0) return;
|
|
const latestEvent = getLatestValidEvent();
|
|
if (latestEvent === null) return;
|
|
|
|
await mx.sendReadReceipt(latestEvent);
|
|
}
|