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:
parent
cfa3e9fb44
commit
6bdb4d1ad4
1 changed files with 6 additions and 2 deletions
|
|
@ -389,13 +389,17 @@ class TimelinePresenter(
|
||||||
) = launch(dispatchers.computation) {
|
) = launch(dispatchers.computation) {
|
||||||
// If we are at the bottom of timeline, we mark the room as read.
|
// If we are at the bottom of timeline, we mark the room as read.
|
||||||
if (firstVisibleIndex == 0) {
|
if (firstVisibleIndex == 0) {
|
||||||
room.liveTimeline.markAsRead(receiptType = readReceiptType)
|
timelineController.invokeOnCurrentTimeline {
|
||||||
|
markAsRead(receiptType = readReceiptType)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Get last valid EventId seen by the user, as the first index might refer to a Virtual item
|
// Get last valid EventId seen by the user, as the first index might refer to a Virtual item
|
||||||
val eventId = getLastEventIdBeforeOrAt(firstVisibleIndex, timelineItems)
|
val eventId = getLastEventIdBeforeOrAt(firstVisibleIndex, timelineItems)
|
||||||
if (eventId != null && eventId != lastReadReceiptId.value) {
|
if (eventId != null && eventId != lastReadReceiptId.value) {
|
||||||
lastReadReceiptId.value = eventId
|
lastReadReceiptId.value = eventId
|
||||||
room.liveTimeline.sendReadReceipt(eventId = eventId, receiptType = readReceiptType)
|
timelineController.invokeOnCurrentTimeline {
|
||||||
|
sendReadReceipt(eventId = eventId, receiptType = readReceiptType)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue