From d5912a5dc39d355807915ae2c0a8fb1cbffd7b0c Mon Sep 17 00:00:00 2001 From: aj-rosado <109146700+aj-rosado@users.noreply.github.com> Date: Mon, 20 Oct 2025 17:02:43 +0100 Subject: [PATCH] [PM-26986] Hide select other account button if user has no other account (#6041) --- .../exportitems/reviewexport/ReviewExportScreen.kt | 14 +++++++++----- .../reviewexport/ReviewExportViewModel.kt | 2 ++ .../reviewexport/ReviewExportScreenTest.kt | 14 ++++++++++++++ .../reviewexport/ReviewExportViewModelTest.kt | 3 +++ 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportScreen.kt index b867586a20..824e9847f7 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportScreen.kt @@ -118,11 +118,15 @@ fun ReviewExportScreen( BitwardenString .your_vault_may_be_empty_or_import_some_item_types_isnt_supported, ), - primaryButton = BitwardenButtonData( - label = BitwardenString.select_a_different_account.asText(), - testTag = "SelectADifferentAccountButton", - onClick = handler.onSelectAnotherAccountClick, - ), + primaryButton = if (state.hasOtherAccounts) { + BitwardenButtonData( + label = BitwardenString.select_a_different_account.asText(), + testTag = "SelectADifferentAccountButton", + onClick = handler.onSelectAnotherAccountClick, + ) + } else { + null + }, secondaryButton = BitwardenButtonData( label = BitwardenString.cancel.asText(), testTag = "NoItemsCancelButton", diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportViewModel.kt index 2b2e4b33f6..913681ae1d 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportViewModel.kt @@ -59,6 +59,7 @@ class ReviewExportViewModel @Inject constructor( itemTypeCounts = ReviewExportState.ItemTypeCounts(), ), dialog = null, + hasOtherAccounts = authRepository.userStateFlow.value?.accounts.orEmpty().size > 1, ), ) { @@ -296,6 +297,7 @@ data class ReviewExportState( val dialog: DialogState? = null, // Internally used properties val importCredentialsRequestData: ImportCredentialsRequestData, + val hasOtherAccounts: Boolean, ) : Parcelable { /** diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportScreenTest.kt index 554d0a25f1..d7b77c0089 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportScreenTest.kt @@ -174,6 +174,19 @@ class ReviewExportScreenTest : BitwardenComposeTest() { mockViewModel.trySendAction(ReviewExportAction.SelectAnotherAccountClick) } } + + @Test + fun `SelectAnotherAccount should not be visible when user do not have other accounts`() { + mockStateFlow.tryEmit( + DEFAULT_STATE.copy( + viewState = ReviewExportState.ViewState.NoItems, + hasOtherAccounts = false, + ), + ) + composeTestRule + .onNodeWithText("Select a different account") + .assertDoesNotExist() + } } private val DEFAULT_STATE = ReviewExportState( @@ -190,5 +203,6 @@ private val DEFAULT_STATE = ReviewExportState( uri = Uri.EMPTY, requestJson = "", ), + hasOtherAccounts = true, dialog = null, ) diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportViewModelTest.kt index e050edceee..1065a5ee61 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/exportitems/reviewexport/ReviewExportViewModelTest.kt @@ -70,6 +70,7 @@ class ReviewExportViewModelTest : BaseViewModelTest() { viewState = ReviewExportState.ViewState.NoItems, dialog = null, importCredentialsRequestData = DEFAULT_REQUEST_DATA, + hasOtherAccounts = false, ) decryptCipherListResultFlow.value = DataState.Loaded( data = DecryptCipherListResult( @@ -93,6 +94,7 @@ class ReviewExportViewModelTest : BaseViewModelTest() { ), dialog = null, importCredentialsRequestData = DEFAULT_REQUEST_DATA, + hasOtherAccounts = false, ) val viewModel = createViewModel() viewModel.stateFlow.test { @@ -426,6 +428,7 @@ private val DEFAULT_CONTENT_VIEW_STATE = ReviewExportState.ViewState.Content( private val DEFAULT_STATE: ReviewExportState = ReviewExportState( importCredentialsRequestData = DEFAULT_REQUEST_DATA, viewState = DEFAULT_CONTENT_VIEW_STATE, + hasOtherAccounts = false, ) private const val DEFAULT_USER_ID: String = "activeUserId" private val DEFAULT_USER_STATE = UserState(