From c9c7af6e065c0dade09000a571c102aff045a43f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 27 Sep 2023 11:25:23 +0200 Subject: [PATCH] Simplify the management of `inReplyToEventTimelineItem` --- .../MessageComposerPresenter.kt | 18 ++---------------- .../libraries/matrix/api/room/MatrixRoom.kt | 2 -- .../matrix/impl/room/RustMatrixRoom.kt | 8 +------- .../matrix/test/room/FakeMatrixRoom.kt | 4 ---- 4 files changed, 3 insertions(+), 29 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt index 9a6849023f..d6e74a0df0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt @@ -20,7 +20,6 @@ import android.Manifest import android.annotation.SuppressLint import android.net.Uri import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue @@ -152,23 +151,12 @@ class MessageComposerPresenter @Inject constructor( } } - DisposableEffect(Unit) { - onDispose { - appCoroutineScope.launch { - room.exitReplyMode() - } - } - } - fun handleEvents(event: MessageComposerEvents) { when (event) { MessageComposerEvents.ToggleFullScreenState -> isFullScreen.value = !isFullScreen.value MessageComposerEvents.CloseSpecialMode -> { richTextEditorState.setHtml("") messageComposerContext.composerMode = MessageComposerMode.Normal("") - appCoroutineScope.launch { - room.exitReplyMode() - } } is MessageComposerEvents.SendMessage -> appCoroutineScope.sendMessage( message = event.message, @@ -177,11 +165,9 @@ class MessageComposerPresenter @Inject constructor( ) is MessageComposerEvents.SetMode -> { messageComposerContext.composerMode = event.composerMode - appCoroutineScope.launch { - if (event.composerMode is MessageComposerMode.Reply) { + if (event.composerMode is MessageComposerMode.Reply) { + appCoroutineScope.launch { room.enterReplyMode(event.composerMode.eventId) - } else { - room.exitReplyMode() } } } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt index 465c0fe365..17cb637d80 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt @@ -91,8 +91,6 @@ interface MatrixRoom : Closeable { suspend fun enterReplyMode(eventId: EventId): Result - suspend fun exitReplyMode(): Result - suspend fun replyMessage(eventId: EventId, body: String, htmlBody: String?): Result suspend fun redactEvent(eventId: EventId, reason: String? = null): Result diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt index a4cedfee91..4c20dd4d0c 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt @@ -139,6 +139,7 @@ class RustMatrixRoom( roomCoroutineScope.cancel() innerRoom.destroy() roomListItem.destroy() + inReplyToEventTimelineItem?.destroy() } override val name: String? @@ -272,13 +273,6 @@ class RustMatrixRoom( } } - override suspend fun exitReplyMode(): Result = withContext(roomDispatcher) { - runCatching { - inReplyToEventTimelineItem?.destroy() - inReplyToEventTimelineItem = null - } - } - override suspend fun replyMessage(eventId: EventId, body: String, htmlBody: String?): Result = withContext(roomDispatcher) { runCatching { val inReplyTo = inReplyToEventTimelineItem ?: innerRoom.getEventTimelineItemByEventId(eventId.value) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt index 7771548d01..e8abdb62df 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt @@ -212,10 +212,6 @@ class FakeMatrixRoom( return Result.success(Unit) } - override suspend fun exitReplyMode(): Result { - return Result.success(Unit) - } - override suspend fun replyMessage(eventId: EventId, body: String, htmlBody: String?): Result { replyMessageParameter = body to htmlBody return Result.success(Unit)