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 ee49e8fa19
commit 0cb9d86157
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

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)
}
}
}
}