From 687455279b63edf2c962ad0a4123921ea0a6553b Mon Sep 17 00:00:00 2001 From: Brian Yencho Date: Sat, 20 Jan 2024 09:30:54 -0600 Subject: [PATCH] Use default value when navigating to Add Send as root (#693) --- .../vaultunlocked/VaultUnlockedNavigation.kt | 10 ++++--- .../feature/send/addsend/AddSendNavigation.kt | 29 +++++++------------ 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt index 15157f512e..e1b52f4e29 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt @@ -14,8 +14,7 @@ import com.x8bit.bitwarden.ui.tools.feature.generator.generatorModalDestination import com.x8bit.bitwarden.ui.tools.feature.generator.navigateToGeneratorModal import com.x8bit.bitwarden.ui.tools.feature.generator.passwordhistory.navigateToPasswordHistory import com.x8bit.bitwarden.ui.tools.feature.generator.passwordhistory.passwordHistoryDestination -import com.x8bit.bitwarden.ui.tools.feature.send.addsend.ADD_SEND_AS_ROOT_ROUTE -import com.x8bit.bitwarden.ui.tools.feature.send.addsend.addSendAsRootDestination +import com.x8bit.bitwarden.ui.tools.feature.send.addsend.ADD_SEND_ROUTE import com.x8bit.bitwarden.ui.tools.feature.send.addsend.addSendDestination import com.x8bit.bitwarden.ui.tools.feature.send.addsend.model.AddSendType import com.x8bit.bitwarden.ui.tools.feature.send.addsend.navigateToAddSend @@ -125,9 +124,12 @@ fun NavGraphBuilder.vaultUnlockedGraphForNewSend( navController: NavController, ) { navigation( - startDestination = ADD_SEND_AS_ROOT_ROUTE, + startDestination = ADD_SEND_ROUTE, route = VAULT_UNLOCKED_FOR_NEW_SEND_GRAPH_ROUTE, ) { - addSendAsRootDestination(onNavigateBack = { navController.popBackStack() }) + addSendDestination( + defaultType = AddSendType.AddItem, + onNavigateBack = { navController.popBackStack() }, + ) } } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendNavigation.kt index 89261b9fcf..0be616ad8d 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendNavigation.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendNavigation.kt @@ -17,11 +17,9 @@ private const val EDIT_ITEM_ID: String = "edit_send_id" private const val ADD_SEND_ITEM_PREFIX: String = "add_send_item" private const val ADD_SEND_ITEM_TYPE: String = "add_send_item_type" -private const val ADD_SEND_ROUTE: String = +const val ADD_SEND_ROUTE: String = "$ADD_SEND_ITEM_PREFIX/{$ADD_SEND_ITEM_TYPE}?$EDIT_ITEM_ID={$EDIT_ITEM_ID}" -const val ADD_SEND_AS_ROOT_ROUTE: String = ADD_SEND_ITEM_PREFIX - /** * Class to retrieve send add & edit arguments from the [SavedStateHandle]. */ @@ -30,10 +28,9 @@ data class AddSendArgs( val sendAddType: AddSendType, ) { constructor(savedStateHandle: SavedStateHandle) : this( - sendAddType = when (savedStateHandle.get(ADD_SEND_ITEM_TYPE)) { + sendAddType = when (requireNotNull(savedStateHandle.get(ADD_SEND_ITEM_TYPE))) { ADD_TYPE -> AddSendType.AddItem EDIT_TYPE -> AddSendType.EditItem(requireNotNull(savedStateHandle[EDIT_ITEM_ID])) - null -> AddSendType.AddItem else -> throw IllegalStateException("Unknown VaultAddEditType.") }, ) @@ -41,33 +38,27 @@ data class AddSendArgs( /** * Add the new send screen to the nav graph. + * + * The [defaultType] will be relevant in cases where the Add Send screen needs to be added as a + * start destination of a graph. */ fun NavGraphBuilder.addSendDestination( onNavigateBack: () -> Unit, + defaultType: AddSendType = AddSendType.AddItem, ) { composableWithSlideTransitions( route = ADD_SEND_ROUTE, arguments = listOf( - navArgument(ADD_SEND_ITEM_TYPE) { type = NavType.StringType }, + navArgument(ADD_SEND_ITEM_TYPE) { + type = NavType.StringType + defaultValue = defaultType.toTypeString() + }, ), ) { AddSendScreen(onNavigateBack = onNavigateBack) } } -/** - * Add the new send screen to the nav graph as a root destination for a nested graph. - */ -fun NavGraphBuilder.addSendAsRootDestination( - onNavigateBack: () -> Unit, -) { - composableWithSlideTransitions( - route = ADD_SEND_AS_ROOT_ROUTE, - ) { - AddSendScreen(onNavigateBack = onNavigateBack) - } -} - /** * Navigate to the new send screen. */