Send read receipts using the current timeline, not the live timeline (#5731)

This fixes sending read receipts in threaded timelines.
This commit is contained in:
Jorge Martin Espinosa
2025-11-17 13:33:17 +01:00
committed by GitHub
parent cfa3e9fb44
commit 6bdb4d1ad4

View File

@@ -389,13 +389,17 @@ class TimelinePresenter(
) = launch(dispatchers.computation) {
// If we are at the bottom of timeline, we mark the room as read.
if (firstVisibleIndex == 0) {
room.liveTimeline.markAsRead(receiptType = readReceiptType)
timelineController.invokeOnCurrentTimeline {
markAsRead(receiptType = readReceiptType)
}
} else {
// Get last valid EventId seen by the user, as the first index might refer to a Virtual item
val eventId = getLastEventIdBeforeOrAt(firstVisibleIndex, timelineItems)
if (eventId != null && eventId != lastReadReceiptId.value) {
lastReadReceiptId.value = eventId
room.liveTimeline.sendReadReceipt(eventId = eventId, receiptType = readReceiptType)
timelineController.invokeOnCurrentTimeline {
sendReadReceipt(eventId = eventId, receiptType = readReceiptType)
}
}
}
}