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(