Use default value when navigating to Add Send as root (#693)

This commit is contained in:
Brian Yencho 2024-01-20 09:30:54 -06:00 committed by Álison Fernandes
parent a877897a19
commit 687455279b
2 changed files with 16 additions and 23 deletions

View file

@ -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() },
)
}
}

View file

@ -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<String>(ADD_SEND_ITEM_TYPE)) {
sendAddType = when (requireNotNull(savedStateHandle.get<String>(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.
*/