From c146087f20e50785611f065074ca0563642cae27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Thu, 13 Nov 2025 07:59:43 +0100 Subject: [PATCH 1/2] Fix navigation stack overflow when sharing media --- .../libraries/roomselect/impl/RoomSelectView.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt index 8e7b7e08deb..21fad2085e3 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt @@ -25,6 +25,10 @@ import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -81,15 +85,20 @@ fun RoomSelectView( ) } + var canHandleBack by remember { mutableStateOf(true) } fun onBackButton(state: RoomSelectState) { if (state.isSearchActive) { state.eventSink(RoomSelectEvents.ToggleSearchActive) } else { + canHandleBack = false onDismiss() } } - BackHandler(onBack = { onBackButton(state) }) + BackHandler( + enabled = canHandleBack, + onBack = { onBackButton(state) } + ) Scaffold( modifier = modifier, From 53d100e7e3c10d5981ec26c613af1e3e7af5bf94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Thu, 13 Nov 2025 10:18:20 +0100 Subject: [PATCH 2/2] Improve the handling of back navigation in the navigation button too --- .../android/libraries/roomselect/impl/RoomSelectView.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt index 21fad2085e3..4d02e1ba109 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt @@ -89,7 +89,7 @@ fun RoomSelectView( fun onBackButton(state: RoomSelectState) { if (state.isSearchActive) { state.eventSink(RoomSelectEvents.ToggleSearchActive) - } else { + } else if (canHandleBack) { canHandleBack = false onDismiss() } @@ -109,7 +109,10 @@ fun RoomSelectView( RoomSelectMode.Share -> stringResource(CommonStrings.common_send_to) }, navigationIcon = { - BackButton(onClick = { onBackButton(state) }) + BackButton( + enabled = canHandleBack, + onClick = { onBackButton(state) } + ) }, actions = { TextButton(