From 62e82dec1f74ad0761ee69962ca4886bc888bb31 Mon Sep 17 00:00:00 2001 From: Ramsey Smith <142836716+ramsey-livefront@users.noreply.github.com> Date: Fri, 5 Jan 2024 15:36:17 -0700 Subject: [PATCH] Add select option for title in identity creation (#506) --- .../ui/vault/feature/addedit/VaultAddEditViewModel.kt | 2 +- .../ui/vault/feature/addedit/util/CipherViewExtensions.kt | 2 +- .../feature/vault/util/VaultAddItemStateExtensions.kt | 8 +++++++- .../x8bit/bitwarden/ui/vault/model/VaultIdentityTitle.kt | 2 ++ .../ui/vault/feature/addedit/VaultAddEditScreenTest.kt | 4 ++-- 5 files changed, 13 insertions(+), 5 deletions(-) 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 dd36c0b4ec..86e8e1f684 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 @@ -1108,7 +1108,7 @@ data class VaultAddEditState( */ @Parcelize data class Identity( - val selectedTitle: VaultIdentityTitle = VaultIdentityTitle.MR, + val selectedTitle: VaultIdentityTitle = VaultIdentityTitle.SELECT, val firstName: String = "", val middleName: String = "", val lastName: String = "", 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 94ada2bf3c..a6bb768732 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,7 +106,7 @@ private fun String?.toTitleOrDefault(): VaultIdentityTitle = VaultIdentityTitle .entries .find { it.name == this } - ?: VaultIdentityTitle.MR + ?: VaultIdentityTitle.SELECT private fun String?.toBrandOrDefault(): VaultCardBrand = VaultCardBrand diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultAddItemStateExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultAddItemStateExtensions.kt index 167ad4cea2..f4a8a377e1 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultAddItemStateExtensions.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/VaultAddItemStateExtensions.kt @@ -16,6 +16,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.orNullIfBlank import com.x8bit.bitwarden.ui.vault.feature.addedit.VaultAddEditState import com.x8bit.bitwarden.ui.vault.model.VaultCardBrand import com.x8bit.bitwarden.ui.vault.model.VaultCardExpirationMonth +import com.x8bit.bitwarden.ui.vault.model.VaultIdentityTitle import java.time.Instant /** @@ -89,7 +90,12 @@ private fun VaultAddEditState.ViewState.Content.ItemType.toCardView(): CardView? private fun VaultAddEditState.ViewState.Content.ItemType.toIdentityView(): IdentityView? = (this as? VaultAddEditState.ViewState.Content.ItemType.Identity)?.let { IdentityView( - title = it.selectedTitle.name, + title = it + .selectedTitle + .takeUnless { title -> + title == VaultIdentityTitle.SELECT + } + ?.name, firstName = it.firstName.orNullIfBlank(), lastName = it.lastName.orNullIfBlank(), middleName = it.middleName.orNullIfBlank(), diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/model/VaultIdentityTitle.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/model/VaultIdentityTitle.kt index fc54a0ad41..7c9c899e38 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/model/VaultIdentityTitle.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/model/VaultIdentityTitle.kt @@ -3,11 +3,13 @@ package com.x8bit.bitwarden.ui.vault.model import com.x8bit.bitwarden.R import com.x8bit.bitwarden.ui.platform.base.util.Text import com.x8bit.bitwarden.ui.platform.base.util.asText +import com.x8bit.bitwarden.ui.vault.feature.addedit.util.SELECT_TEXT /** * Defines all available title options for identities. */ enum class VaultIdentityTitle(val value: Text) { + SELECT(value = SELECT_TEXT), MR(value = R.string.mr.asText()), MRS(value = R.string.mrs.asText()), MS(value = R.string.ms.asText()), 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 9e4b583bce..1e4367e46d 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 @@ -625,7 +625,7 @@ class VaultAddEditScreenTest : BaseComposeTest() { mutableStateFlow.value = DEFAULT_STATE_IDENTITY // Opens the menu composeTestRule - .onNodeWithContentDescriptionAfterScroll(label = "Title, Mr") + .onNodeWithContentDescriptionAfterScroll(label = "Title, -- Select --") .performClick() // Choose the option from the menu @@ -648,7 +648,7 @@ class VaultAddEditScreenTest : BaseComposeTest() { fun `in ItemType_Identity the Title should display the selected title from the state`() { mutableStateFlow.value = DEFAULT_STATE_IDENTITY composeTestRule - .onNodeWithContentDescriptionAfterScroll(label = "Title, Mr") + .onNodeWithContentDescriptionAfterScroll(label = "Title, -- Select --") .assertIsDisplayed() mutableStateFlow.update { currentState ->