mirror of
https://github.com/bitwarden/android.git
synced 2026-08-26 22:04:07 -05:00
PM-21631: Check for Search Screen when navigating after deleting a Send (#5284)
This commit is contained in:
+10
-3
@@ -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<SearchRoute>(inclusive = false)) {
|
||||
this.navigateUpToVaultUnlockedRoot()
|
||||
}
|
||||
}
|
||||
|
||||
private fun NavController.navigateUpToVaultUnlockedRoot() {
|
||||
this.popBackStack<VaultUnlockedNavbarRoute>(inclusive = false)
|
||||
}
|
||||
|
||||
+2
-2
@@ -56,12 +56,12 @@ fun SavedStateHandle.toAddEditSendArgs(): AddEditSendArgs {
|
||||
*/
|
||||
fun NavGraphBuilder.addEditSendDestination(
|
||||
onNavigateBack: () -> Unit,
|
||||
onNavigateUpToRoot: () -> Unit,
|
||||
onNavigateUpToSearchOrRoot: () -> Unit,
|
||||
) {
|
||||
composableWithSlideTransitions<AddEditSendRoute> {
|
||||
AddEditSendScreen(
|
||||
onNavigateBack = onNavigateBack,
|
||||
onNavigateUpToRoot = onNavigateUpToRoot,
|
||||
onNavigateUpToSearchOrRoot = onNavigateUpToSearchOrRoot,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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(
|
||||
|
||||
+3
-3
@@ -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.
|
||||
|
||||
+5
-5
@@ -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
|
||||
|
||||
+1
-1
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user