diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt index ae066b020a..9d4ecfe5ce 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt @@ -8,6 +8,7 @@ import com.x8bit.bitwarden.ui.auth.feature.accountsetup.navigateToSetupAutoFillS import com.x8bit.bitwarden.ui.auth.feature.accountsetup.navigateToSetupUnlockScreen import com.x8bit.bitwarden.ui.auth.feature.accountsetup.setupAutoFillDestination import com.x8bit.bitwarden.ui.auth.feature.accountsetup.setupUnlockDestination +import com.x8bit.bitwarden.ui.platform.feature.search.SearchRoute import com.x8bit.bitwarden.ui.platform.feature.search.navigateToSearch import com.x8bit.bitwarden.ui.platform.feature.search.searchDestination import com.x8bit.bitwarden.ui.platform.feature.settings.accountsecurity.deleteaccount.deleteAccountDestination @@ -201,7 +202,7 @@ fun NavGraphBuilder.vaultUnlockedGraph( addEditSendDestination( onNavigateBack = { navController.popBackStack() }, - onNavigateUpToRoot = { navController.navigateToVaultUnlockedRoot() }, + onNavigateUpToSearchOrRoot = { navController.navigateUpToSearchOrVaultUnlockedRoot() }, ) viewSendDestination( onNavigateBack = { navController.popBackStack() }, @@ -249,6 +250,12 @@ fun NavGraphBuilder.vaultUnlockedGraph( } } -private fun NavController.navigateToVaultUnlockedRoot() { - this.popBackStack(route = VaultUnlockedNavbarRoute, inclusive = false) +private fun NavController.navigateUpToSearchOrVaultUnlockedRoot() { + if (!this.popBackStack(inclusive = false)) { + this.navigateUpToVaultUnlockedRoot() + } +} + +private fun NavController.navigateUpToVaultUnlockedRoot() { + this.popBackStack(inclusive = false) } diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendNavigation.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendNavigation.kt index 4d9b97374b..e8a6209066 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendNavigation.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendNavigation.kt @@ -56,12 +56,12 @@ fun SavedStateHandle.toAddEditSendArgs(): AddEditSendArgs { */ fun NavGraphBuilder.addEditSendDestination( onNavigateBack: () -> Unit, - onNavigateUpToRoot: () -> Unit, + onNavigateUpToSearchOrRoot: () -> Unit, ) { composableWithSlideTransitions { AddEditSendScreen( onNavigateBack = onNavigateBack, - onNavigateUpToRoot = onNavigateUpToRoot, + onNavigateUpToSearchOrRoot = onNavigateUpToSearchOrRoot, ) } } diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendScreen.kt index bc6532b8e0..981df79727 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendScreen.kt @@ -52,7 +52,7 @@ fun AddEditSendScreen( intentManager: IntentManager = LocalIntentManager.current, permissionsManager: PermissionsManager = LocalPermissionsManager.current, onNavigateBack: () -> Unit, - onNavigateUpToRoot: () -> Unit, + onNavigateUpToSearchOrRoot: () -> Unit, ) { val state by viewModel.stateFlow.collectAsStateWithLifecycle() val addSendHandlers = remember(viewModel) { AddEditSendHandlers.create(viewModel) } @@ -77,7 +77,7 @@ fun AddEditSendScreen( is AddEditSendEvent.NavigateBack -> onNavigateBack() - is AddEditSendEvent.NavigateToRoot -> onNavigateUpToRoot() + is AddEditSendEvent.NavigateUpToSearchOrRoot -> onNavigateUpToSearchOrRoot() is AddEditSendEvent.ShowChooserSheet -> { fileChooserLauncher.launch( diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendViewModel.kt index df5b333bc9..eebe23fb45 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendViewModel.kt @@ -600,7 +600,7 @@ class AddEditSendViewModel @Inject constructor( } else if (isDeleted) { // We need to make sure we don't land on the View Send screen // since it has now been deleted. - AddEditSendEvent.NavigateToRoot + AddEditSendEvent.NavigateUpToSearchOrRoot } else { AddEditSendEvent.NavigateBack }, @@ -833,9 +833,9 @@ sealed class AddEditSendEvent { data object NavigateBack : AddEditSendEvent() /** - * Navigate up to the root. + * Navigate up to the search screen or the root screen depending where you came from. */ - data object NavigateToRoot : AddEditSendEvent() + data object NavigateUpToSearchOrRoot : AddEditSendEvent() /** * Show file chooser sheet. diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendScreenTest.kt index d508b454b1..69434bab40 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendScreenTest.kt @@ -49,7 +49,7 @@ import java.time.ZonedDateTime class AddEditSendScreenTest : BitwardenComposeTest() { private var onNavigateBackCalled = false - private var onNavigateUpToRootCalled = false + private var onNavigateUpToSearchOrRootCalled = false private val exitManager: ExitManager = mockk(relaxed = true) { every { exitApplication() } just runs @@ -75,7 +75,7 @@ class AddEditSendScreenTest : BitwardenComposeTest() { AddEditSendScreen( viewModel = viewModel, onNavigateBack = { onNavigateBackCalled = true }, - onNavigateUpToRoot = { onNavigateUpToRootCalled = true }, + onNavigateUpToSearchOrRoot = { onNavigateUpToSearchOrRootCalled = true }, ) } } @@ -87,9 +87,9 @@ class AddEditSendScreenTest : BitwardenComposeTest() { } @Test - fun `on NavigateToRoot should call onNavigateUpToRoot`() { - mutableEventFlow.tryEmit(AddEditSendEvent.NavigateToRoot) - assertTrue(onNavigateUpToRootCalled) + fun `on NavigateUpToSearchOrRoot should call onNavigateUpToSearchOrRootCalled`() { + mutableEventFlow.tryEmit(AddEditSendEvent.NavigateUpToSearchOrRoot) + assertTrue(onNavigateUpToSearchOrRootCalled) } @Test diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendViewModelTest.kt index e6b6700f2f..02a02630e4 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/addedit/AddEditSendViewModelTest.kt @@ -661,7 +661,7 @@ class AddEditSendViewModelTest : BaseViewModelTest() { viewModel.eventFlow.test { viewModel.trySendAction(AddEditSendAction.DeleteClick) - assertEquals(AddEditSendEvent.NavigateToRoot, awaitItem()) + assertEquals(AddEditSendEvent.NavigateUpToSearchOrRoot, awaitItem()) assertEquals(AddEditSendEvent.ShowToast(R.string.send_deleted.asText()), awaitItem()) } }