From 86756a4698f77548e2e5dc87390ab0032e0db652 Mon Sep 17 00:00:00 2001 From: David Perez Date: Thu, 22 Feb 2024 18:12:05 -0600 Subject: [PATCH] BIT-1938: Display toast after updating cipher collection or moving cipher to an organization (#1058) --- .../VaultMoveToOrganizationViewModel.kt | 32 ++++++++++++------- .../VaultMoveToOrganizationViewModelTest.kt | 13 ++++++++ 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModel.kt index f57f17ebd3..b38946cddd 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModel.kt @@ -10,7 +10,6 @@ import com.x8bit.bitwarden.data.auth.repository.AuthRepository import com.x8bit.bitwarden.data.auth.repository.model.UserState import com.x8bit.bitwarden.data.platform.repository.model.DataState import com.x8bit.bitwarden.data.platform.repository.util.combineDataStates -import com.x8bit.bitwarden.data.platform.repository.util.map import com.x8bit.bitwarden.data.vault.repository.VaultRepository import com.x8bit.bitwarden.data.vault.repository.model.ShareCipherResult import com.x8bit.bitwarden.ui.platform.base.BaseViewModel @@ -165,6 +164,7 @@ class VaultMoveToOrganizationViewModel @Inject constructor( is ShareCipherResult.Success -> { sendEvent(VaultMoveToOrganizationEvent.NavigateBack) + sendEvent(VaultMoveToOrganizationEvent.ShowToast(action.successToast)) } } } @@ -285,23 +285,30 @@ class VaultMoveToOrganizationViewModel @Inject constructor( } viewModelScope.launch { trySendAction( - VaultMoveToOrganizationAction.Internal.ShareCipherResultReceive( - if (state.onlyShowCollections) { - vaultRepository.updateCipherCollections( - cipherId = mutableStateFlow.value.vaultItemId, + if (state.onlyShowCollections) { + VaultMoveToOrganizationAction.Internal.ShareCipherResultReceive( + shareCipherResult = vaultRepository.updateCipherCollections( + cipherId = state.vaultItemId, cipherView = cipherView, collectionIds = collectionIds, - ) - } else { - vaultRepository.shareCipher( - cipherId = mutableStateFlow.value.vaultItemId, + ), + successToast = R.string.item_updated.asText(), + ) + } else { + VaultMoveToOrganizationAction.Internal.ShareCipherResultReceive( + shareCipherResult = vaultRepository.shareCipher( + cipherId = state.vaultItemId, cipherView = cipherView.copy( organizationId = contentState.selectedOrganizationId, ), collectionIds = collectionIds, - ) - }, - ), + ), + successToast = R.string.moved_item_to_org.asText( + requireNotNull(contentState.cipherToMove).name, + contentState.selectedOrganization.name, + ), + ) + }, ) } } @@ -491,6 +498,7 @@ sealed class VaultMoveToOrganizationAction { */ data class ShareCipherResultReceive( val shareCipherResult: ShareCipherResult, + val successToast: Text, ) : Internal() } } diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModelTest.kt index 56315fd688..f4081f351f 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModelTest.kt @@ -368,6 +368,15 @@ class VaultMoveToOrganizationViewModelTest : BaseViewModelTest() { VaultMoveToOrganizationEvent.NavigateBack, awaitItem(), ) + assertEquals( + VaultMoveToOrganizationEvent.ShowToast( + text = R.string.moved_item_to_org.asText( + "mockName-1", + "mockOrganizationName-1", + ), + ), + awaitItem(), + ) } coVerify { vaultRepository.shareCipher( @@ -403,6 +412,10 @@ class VaultMoveToOrganizationViewModelTest : BaseViewModelTest() { VaultMoveToOrganizationEvent.NavigateBack, awaitItem(), ) + assertEquals( + VaultMoveToOrganizationEvent.ShowToast(R.string.item_updated.asText()), + awaitItem(), + ) } coVerify { vaultRepository.updateCipherCollections(