Revert "PM-19131 - moved isVisible logic for hidden custom fields to be managed on view side vs model side"

This reverts commit bc76e46185.
This commit is contained in:
Philip Cappelli
2025-03-26 14:10:15 -04:00
parent bc76e46185
commit c0707ae08c
6 changed files with 31 additions and 20 deletions

View File

@@ -347,6 +347,21 @@ class VaultItemViewModel @Inject constructor(
)
return@onContent
}
mutableStateFlow.update { currentState ->
currentState.copy(
viewState = content.copy(
common = content.common.copy(
customFields = content.common.customFields.map { customField ->
if (customField == action.field) {
action.field.copy(isVisible = action.isVisible)
} else {
customField
}
},
),
),
)
}
if (action.isVisible) {
organizationEventManager.trackEvent(
event = OrganizationEvent.CipherClientToggledHiddenFieldVisible(
@@ -1600,6 +1615,7 @@ data class VaultItemState(
val name: String,
val value: String,
val isCopyable: Boolean,
val isVisible: Boolean,
) : Custom()
/**

View File

@@ -1,10 +1,6 @@
package com.x8bit.bitwarden.ui.vault.feature.item.component
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.stringResource
@@ -34,8 +30,6 @@ fun CustomField(
cardStyle: CardStyle,
modifier: Modifier = Modifier,
) {
var isVisible by rememberSaveable { mutableStateOf(false) }
when (customField) {
is VaultItemState.ViewState.Content.Common.Custom.BooleanField -> {
BitwardenSwitch(
@@ -53,11 +47,8 @@ fun CustomField(
BitwardenPasswordField(
label = customField.name,
value = customField.value,
showPasswordChange = {
onShowHiddenFieldClick(customField, it)
isVisible = it
},
showPassword = isVisible,
showPasswordChange = { onShowHiddenFieldClick(customField, it) },
showPassword = customField.isVisible,
onValueChange = { },
readOnly = true,
singleLine = false,
@@ -78,11 +69,8 @@ fun CustomField(
BitwardenPasswordField(
label = customField.name,
value = customField.value,
showPasswordChange = {
onShowHiddenFieldClick(customField, it)
isVisible = it
},
showPassword = isVisible,
showPasswordChange = { onShowHiddenFieldClick(customField, it) },
showPassword = customField.isVisible,
onValueChange = { },
readOnly = true,
singleLine = false,

View File

@@ -57,9 +57,7 @@ fun CipherView.toViewState(
name = name,
requiresReprompt = (reprompt == CipherRepromptType.PASSWORD && hasMasterPassword) &&
previousState?.common?.requiresReprompt != false,
customFields = fields.orEmpty().map { fieldView ->
fieldView.toCustomField()
},
customFields = fields.orEmpty().map { it.toCustomField() },
lastUpdated = revisionDate.toFormattedPattern(
pattern = LAST_UPDATED_DATE_TIME_PATTERN,
clock = clock,
@@ -209,6 +207,7 @@ private fun FieldView.toCustomField(): VaultItemState.ViewState.Content.Common.C
name = name.orEmpty(),
value = value.orZeroWidthSpace(),
isCopyable = !value.isNullOrBlank(),
isVisible = false,
)
FieldType.BOOLEAN -> VaultItemState.ViewState.Content.Common.Custom.BooleanField(

View File

@@ -779,6 +779,7 @@ class VaultItemScreenTest : BaseComposeTest() {
name = "hidden",
value = "hidden password",
isCopyable = true,
isVisible = false,
)
EMPTY_VIEW_STATES
@@ -816,6 +817,7 @@ class VaultItemScreenTest : BaseComposeTest() {
name = "hidden",
value = "hidden password",
isCopyable = true,
isVisible = false,
)
EMPTY_VIEW_STATES
@@ -856,6 +858,7 @@ class VaultItemScreenTest : BaseComposeTest() {
name = "hidden",
value = "hidden password",
isCopyable = true,
isVisible = false,
)
EMPTY_VIEW_STATES
@@ -3154,6 +3157,7 @@ private val DEFAULT_COMMON: VaultItemState.ViewState.Content.Common =
name = "hidden",
value = "hidden password",
isCopyable = true,
isVisible = false,
),
VaultItemState.ViewState.Content.Common.Custom.BooleanField(
name = "boolean",

View File

@@ -1073,6 +1073,7 @@ class VaultItemViewModelTest : BaseViewModelTest() {
name = "hidden",
value = "value",
isCopyable = true,
isVisible = false,
)
every {
mockCipherView.toViewState(
@@ -1137,6 +1138,7 @@ class VaultItemViewModelTest : BaseViewModelTest() {
name = "hidden",
value = "value",
isCopyable = true,
isVisible = false,
)
val loginViewState = VaultItemState.ViewState.Content(
common = createCommonContent(
@@ -1180,7 +1182,7 @@ class VaultItemViewModelTest : BaseViewModelTest() {
viewState = loginViewState.copy(
common = createCommonContent(isEmpty = true, isPremiumUser = true).copy(
requiresReprompt = false,
customFields = listOf(hiddenField),
customFields = listOf(hiddenField.copy(isVisible = true)),
),
),
),
@@ -3708,6 +3710,7 @@ class VaultItemViewModelTest : BaseViewModelTest() {
name = "hidden",
value = "value",
isCopyable = true,
isVisible = false,
),
VaultItemState.ViewState.Content.Common.Custom.BooleanField(
name = "boolean",

View File

@@ -197,6 +197,7 @@ fun createCommonContent(
name = "hidden",
value = "value",
isCopyable = true,
isVisible = false,
),
VaultItemState.ViewState.Content.Common.Custom.BooleanField(
name = "boolean",