From 0bb5a483e8cbfcec0af14c4aade04f3e87a450bc Mon Sep 17 00:00:00 2001 From: David Perez Date: Wed, 30 Oct 2024 10:39:08 -0500 Subject: [PATCH] PM-13842: Hide ownership when the user has no organizations --- .../feature/addedit/VaultAddEditCardItems.kt | 2 +- .../addedit/VaultAddEditIdentityItems.kt | 2 +- .../feature/addedit/VaultAddEditLoginItems.kt | 2 +- .../addedit/VaultAddEditSecureNotesItems.kt | 2 +- .../feature/addedit/VaultAddEditViewModel.kt | 2 ++ .../addedit/util/CipherViewExtensions.kt | 2 ++ .../feature/addedit/VaultAddEditScreenTest.kt | 27 +++++++++++++++++++ .../addedit/VaultAddEditViewModelTest.kt | 2 ++ .../addedit/util/CipherViewExtensionsTest.kt | 1 + 9 files changed, 38 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditCardItems.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditCardItems.kt index 6ceb8200b24..e3b60ac4fd8 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditCardItems.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditCardItems.kt @@ -300,7 +300,7 @@ fun LazyListScope.vaultAddEditCardItems( ) } - if (isAddItemMode) { + if (isAddItemMode && commonState.hasOrganizations) { item { Spacer(modifier = Modifier.height(24.dp)) BitwardenListHeaderText( diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditIdentityItems.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditIdentityItems.kt index 1727352b7b8..1c7b4a59bc0 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditIdentityItems.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditIdentityItems.kt @@ -414,7 +414,7 @@ fun LazyListScope.vaultAddEditIdentityItems( ) } - if (isAddItemMode) { + if (isAddItemMode && commonState.hasOrganizations) { item { Spacer(modifier = Modifier.height(24.dp)) BitwardenListHeaderText( diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditLoginItems.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditLoginItems.kt index 7021bd5e6b6..236e12748f8 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditLoginItems.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditLoginItems.kt @@ -317,7 +317,7 @@ fun LazyListScope.vaultAddEditLoginItems( ) } - if (isAddItemMode) { + if (isAddItemMode && commonState.hasOrganizations) { item { Spacer(modifier = Modifier.height(24.dp)) BitwardenListHeaderText( diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditSecureNotesItems.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditSecureNotesItems.kt index 20b38feace5..f4c6c4478de 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditSecureNotesItems.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditSecureNotesItems.kt @@ -176,7 +176,7 @@ fun LazyListScope.vaultAddEditSecureNotesItems( ) } - if (isAddItemMode) { + if (isAddItemMode && commonState.hasOrganizations) { item { Spacer(modifier = Modifier.height(24.dp)) BitwardenListHeaderText( diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt index 3c2e0b6e3c9..480372568d4 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt @@ -2114,6 +2114,7 @@ data class VaultAddEditState( * @property availableFolders The list of folders that this item could be added too. * @property selectedOwnerId The ID of the owner associated with the item. * @property availableOwners A list of available owners. + * @property hasOrganizations Indicates if the user is part of any organizations. */ @Parcelize data class Common( @@ -2129,6 +2130,7 @@ data class VaultAddEditState( val availableFolders: List = emptyList(), val selectedOwnerId: String? = null, val availableOwners: List = emptyList(), + val hasOrganizations: Boolean = false, ) : Parcelable { /** diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt index 749e8e051c0..a6883458829 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt @@ -106,6 +106,7 @@ fun CipherView.toViewState( masterPasswordReprompt = this.reprompt == CipherRepromptType.PASSWORD, notes = this.notes.orEmpty(), availableOwners = emptyList(), + hasOrganizations = false, customFieldData = this.fields.orEmpty().map { it.toCustomField() }, ), isIndividualVaultDisabled = isIndividualVaultDisabled, @@ -139,6 +140,7 @@ fun VaultAddEditState.ViewState.appendFolderAndOwnerData( isIndividualVaultDisabled = isIndividualVaultDisabled, ), isUnlockWithPasswordEnabled = activeAccount.hasMasterPassword, + hasOrganizations = activeAccount.organizations.isNotEmpty(), ), ) } ?: this diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt index 1956f980a03..a65e43e65ae 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt @@ -2361,6 +2361,31 @@ class VaultAddEditScreenTest : BaseComposeTest() { } } + @Test + fun `ownership section should not be displayed when no organizations present`() { + updateStateWithOwners() + + composeTestRule + .onNodeWithTextAfterScroll("placeholder@email.com") + .assertExists() + + updateStateWithOwners( + selectedOwnerId = "mockOwnerId-1", + availableOwners = listOf( + VaultAddEditState.Owner( + id = "mockOwnerId-1", + name = "placeholder@email.com", + collections = emptyList(), + ), + ), + hasOrganizations = false, + ) + + composeTestRule + .onNodeWithText("placeholder@email.com") + .assertDoesNotExist() + } + @Test fun `Collection list should display according to state`() { updateStateWithOwners(selectedOwnerId = "mockOwnerId-2") @@ -3482,12 +3507,14 @@ class VaultAddEditScreenTest : BaseComposeTest() { private fun updateStateWithOwners( selectedOwnerId: String? = null, availableOwners: List = DEFAULT_OWNERS, + hasOrganizations: Boolean = true, ) { mutableStateFlow.update { currentState -> updateCommonContent(currentState) { copy( selectedOwnerId = selectedOwnerId, availableOwners = availableOwners, + hasOrganizations = hasOrganizations, ) } } diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt index 4bd49bbd465..1109fcac7c5 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt @@ -4026,6 +4026,7 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { ), availableOwners: List = createOwnerList(), selectedOwnerId: String? = null, + hasOrganizations: Boolean = true, ): VaultAddEditState.ViewState.Content.Common = VaultAddEditState.ViewState.Content.Common( name = name, @@ -4038,6 +4039,7 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { originalCipher = originalCipher, availableFolders = availableFolders, availableOwners = availableOwners, + hasOrganizations = hasOrganizations, ) @Suppress("LongParameterList") diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt index 02c551f7188..0d6328799ab 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt @@ -505,6 +505,7 @@ class CipherViewExtensionsTest { name = "mockName-1", ), ), + hasOrganizations = true, availableOwners = listOf( VaultAddEditState.Owner( id = null,