From d17992abe8d4bf99741eb36aef20916070b6ff0b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 8 Apr 2026 17:15:04 +0200 Subject: [PATCH 1/2] Ensure Mark as fully read is not invoked several times. --- .../android/features/messages/impl/MessagesPresenter.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index d9c3d17afa..4b004b74d7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -250,8 +250,8 @@ class MessagesPresenter( is MessagesEvent.OnUserClicked -> { roomMemberModerationState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(event.user)) } - is MessagesEvent.MarkAsFullyReadAndExit -> coroutineScope.launch { - if (!markingAsReadAndExiting.getAndSet(true)) { + is MessagesEvent.MarkAsFullyReadAndExit -> if (!markingAsReadAndExiting.getAndSet(true)) { + coroutineScope.launch { val latestEventId = room.liveTimeline.getLatestEventId().getOrElse { Timber.w(it, "Failed to get latest event id to mark as fully read") navigator.close() @@ -263,7 +263,6 @@ class MessagesPresenter( } } navigator.close() - markingAsReadAndExiting.set(false) } } } From 5e3f3f31e8bcbafbb52b72cd391321eaac26b97e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 8 Apr 2026 17:16:04 +0200 Subject: [PATCH 2/2] Improve code. --- .../android/features/messages/impl/MessagesPresenter.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index 4b004b74d7..edb11ff389 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -254,8 +254,7 @@ class MessagesPresenter( coroutineScope.launch { val latestEventId = room.liveTimeline.getLatestEventId().getOrElse { Timber.w(it, "Failed to get latest event id to mark as fully read") - navigator.close() - return@launch + null } latestEventId?.let { eventId -> sessionCoroutineScope.launch {