From db7e719c570cdf6d9405aa654272675950a6d9de Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Thu, 7 Mar 2024 17:18:06 +0100 Subject: [PATCH] Fix double back navigation in roles and permissions screen (#2506) * Fix double back navigation in roles and permissions screen This happened after saving changes and pressing the back navigation button in the top app bar. --------- Co-authored-by: Benoit Marty --- .../changeroles/ChangeRolesView.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt index d7242014a6..9510ca4272 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/changeroles/ChangeRolesView.kt @@ -38,7 +38,6 @@ import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.Modifier @@ -50,6 +49,7 @@ import io.element.android.features.roomdetails.impl.R import io.element.android.features.roomdetails.impl.members.aRoomMember import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.designsystem.components.ProgressDialog +import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.async.AsyncIndicator import io.element.android.libraries.designsystem.components.async.AsyncIndicatorHost import io.element.android.libraries.designsystem.components.async.rememberAsyncIndicatorState @@ -179,20 +179,19 @@ fun ChangeRolesView( val asyncIndicatorState = rememberAsyncIndicatorState() AsyncIndicatorHost(modifier = Modifier.statusBarsPadding(), asyncIndicatorState) - when (state.exitState) { - is AsyncAction.Confirming -> { + AsyncActionView( + async = state.exitState, + onSuccess = { updatedOnBackPressed() }, + confirmationDialog = { ConfirmationDialog( title = stringResource(CommonStrings.dialog_unsaved_changes_title), content = stringResource(CommonStrings.dialog_unsaved_changes_description_android), onSubmitClicked = { state.eventSink(ChangeRolesEvent.Exit) }, onDismiss = { state.eventSink(ChangeRolesEvent.CancelExit) } ) - } - is AsyncAction.Success -> { - SideEffect { updatedOnBackPressed() } - } - else -> Unit - } + }, + onErrorDismiss = { /* Cannot happen */ }, + ) when (state.savingState) { is AsyncAction.Confirming -> {