From 1a12ac219b02b05511e8cf2ae0c02e7af5895437 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Fri, 14 Nov 2025 13:50:13 +0100 Subject: [PATCH] Fix navigation stack overflow when sharing media (#5724) * Fix navigation stack overflow when sharing media * Improve the handling of back navigation in the navigation button too --- .../roomselect/impl/RoomSelectView.kt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 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 8e7b7e08de..4d02e1ba10 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 { + } else if (canHandleBack) { + canHandleBack = false onDismiss() } } - BackHandler(onBack = { onBackButton(state) }) + BackHandler( + enabled = canHandleBack, + onBack = { onBackButton(state) } + ) Scaffold( modifier = modifier, @@ -100,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(