diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index 6c7d6c24a27..596c1d87e47 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -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) + } } } }