From 855c54daa009737638947661d78ffa24a166a9b2 Mon Sep 17 00:00:00 2001 From: Andre Rosado Date: Mon, 20 Oct 2025 15:10:37 +0100 Subject: [PATCH] skipping account selection when only one exists on RootNav --- .../ui/platform/feature/rootnav/RootNavScreen.kt | 13 ++++++++++++- .../platform/feature/rootnav/RootNavViewModel.kt | 14 +++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavScreen.kt index 7bdc8de4a8..326f4741e4 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavScreen.kt @@ -68,6 +68,7 @@ import com.x8bit.bitwarden.ui.vault.feature.addedit.util.toVaultItemCipherType import com.x8bit.bitwarden.ui.vault.feature.exportitems.ExportItemsGraphRoute import com.x8bit.bitwarden.ui.vault.feature.exportitems.exportItemsGraph import com.x8bit.bitwarden.ui.vault.feature.exportitems.navigateToExportItemsGraph +import com.x8bit.bitwarden.ui.vault.feature.exportitems.verifypassword.navigateToVerifyPassword import com.x8bit.bitwarden.ui.vault.feature.itemlisting.navigateToVaultItemListingAsRoot import com.x8bit.bitwarden.ui.vault.model.VaultAddEditType import com.x8bit.bitwarden.ui.vault.model.VaultItemListingType @@ -142,7 +143,10 @@ fun RootNavScreen( is RootNavState.VaultUnlockedForProviderGetCredentials, -> VaultUnlockedGraphRoute - is RootNavState.CredentialExchangeExport -> ExportItemsGraphRoute + is RootNavState.CredentialExchangeExport, + is RootNavState.CredentialExchangeExportSkipAccountSelection, + -> ExportItemsGraphRoute + RootNavState.OnboardingAccountLockSetup -> SetupUnlockRoute.AsRoot RootNavState.OnboardingAutoFillSetup -> SetupAutofillRoute.AsRoot RootNavState.OnboardingBrowserAutofillSetup -> SetupBrowserAutofillRoute.AsRoot @@ -288,6 +292,13 @@ fun RootNavScreen( is RootNavState.CredentialExchangeExport -> { navController.navigateToExportItemsGraph(rootNavOptions) } + + is RootNavState.CredentialExchangeExportSkipAccountSelection -> { + navController.navigateToVerifyPassword( + userId = currentState.userId, + navOptions = rootNavOptions, + ) + } } } } diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModel.kt index 6c81f0e6a7..2997ae5c4e 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModel.kt @@ -89,7 +89,11 @@ class RootNavViewModel @Inject constructor( } specialCircumstance is SpecialCircumstance.CredentialExchangeExport -> { - RootNavState.CredentialExchangeExport + if (userState.accounts.size == 1) { + RootNavState.CredentialExchangeExportSkipAccountSelection(userId = userState.accounts.first().userId) + } else { + RootNavState.CredentialExchangeExport + } } userState.activeAccount.isVaultUnlocked && @@ -424,6 +428,14 @@ sealed class RootNavState : Parcelable { */ @Parcelize data object CredentialExchangeExport : RootNavState() + + /** + * App should begin the export items flow, skipping the account selection screen. + */ + @Parcelize + data class CredentialExchangeExportSkipAccountSelection( + val userId: String, + ) : RootNavState() } /**