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 6ceb8200b..e3b60ac4f 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 1727352b7..1c7b4a59b 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 7021bd5e6..236e12748 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 20b38feac..f4c6c4478 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 3c2e0b6e3..480372568 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 749e8e051..a68834588 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 1956f980a..b29a3eb12 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(selectedOwnerId = "mockOwnerId-2") + + composeTestRule + .onNodeWithTextAfterScroll(text = "mockCollectionName-2") + .assertIsDisplayed() + + updateStateWithOwners( + selectedOwnerId = null, + availableOwners = listOf( + VaultAddEditState.Owner( + id = null, + name = "placeholder@email.com", + collections = DEFAULT_COLLECTIONS, + ), + ), + hasOrganizations = false, + ) + + composeTestRule + .onNodeWithText(text = "mockCollectionName-2") + .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 4bd49bbd4..1109fcac7 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 02c551f71..0d6328799 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,