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 <benoit@matrix.org>
This commit is contained in:
Jorge Martin Espinosa 2024-03-07 17:18:06 +01:00 committed by GitHub
parent b07ec3e681
commit db7e719c57

View file

@ -38,7 +38,6 @@ import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Modifier 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.features.roomdetails.impl.members.aRoomMember
import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.designsystem.components.ProgressDialog 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.AsyncIndicator
import io.element.android.libraries.designsystem.components.async.AsyncIndicatorHost import io.element.android.libraries.designsystem.components.async.AsyncIndicatorHost
import io.element.android.libraries.designsystem.components.async.rememberAsyncIndicatorState import io.element.android.libraries.designsystem.components.async.rememberAsyncIndicatorState
@ -179,20 +179,19 @@ fun ChangeRolesView(
val asyncIndicatorState = rememberAsyncIndicatorState() val asyncIndicatorState = rememberAsyncIndicatorState()
AsyncIndicatorHost(modifier = Modifier.statusBarsPadding(), asyncIndicatorState) AsyncIndicatorHost(modifier = Modifier.statusBarsPadding(), asyncIndicatorState)
when (state.exitState) { AsyncActionView(
is AsyncAction.Confirming -> { async = state.exitState,
onSuccess = { updatedOnBackPressed() },
confirmationDialog = {
ConfirmationDialog( ConfirmationDialog(
title = stringResource(CommonStrings.dialog_unsaved_changes_title), title = stringResource(CommonStrings.dialog_unsaved_changes_title),
content = stringResource(CommonStrings.dialog_unsaved_changes_description_android), content = stringResource(CommonStrings.dialog_unsaved_changes_description_android),
onSubmitClicked = { state.eventSink(ChangeRolesEvent.Exit) }, onSubmitClicked = { state.eventSink(ChangeRolesEvent.Exit) },
onDismiss = { state.eventSink(ChangeRolesEvent.CancelExit) } onDismiss = { state.eventSink(ChangeRolesEvent.CancelExit) }
) )
} },
is AsyncAction.Success -> { onErrorDismiss = { /* Cannot happen */ },
SideEffect { updatedOnBackPressed() } )
}
else -> Unit
}
when (state.savingState) { when (state.savingState) {
is AsyncAction.Confirming -> { is AsyncAction.Confirming -> {