From 6db4af6a1769a9a3bb1601c3660837205e5c1147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Bispo?= Date: Wed, 22 Jul 2026 18:33:20 +0100 Subject: [PATCH] Revert "fix: Revert VFO-1 naming changes (#7183, #7189, #7192) (#7195)" This reverts commit 04edb4cfd320fc8419a75060b021988b02736605. --- .../components/CollectionItemSelector.kt | 4 +- .../addedit/VaultAddEditItemContent.kt | 4 +- .../feature/addedit/VaultAddEditScreen.kt | 35 +++++------- .../feature/addedit/VaultAddEditViewModel.kt | 10 ++-- .../addedit/util/CipherViewExtensions.kt | 13 +++-- .../ui/vault/feature/item/VaultItemScreen.kt | 2 +- .../feature/item/model/VaultItemLocation.kt | 2 +- .../itemlisting/VaultItemListingContent.kt | 4 +- .../util/VaultItemListingDataExtensions.kt | 2 +- .../VaultMoveToOrganizationViewModel.kt | 4 +- .../ui/vault/feature/vault/VaultContent.kt | 4 +- .../ui/vault/model/VaultTrailingIcon.kt | 4 +- .../feature/search/util/SearchUtil.kt | 32 +++++------ .../feature/addedit/VaultAddEditScreenTest.kt | 56 ++++++++++--------- .../addedit/VaultAddEditViewModelTest.kt | 11 ++-- .../addedit/util/CipherViewExtensionsTest.kt | 32 ++++++----- .../vault/feature/item/VaultItemScreenTest.kt | 14 ++--- .../itemlisting/VaultItemListingScreenTest.kt | 8 +-- .../util/VaultItemListingDataUtil.kt | 36 ++++++------ .../VaultMoveToOrganizationScreenTest.kt | 4 +- .../ui/vault/feature/vault/VaultScreenTest.kt | 2 +- .../util/VaultAddItemStateExtensionsTest.kt | 16 +++--- .../vault/util/VaultDataExtensionsTest.kt | 16 +++--- ui/src/main/res/drawable/ic_collections.xml | 28 ---------- ui/src/main/res/drawable/ic_shared_folder.xml | 21 +++++++ ui/src/main/res/values/strings.xml | 9 +-- 26 files changed, 188 insertions(+), 185 deletions(-) delete mode 100644 ui/src/main/res/drawable/ic_collections.xml create mode 100644 ui/src/main/res/drawable/ic_shared_folder.xml diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/components/CollectionItemSelector.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/components/CollectionItemSelector.kt index b679ffd811a..c71b689b469 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/components/CollectionItemSelector.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/components/CollectionItemSelector.kt @@ -33,7 +33,7 @@ fun LazyListScope.collectionItemsSelector( if (isCollectionsTitleVisible) { item { BitwardenListHeaderText( - label = stringResource(id = BitwardenString.collections), + label = stringResource(id = BitwardenString.shared_folders), modifier = Modifier .fillMaxWidth() .standardHorizontalMargin() @@ -76,7 +76,7 @@ fun LazyListScope.collectionItemsSelector( .standardHorizontalMargin(), ) { Text( - text = stringResource(id = BitwardenString.no_collections_to_list), + text = stringResource(id = BitwardenString.there_are_no_shared_folders_to_list), style = BitwardenTheme.typography.bodyMedium, color = BitwardenTheme.colorScheme.text.primary, ) diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditItemContent.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditItemContent.kt index 59ed3aae25f..7f1eb83fec9 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditItemContent.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditItemContent.kt @@ -203,8 +203,8 @@ fun CoachMarkScope.VaultAddEditContent( val collections = state.common.selectedOwner?.collections.orEmpty() item { BitwardenTextSelectionButton( - label = stringResource(id = BitwardenString.owner), - selectedOption = state.common.selectedOwner?.name, + label = stringResource(id = BitwardenString.vault), + selectedOption = state.common.selectedOwner?.name?.invoke(), onClick = commonTypeHandlers.onPresentOwnerOptions, cardStyle = if (collections.isNotEmpty()) { CardStyle.Middle() diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt index c55c1933672..9e358ec9633 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt @@ -382,7 +382,7 @@ fun VaultAddEditScreen( ) .takeUnless { !state.shouldShowMoveToOrganization }, OverflowMenuItemData( - text = stringResource(id = BitwardenString.collections), + text = stringResource(id = BitwardenString.shared_folders), onClick = { viewModel.trySendAction( VaultAddEditAction.Common.CollectionsClick, @@ -805,38 +805,31 @@ private fun OwnerSelectionBottomSheet( modifier: Modifier = Modifier, ) { - var selectedOptionState by rememberSaveable { - mutableStateOf(state.selectedOwner?.name.orEmpty()) + var selectedOwner by rememberSaveable { + mutableStateOf(state.selectedOwner) } BitwardenModalBottomSheet( - sheetTitle = stringResource(BitwardenString.owner), + sheetTitle = stringResource(BitwardenString.select_vault), onDismiss = handlers.onDismissBottomSheet, topBarActions = { animatedOnDismiss -> BitwardenTextButton( label = stringResource(BitwardenString.save), onClick = { handlers.onDismissBottomSheet() - state - .availableOwners - .firstOrNull { - it.name == selectedOptionState - } - ?.run { - handlers.onOwnerSelected(this.id) - } + selectedOwner?.let { handlers.onOwnerSelected(it.id) } animatedOnDismiss() }, - isEnabled = selectedOptionState.isNotBlank(), + isEnabled = selectedOwner != null, ) }, sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), modifier = modifier.statusBarsPadding(), ) { OwnerSelectionBottomSheetContent( - options = state.availableOwners.map { it.name }.toImmutableList(), - selectedOption = selectedOptionState, + options = state.availableOwners, + selectedOwner = selectedOwner, onOptionSelected = { - selectedOptionState = it + selectedOwner = it }, ) } @@ -844,9 +837,9 @@ private fun OwnerSelectionBottomSheet( @Composable private fun OwnerSelectionBottomSheetContent( - options: ImmutableList, - selectedOption: String, - onOptionSelected: (String) -> Unit, + options: ImmutableList, + selectedOwner: VaultAddEditState.Owner?, + onOptionSelected: (VaultAddEditState.Owner) -> Unit, modifier: Modifier = Modifier, ) { LazyColumn( @@ -870,7 +863,7 @@ private fun OwnerSelectionBottomSheetContent( verticalAlignment = Alignment.CenterVertically, ) { Text( - text = option, + text = option.name(), color = BitwardenTheme.colorScheme.text.primary, style = BitwardenTheme.typography.bodyLarge, modifier = Modifier @@ -878,7 +871,7 @@ private fun OwnerSelectionBottomSheetContent( .padding(horizontal = 16.dp), ) BitwardenRadioButton( - isSelected = selectedOption == option, + isSelected = selectedOwner == option, onClick = { onOptionSelected(option) }, diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt index 0269751d83b..a391c728c4a 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt @@ -97,6 +97,7 @@ import com.x8bit.bitwarden.ui.vault.util.detectCardBrand import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map @@ -514,7 +515,7 @@ class VaultAddEditViewModel @Inject constructor( content.common.selectedOwner?.collections?.all { !it.isSelected } == true ) { showGenericErrorDialog( - message = BitwardenString.select_one_collection.asText(), + message = BitwardenString.you_must_select_at_least_one_shared_folder.asText(), ) true } else if ( @@ -2666,7 +2667,7 @@ class VaultAddEditViewModel @Inject constructor( private fun List.toUpdatedOwners( selectedOwnerId: String?, selectedCollectionId: String, - ): List = + ): ImmutableList = map { owner -> if (owner.id != selectedOwnerId) return@map owner owner.copy( @@ -2675,6 +2676,7 @@ class VaultAddEditViewModel @Inject constructor( .toUpdatedCollections(selectedCollectionId = selectedCollectionId), ) } + .toImmutableList() private fun List.toUpdatedCollections( selectedCollectionId: String, @@ -2926,7 +2928,7 @@ data class VaultAddEditState( val selectedFolderId: String? = null, val availableFolders: List = emptyList(), val selectedOwnerId: String? = null, - val availableOwners: List = emptyList(), + val availableOwners: ImmutableList = persistentListOf(), val hasOrganizations: Boolean = false, val canDelete: Boolean = true, val canAssignToCollections: Boolean = true, @@ -3312,7 +3314,7 @@ data class VaultAddEditState( @Parcelize data class Owner( val id: String?, - val name: String, + val name: Text, val collections: List, ) : Parcelable diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt index f7eb102ca02..73956abba37 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt @@ -5,6 +5,7 @@ package com.x8bit.bitwarden.ui.vault.feature.addedit.util import com.bitwarden.collections.CollectionType import com.bitwarden.collections.CollectionView import com.bitwarden.core.data.util.toFormattedDateTimeStyle +import com.bitwarden.core.util.persistentListOfNotNull import com.bitwarden.ui.platform.model.TotpData import com.bitwarden.ui.platform.resource.BitwardenString import com.bitwarden.ui.util.asText @@ -31,6 +32,8 @@ import com.x8bit.bitwarden.ui.vault.model.findVaultCardBrandWithNameOrNull import java.time.Clock import java.time.format.FormatStyle import java.util.UUID +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf /** * Transforms [CipherView] into [VaultAddEditState.ViewState]. @@ -154,7 +157,7 @@ fun CipherView.toViewState( favorite = this.favorite, masterPasswordReprompt = this.reprompt == CipherRepromptType.PASSWORD, notes = this.notes.orEmpty(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), hasOrganizations = false, customFieldData = this.fields.orEmpty().map { it.toCustomField() }, canDelete = canDelete, @@ -294,11 +297,11 @@ private fun UserState.Account.toAvailableOwners( cipherView: CipherView?, isIndividualVaultDisabled: Boolean, selectedCollectionId: String? = null, -): List = - listOfNotNull( +): ImmutableList = + persistentListOfNotNull( VaultAddEditState .Owner( - name = email, + name = BitwardenString.my_vault.asText(), id = null, collections = emptyList(), ) @@ -306,7 +309,7 @@ private fun UserState.Account.toAvailableOwners( *organizations .map { VaultAddEditState.Owner( - name = it.name, + name = it.name.asText(), id = it.id, collections = collectionViewList .filter { collection -> diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreen.kt index d0d8708d0ac..0aaaa4d169f 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreen.kt @@ -214,7 +214,7 @@ fun VaultItemScreen( !state.hasOrganizations }, OverflowMenuItemData( - text = stringResource(id = BitwardenString.collections), + text = stringResource(id = BitwardenString.shared_folders), onClick = { viewModel.trySendAction(VaultItemAction.Common.CollectionsClick) }, diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/model/VaultItemLocation.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/model/VaultItemLocation.kt index 7845fc03a01..030dcc3944d 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/model/VaultItemLocation.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/model/VaultItemLocation.kt @@ -43,7 +43,7 @@ sealed class VaultItemLocation : Parcelable { override val name: String, ) : VaultItemLocation() { override val icon: Int - get() = BitwardenDrawable.ic_collections + get() = BitwardenDrawable.ic_shared_folder } /** diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingContent.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingContent.kt index 9f7ce332872..22cdb83ad2c 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingContent.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingContent.kt @@ -134,7 +134,7 @@ fun VaultItemListingContent( item(key = "collections_header") { Spacer(modifier = Modifier.height(height = 12.dp)) BitwardenListHeaderText( - label = stringResource(id = BitwardenString.collections), + label = stringResource(id = BitwardenString.shared_folders), supportingLabel = state.displayCollectionList.count().toString(), modifier = Modifier .animateItem() @@ -150,7 +150,7 @@ fun VaultItemListingContent( key = { _, collection -> "collection_${collection.id}" }, ) { index, collection -> BitwardenGroupItem( - startIcon = IconData.Local(iconRes = BitwardenDrawable.ic_collections), + startIcon = IconData.Local(iconRes = BitwardenDrawable.ic_shared_folder), label = collection.name, supportingLabel = collection.count.toString(), onClick = { vaultItemListingHandlers.collectionClick(collection.id) }, diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataExtensions.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataExtensions.kt index 76b81e88a80..29aa81908a3 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataExtensions.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataExtensions.kt @@ -225,7 +225,7 @@ fun VaultData.toViewState( } is VaultItemListingState.ItemListingType.Vault.Collection -> { - BitwardenString.no_items_collection + BitwardenString.there_are_no_items_in_this_shared_folder } VaultItemListingState.ItemListingType.Vault.Trash -> { diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModel.kt index 69d3cd6b55d..fab657fafc2 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationViewModel.kt @@ -127,7 +127,7 @@ class VaultMoveToOrganizationViewModel @Inject constructor( mutableStateFlow.update { it.copy( dialogState = VaultMoveToOrganizationState.DialogState.Error( - message = BitwardenString.select_one_collection.asText(), + message = BitwardenString.you_must_select_at_least_one_shared_folder.asText(), ), ) } @@ -349,7 +349,7 @@ data class VaultMoveToOrganizationState( val appBarText: Text get() = if (onlyShowCollections) { - BitwardenString.collections.asText() + BitwardenString.shared_folders.asText() } else { BitwardenString.move_to_vault.asText() } diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultContent.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultContent.kt index c8bea119b2e..3e65ffe88a3 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultContent.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultContent.kt @@ -471,7 +471,7 @@ fun VaultContent( if (state.collectionItems.isNotEmpty()) { item(key = "collection_header") { BitwardenListHeaderText( - label = stringResource(id = BitwardenString.collections), + label = stringResource(id = BitwardenString.shared_folders), supportingLabel = state.collectionItems.count().toString(), modifier = Modifier .animateItem() @@ -487,7 +487,7 @@ fun VaultContent( key = { _, collection -> "collection_${collection.id}" }, ) { index, collection -> BitwardenGroupItem( - startIcon = IconData.Local(iconRes = BitwardenDrawable.ic_collections), + startIcon = IconData.Local(iconRes = BitwardenDrawable.ic_shared_folder), label = collection.name, supportingLabel = collection.itemCount.toString(), onClick = { vaultHandlers.collectionClick(collection) }, diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/model/VaultTrailingIcon.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/model/VaultTrailingIcon.kt index 4bf31a1bc28..c79faa0668e 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/model/VaultTrailingIcon.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/model/VaultTrailingIcon.kt @@ -15,8 +15,8 @@ enum class VaultTrailingIcon( val testTag: String, ) { COLLECTION( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), ATTACHMENT( diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchUtil.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchUtil.kt index fd9de6a8097..5df37dabbd6 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchUtil.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchUtil.kt @@ -33,8 +33,8 @@ fun createMockDisplayItemForCipher( ), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -88,8 +88,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_note), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -132,8 +132,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_payment_card), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -181,8 +181,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_id_card), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -221,8 +221,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_ssh_key), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), ), @@ -256,8 +256,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_payment_card), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), ), @@ -291,8 +291,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_note), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), ), @@ -326,8 +326,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_note), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), ), diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt index a497a753932..6c631430988 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt @@ -46,6 +46,7 @@ import com.bitwarden.core.data.util.advanceTimeByAndRunCurrent import com.bitwarden.ui.platform.components.snackbar.model.BitwardenSnackbarData import com.bitwarden.ui.platform.manager.IntentManager import com.bitwarden.ui.platform.manager.exit.ExitManager +import com.bitwarden.ui.platform.resource.BitwardenString import com.bitwarden.ui.util.asText import com.bitwarden.ui.util.assertNoDialogExists import com.bitwarden.ui.util.assertScrollableNodeDoesNotExist @@ -80,6 +81,9 @@ import io.mockk.just import io.mockk.mockk import io.mockk.runs import io.mockk.verify +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.test.runTest @@ -3354,7 +3358,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { // Opens the menu composeTestRule .onNodeWithContentDescriptionAfterScroll( - label = "placeholder@email.com. Owner", + label = "My vault. Vault", ) .performClick() @@ -3372,7 +3376,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { } composeTestRule - .onNodeWithText("Owner") + .onNodeWithText("Select vault") .assertIsDisplayed() } @@ -3383,7 +3387,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { } composeTestRule - .onNodeWithText("Owner") + .onNodeWithText("Select vault") .assertIsDisplayed() composeTestRule @@ -3409,10 +3413,11 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { availableOwners = listOf( VaultAddEditState.Owner( id = ownerId, - name = ownerName, + name = ownerName.asText(), collections = DEFAULT_COLLECTIONS, ), - ), + ) + .toImmutableList(), ) } .copy(bottomSheetState = VaultAddEditState.BottomSheetState.OwnerSelection) @@ -3438,7 +3443,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { updateStateWithOwners() composeTestRule .onNodeWithContentDescriptionAfterScroll( - label = "placeholder@email.com. Owner", + label = "My vault. Vault", ) .assertIsDisplayed() @@ -3447,7 +3452,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { } composeTestRule - .onNodeWithContentDescriptionAfterScroll(label = "mockOwnerName-2. Owner") + .onNodeWithContentDescriptionAfterScroll(label = "mockOwnerName-2. Vault") .assertIsDisplayed() } @@ -3486,10 +3491,11 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { availableOwners = listOf( VaultAddEditState.Owner( id = null, - name = "placeholder@email.com", + name = BitwardenString.my_vault.asText(), collections = DEFAULT_COLLECTIONS, ), - ), + ) + .toImmutableList(), hasOrganizations = false, ) @@ -3876,7 +3882,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { composeTestRule .onNodeWithContentDescriptionAfterScroll( - label = "placeholder@email.com. Owner", + label = "My vault. Vault", ) .assertIsDisplayed() @@ -3886,7 +3892,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { composeTestRule .onNodeWithContentDescriptionAfterScroll( - label = "mockOwnerName-2. Owner", + label = "mockOwnerName-2. Vault", ) .assertIsDisplayed() } @@ -4411,7 +4417,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { .assertIsDisplayed() composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filterToOne(hasAnyAncestor(isPopup())) .assertIsDisplayed() @@ -4442,7 +4448,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { } // Confirm overflow is closed on initial load composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filter(hasAnyAncestor(isPopup())) .assertCountEquals(0) @@ -4453,7 +4459,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { // Confirm Collections option is present composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filterToOne(hasAnyAncestor(isPopup())) .assertIsDisplayed() @@ -4472,7 +4478,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { ) } composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filter(hasAnyAncestor(isPopup())) .assertCountEquals(0) } @@ -4509,7 +4515,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { .assertIsDisplayed() composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filterToOne(hasAnyAncestor(isPopup())) .assertDoesNotExist() @@ -5130,7 +5136,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { private fun updateStateWithOwners( selectedOwnerId: String? = null, - availableOwners: List = DEFAULT_OWNERS, + availableOwners: ImmutableList = DEFAULT_OWNERS, hasOrganizations: Boolean = true, ) { mutableStateFlow.update { currentState -> @@ -5561,20 +5567,20 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { ), ) - private val ALTERED_OWNERS = listOf( + private val ALTERED_OWNERS = persistentListOf( VaultAddEditState.Owner( id = null, - name = "placeholder@email.com", + name = BitwardenString.my_vault.asText(), collections = emptyList(), ), VaultAddEditState.Owner( id = "mockOwnerId-1", - name = "mockOwnerName-1", + name = "mockOwnerName-1".asText(), collections = emptyList(), ), VaultAddEditState.Owner( id = "mockOwnerId-2", - name = "mockOwnerName-2", + name = "mockOwnerName-2".asText(), collections = ALTERED_COLLECTIONS, ), ) @@ -5588,20 +5594,20 @@ class VaultAddEditScreenTest : BitwardenComposeTest() { ), ) - private val DEFAULT_OWNERS = listOf( + private val DEFAULT_OWNERS = persistentListOf( VaultAddEditState.Owner( id = null, - name = "placeholder@email.com", + name = BitwardenString.my_vault.asText(), collections = emptyList(), ), VaultAddEditState.Owner( id = "mockOwnerId-1", - name = "mockOwnerName-1", + name = "mockOwnerName-1".asText(), collections = emptyList(), ), VaultAddEditState.Owner( id = "mockOwnerId-2", - name = "mockOwnerName-2", + name = "mockOwnerName-2".asText(), collections = DEFAULT_COLLECTIONS, ), ) diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt index aadc0e406eb..265ade8c403 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt @@ -114,6 +114,7 @@ import io.mockk.runs import io.mockk.unmockkObject import io.mockk.unmockkStatic import io.mockk.verify +import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update @@ -360,7 +361,7 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { availableOwners = listOf( VaultAddEditState.Owner( id = "organizationId", - name = "organizationName", + name = "organizationName".asText(), collections = emptyList(), ), ), @@ -5281,7 +5282,7 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { availableOwners = listOf( VaultAddEditState.Owner( id = "organizationId", - name = "organizationName", + name = "organizationName".asText(), collections = emptyList(), ), ), @@ -6387,7 +6388,7 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { selectedOwnerId = selectedOwnerId, originalCipher = originalCipher, availableFolders = availableFolders, - availableOwners = availableOwners, + availableOwners = availableOwners.toImmutableList(), hasOrganizations = hasOrganizations, canDelete = canDelete, canAssignToCollections = canAssociateToCollections, @@ -6519,12 +6520,12 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { listOf( VaultAddEditState.Owner( id = null, - name = "activeEmail", + name = BitwardenString.my_vault.asText(), collections = emptyList(), ), VaultAddEditState.Owner( id = "organizationId", - name = "organizationName", + name = "organizationName".asText(), collections = if (hasCollection) { listOf( VaultCollection( diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt index 2406730e618..416bc973bd3 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt @@ -39,6 +39,8 @@ import io.mockk.every import io.mockk.mockk import io.mockk.mockkStatic import io.mockk.unmockkStatic +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.BeforeEach @@ -102,7 +104,7 @@ class CipherViewExtensionsTest { ), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), ), isIndividualVaultDisabled = false, type = VaultAddEditState.ViewState.Content.ItemType.Card( @@ -151,7 +153,7 @@ class CipherViewExtensionsTest { ), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), ), isIndividualVaultDisabled = true, type = VaultAddEditState.ViewState.Content.ItemType.Identity( @@ -196,7 +198,7 @@ class CipherViewExtensionsTest { masterPasswordReprompt = true, notes = "Lots of notes", availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), customFieldData = listOf( VaultAddEditState.Custom.BooleanField(TEST_ID, "TestBoolean", false), VaultAddEditState.Custom.TextField(TEST_ID, "TestText", "TestText"), @@ -258,7 +260,7 @@ class CipherViewExtensionsTest { masterPasswordReprompt = true, notes = "Lots of notes", availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), customFieldData = listOf( VaultAddEditState.Custom.BooleanField(TEST_ID, "TestBoolean", false), VaultAddEditState.Custom.TextField(TEST_ID, "TestText", "TestText"), @@ -322,7 +324,7 @@ class CipherViewExtensionsTest { VaultAddEditState.Custom.HiddenField(TEST_ID, "TestHidden", "TestHidden"), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), ), isIndividualVaultDisabled = true, type = VaultAddEditState.ViewState.Content.ItemType.SecureNotes, @@ -365,7 +367,7 @@ class CipherViewExtensionsTest { ), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), ), isIndividualVaultDisabled = false, type = VaultAddEditState.ViewState.Content.ItemType.SshKey( @@ -407,7 +409,7 @@ class CipherViewExtensionsTest { VaultAddEditState.Custom.HiddenField(TEST_ID, "TestHidden", "TestHidden"), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), ), isIndividualVaultDisabled = false, type = VaultAddEditState.ViewState.Content.ItemType.Passport( @@ -459,7 +461,7 @@ class CipherViewExtensionsTest { VaultAddEditState.Custom.HiddenField(TEST_ID, "TestHidden", "TestHidden"), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), ), isIndividualVaultDisabled = false, type = VaultAddEditState.ViewState.Content.ItemType.SecureNotes, @@ -497,7 +499,7 @@ class CipherViewExtensionsTest { VaultAddEditState.Custom.HiddenField(TEST_ID, "TestHidden", "TestHidden"), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), archiveCalloutText = BitwardenString.this_item_is_archived.asText(), ), isIndividualVaultDisabled = false, @@ -539,7 +541,7 @@ class CipherViewExtensionsTest { VaultAddEditState.Custom.HiddenField(TEST_ID, "TestHidden", "TestHidden"), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), archiveCalloutText = BitwardenString .this_item_is_archived_saving_changes_will_restore_it_to_your_vault .asText(), @@ -716,14 +718,14 @@ class CipherViewExtensionsTest { ), ), availableFolders = emptyList(), - availableOwners = emptyList(), + availableOwners = persistentListOf(), ) .let { if (availableOwners.isNotEmpty()) { it.copy( selectedOwnerId = selectedOwnerId, hasOrganizations = true, - availableOwners = availableOwners, + availableOwners = availableOwners.toImmutableList(), ) } else { it @@ -984,7 +986,7 @@ private val MOCK_FOLDER_ITEM = VaultAddEditState.Folder( ) private val ORGANIZATION_OWNER = VaultAddEditState.Owner( id = "mockOrganizationId-1", - name = "organizationName", + name = "organizationName".asText(), collections = listOf( VaultCollection( id = "mockId-1", @@ -997,7 +999,7 @@ private val ORGANIZATION_OWNER = VaultAddEditState.Owner( private val ORGANIZATION_OWNER_DEFAULT_COLLECTION = VaultAddEditState.Owner( id = "mockOrganizationId-1", - name = "organizationName", + name = "organizationName".asText(), collections = listOf( VaultCollection( id = "mockId-1", @@ -1009,6 +1011,6 @@ private val ORGANIZATION_OWNER_DEFAULT_COLLECTION = VaultAddEditState.Owner( ) private val USER_OWNER = VaultAddEditState.Owner( id = null, - name = "activeEmail", + name = BitwardenString.my_vault.asText(), collections = emptyList(), ) diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreenTest.kt index 866529b0126..539d5033f96 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreenTest.kt @@ -1599,7 +1599,7 @@ class VaultItemScreenTest : BitwardenComposeTest() { } // Confirm overflow is closed on initial load composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filter(hasAnyAncestor(isPopup())) .assertCountEquals(0) @@ -1610,7 +1610,7 @@ class VaultItemScreenTest : BitwardenComposeTest() { // Confirm Collections option is present composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filterToOne(hasAnyAncestor(isPopup())) .assertIsDisplayed() @@ -1625,7 +1625,7 @@ class VaultItemScreenTest : BitwardenComposeTest() { ) } composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filter(hasAnyAncestor(isPopup())) .assertCountEquals(0) } @@ -1643,7 +1643,7 @@ class VaultItemScreenTest : BitwardenComposeTest() { } // Confirm dropdown version of item is absent composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filter(hasAnyAncestor(isPopup())) .assertCountEquals(0) // Open the overflow menu @@ -1652,7 +1652,7 @@ class VaultItemScreenTest : BitwardenComposeTest() { .performClick() // Click on the move to organization hint item in the dropdown composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filterToOne(hasAnyAncestor(isPopup())) .performClick() @@ -1686,7 +1686,7 @@ class VaultItemScreenTest : BitwardenComposeTest() { .assertIsDisplayed() composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filterToOne(hasAnyAncestor(isPopup())) .assertIsDisplayed() @@ -1734,7 +1734,7 @@ class VaultItemScreenTest : BitwardenComposeTest() { .assertIsDisplayed() composeTestRule - .onAllNodesWithText("Collections") + .onAllNodesWithText("Shared folders") .filterToOne(hasAnyAncestor(isPopup())) .assertDoesNotExist() } diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingScreenTest.kt index cb739ef1cc2..b3873f7f446 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingScreenTest.kt @@ -902,7 +902,7 @@ class VaultItemListingScreenTest : BitwardenComposeTest() { @Test fun `Collections text should be displayed according to state`() { - val collectionName = "Collections" + val collectionName = "Shared folders" mutableStateFlow.update { DEFAULT_STATE } composeTestRule .onNodeWithText(text = collectionName) @@ -932,7 +932,7 @@ class VaultItemListingScreenTest : BitwardenComposeTest() { fun `Collection text count should be displayed according to state`() { mutableStateFlow.update { DEFAULT_STATE } composeTestRule - .onNodeWithText(text = "COLLECTIONS (3)") + .onNodeWithText(text = "SHARED FOLDERS (3)") .assertDoesNotExist() mutableStateFlow.update { @@ -961,7 +961,7 @@ class VaultItemListingScreenTest : BitwardenComposeTest() { ) } composeTestRule - .onNodeWithTextAfterScroll(text = "COLLECTIONS (3)") + .onNodeWithTextAfterScroll(text = "SHARED FOLDERS (3)") .assertIsDisplayed() mutableStateFlow.update { @@ -981,7 +981,7 @@ class VaultItemListingScreenTest : BitwardenComposeTest() { } composeTestRule - .onNodeWithTextAfterScroll(text = "COLLECTIONS (1)") + .onNodeWithTextAfterScroll(text = "SHARED FOLDERS (1)") .assertIsDisplayed() } diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataUtil.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataUtil.kt index 77fac7fe2ff..7da7f934880 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataUtil.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/itemlisting/util/VaultItemListingDataUtil.kt @@ -43,8 +43,8 @@ fun createMockDisplayItemForCipher( iconData = iconData, extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -101,8 +101,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_note), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -149,8 +149,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_payment_card), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -201,8 +201,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_id_card), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -245,8 +245,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_ssh_key), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -289,8 +289,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_payment_card), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -333,8 +333,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_note), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -377,8 +377,8 @@ fun createMockDisplayItemForCipher( iconData = IconData.Local(BitwardenDrawable.ic_note), extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -535,8 +535,8 @@ fun createMockDisplayItemForDecryptionError( iconTestTag = "LoginCipherIcon", extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), ), diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationScreenTest.kt index 4b9fdb1cde1..dfca141ba9a 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/movetoorganization/VaultMoveToOrganizationScreenTest.kt @@ -57,7 +57,7 @@ class VaultMoveToOrganizationScreenTest : BitwardenComposeTest() { } composeTestRule - .onNodeWithText(text = "Collections") + .onNodeWithText(text = "Shared folders") .assertIsNotDisplayed() composeTestRule .onNodeWithText(text = "Move to vault") @@ -71,7 +71,7 @@ class VaultMoveToOrganizationScreenTest : BitwardenComposeTest() { .onNodeWithText(text = "Move to vault") .assertIsNotDisplayed() composeTestRule - .onNodeWithText(text = "Collections") + .onNodeWithText(text = "Shared folders") .assertIsDisplayed() } diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreenTest.kt index 4454b7515b3..35a28e268ac 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreenTest.kt @@ -1855,7 +1855,7 @@ class VaultScreenTest : BitwardenComposeTest() { @Test fun `collection data should update according to the state`() { - val collectionsHeader = "COLLECTIONS (1)" + val collectionsHeader = "SHARED FOLDERS (1)" val collectionName = "Test Collection" val collectionCount = 3 val collectionItem = VaultState.ViewState.CollectionItem( diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultAddItemStateExtensionsTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultAddItemStateExtensionsTest.kt index 30b73f316aa..31b65e0185c 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultAddItemStateExtensionsTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultAddItemStateExtensionsTest.kt @@ -1,5 +1,6 @@ package com.x8bit.bitwarden.ui.vault.feature.vault.util +import com.bitwarden.ui.util.asText import com.bitwarden.vault.CardView import com.bitwarden.vault.CipherRepromptType import com.bitwarden.vault.CipherType @@ -24,13 +25,14 @@ import com.x8bit.bitwarden.ui.vault.model.VaultCardExpirationMonth import com.x8bit.bitwarden.ui.vault.model.VaultCollection import com.x8bit.bitwarden.ui.vault.model.VaultIdentityTitle import com.x8bit.bitwarden.ui.vault.model.VaultLinkedFieldType -import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.Assertions.assertNotEquals -import org.junit.jupiter.api.Test import java.time.Clock import java.time.Instant import java.time.LocalDate import java.time.ZoneOffset +import kotlinx.collections.immutable.persistentListOf +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNotEquals +import org.junit.jupiter.api.Test @Suppress("LargeClass") class VaultAddItemStateExtensionsTest { @@ -1151,10 +1153,10 @@ class VaultAddItemStateExtensionsTest { common = VaultAddEditState.ViewState.Content.Common( name = "mockName-1", selectedOwnerId = "mockOwnerId-1", - availableOwners = listOf( + availableOwners = persistentListOf( VaultAddEditState.Owner( id = "mockOwnerId-1", - name = "Mock Organization", + name = "Mock Organization".asText(), collections = listOf( VaultCollection( id = "collection-1", @@ -1243,10 +1245,10 @@ class VaultAddItemStateExtensionsTest { originalCipher = cipherView, name = "mockName-1", selectedOwnerId = "mockOwnerId-1", - availableOwners = listOf( + availableOwners = persistentListOf( VaultAddEditState.Owner( id = "mockOwnerId-1", - name = "Mock Organization", + name = "Mock Organization".asText(), collections = listOf( VaultCollection( id = "collection-1", diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultDataExtensionsTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultDataExtensionsTest.kt index 6ad3d03dd22..c04976d7950 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultDataExtensionsTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultDataExtensionsTest.kt @@ -1642,8 +1642,8 @@ private fun createMockSshKeyVaultItem(number: Int): VaultState.ViewState.VaultIt startIconTestTag = "SshKeyCipherIcon", extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -1679,8 +1679,8 @@ private fun createMockBankAccountVaultItem( startIconTestTag = "BankAccountCipherIcon", extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -1716,8 +1716,8 @@ private fun createMockLicenseVaultItem( startIconTestTag = "LicenseCipherIcon", extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( @@ -1753,8 +1753,8 @@ private fun createMockPassportVaultItem( startIconTestTag = "PassportCipherIcon", extraIconList = persistentListOf( IconData.Local( - iconRes = BitwardenDrawable.ic_collections, - contentDescription = BitwardenString.collections.asText(), + iconRes = BitwardenDrawable.ic_shared_folder, + contentDescription = BitwardenString.shared_folders.asText(), testTag = "CipherInCollectionIcon", ), IconData.Local( diff --git a/ui/src/main/res/drawable/ic_collections.xml b/ui/src/main/res/drawable/ic_collections.xml deleted file mode 100644 index eb5b13332b4..00000000000 --- a/ui/src/main/res/drawable/ic_collections.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - diff --git a/ui/src/main/res/drawable/ic_shared_folder.xml b/ui/src/main/res/drawable/ic_shared_folder.xml new file mode 100644 index 00000000000..d116c16e6de --- /dev/null +++ b/ui/src/main/res/drawable/ic_shared_folder.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/ui/src/main/res/values/strings.xml b/ui/src/main/res/values/strings.xml index d5140076670..9ccd65afcf3 100644 --- a/ui/src/main/res/values/strings.xml +++ b/ui/src/main/res/values/strings.xml @@ -282,8 +282,8 @@ Scanning will happen automatically. Icons server URL Vault is locked Go to my vault - Collections - There are no items in this collection. + Shared folders + There are no items in this shared folder. There are no items in this folder. There are no items in the trash. Assist with filling username and password fields in other apps and on the web. @@ -337,9 +337,9 @@ Scanning will happen automatically. Move down Move Up Owner - There are no collections to list. + There are no shared folders to list. %1$s moved to %2$s. - You must select at least one collection. + You must select at least one shared folder. Share Move to vault No vaults to list. @@ -687,6 +687,7 @@ Do you want to switch to this account? Logging in on Logging in on: Vault + Select vault Appearance Account security Bitwarden help center