From 453ade7ccab33ffc12fc640469adfd577c0d33fa Mon Sep 17 00:00:00 2001 From: David Perez Date: Fri, 12 Jun 2026 09:07:58 -0500 Subject: [PATCH] Chore: Ensure UI it using common components and themeing (#7052) --- .../accountsecurity/AccountSecurityScreen.kt | 62 +++++-------------- .../accountsecurity/PinInputDialog.kt | 3 +- .../blockautofill/AddEditBlockedUriDialog.kt | 3 +- .../list/PrivilegedAppsListScreen.kt | 2 +- .../feature/cardscanner/CardScanScreen.kt | 3 +- .../AccountSecurityScreenTest.kt | 2 +- 6 files changed, 22 insertions(+), 53 deletions(-) diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreen.kt index 58cb3b817b..bc5a380b5b 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreen.kt @@ -12,9 +12,7 @@ import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberTopAppBarState import androidx.compose.runtime.Composable @@ -28,6 +26,8 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalResources import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.core.net.toUri import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel @@ -37,7 +37,6 @@ import com.bitwarden.ui.platform.base.util.standardHorizontalMargin import com.bitwarden.ui.platform.components.account.dialog.BitwardenLogoutConfirmationDialog import com.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar import com.bitwarden.ui.platform.components.badge.NotificationBadge -import com.bitwarden.ui.platform.components.button.BitwardenTextButton import com.bitwarden.ui.platform.components.card.BitwardenActionCard import com.bitwarden.ui.platform.components.card.actionCardExitAnimation import com.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog @@ -635,50 +634,23 @@ private fun FingerPrintPhraseDialog( onDismissRequest: () -> Unit, onLearnMore: () -> Unit, ) { - AlertDialog( - onDismissRequest = onDismissRequest, - dismissButton = { - BitwardenTextButton( - label = stringResource(id = BitwardenString.close), - onClick = onDismissRequest, - ) - }, - confirmButton = { - BitwardenTextButton( - label = stringResource(id = BitwardenString.learn_more), - isExternalLink = true, - onClick = onLearnMore, - ) - }, - title = { - Text( - text = stringResource(id = BitwardenString.fingerprint_phrase), - color = BitwardenTheme.colorScheme.text.primary, - style = BitwardenTheme.typography.headlineSmall, - modifier = Modifier.fillMaxWidth(), - ) - }, - text = { - Column { - Text( - text = "${stringResource(id = BitwardenString.your_accounts_fingerprint)}:", - color = BitwardenTheme.colorScheme.text.primary, - style = BitwardenTheme.typography.bodyMedium, - modifier = Modifier.fillMaxWidth(), - ) - Spacer(modifier = Modifier.height(24.dp)) - Text( - text = fingerprintPhrase(), - color = BitwardenTheme.colorScheme.text.codePink, - style = BitwardenTheme.typography.sensitiveInfoSmall, - modifier = Modifier.fillMaxWidth(), - ) + BitwardenTwoButtonDialog( + title = stringResource(id = BitwardenString.fingerprint_phrase), + message = buildAnnotatedString { + append("${stringResource(id = BitwardenString.your_accounts_fingerprint)}:\n\n") + withStyle( + style = BitwardenTheme.typography.sensitiveInfoSmall + .toSpanStyle() + .copy(color = BitwardenTheme.colorScheme.text.codePink), + ) { + append(fingerprintPhrase()) } }, - containerColor = BitwardenTheme.colorScheme.background.primary, - iconContentColor = BitwardenTheme.colorScheme.icon.secondary, - titleContentColor = BitwardenTheme.colorScheme.text.primary, - textContentColor = BitwardenTheme.colorScheme.text.primary, + confirmButtonText = stringResource(id = BitwardenString.learn_more), + dismissButtonText = stringResource(id = BitwardenString.close), + onConfirmClick = onLearnMore, + onDismissClick = onDismissRequest, + onDismissRequest = onDismissRequest, ) } diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/PinInputDialog.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/PinInputDialog.kt index 2b441b0cb0..11e2662e41 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/PinInputDialog.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/PinInputDialog.kt @@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredHeightIn import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text @@ -78,7 +77,7 @@ fun PinInputDialog( // This background is necessary for the dialog to not be transparent. .background( color = BitwardenTheme.colorScheme.background.primary, - shape = RoundedCornerShape(28.dp), + shape = BitwardenTheme.shapes.dialog, ), horizontalAlignment = Alignment.End, ) { diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/blockautofill/AddEditBlockedUriDialog.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/blockautofill/AddEditBlockedUriDialog.kt index 0ae8ff8a2e..9301c5a1ee 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/blockautofill/AddEditBlockedUriDialog.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/blockautofill/AddEditBlockedUriDialog.kt @@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredHeightIn import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -57,7 +56,7 @@ fun AddEditBlockedUriDialog( // This background is necessary for the dialog to not be transparent. .background( color = BitwardenTheme.colorScheme.background.primary, - shape = RoundedCornerShape(28.dp), + shape = BitwardenTheme.shapes.dialog, ), horizontalAlignment = Alignment.End, ) { diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/privilegedapps/list/PrivilegedAppsListScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/privilegedapps/list/PrivilegedAppsListScreen.kt index b6b12d84aa..2518ed43d7 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/privilegedapps/list/PrivilegedAppsListScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/autofill/privilegedapps/list/PrivilegedAppsListScreen.kt @@ -255,7 +255,7 @@ private fun PrivilegedAppsListContent( ) { BitwardenStandardIconButton( vectorIconRes = BitwardenDrawable.ic_delete, - contentDescription = "", + contentDescription = stringResource(id = BitwardenString.delete), onClick = remember(item) { { onDeleteClick(item) } }, diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanScreen.kt index 4cc4583cb7..63cc27706c 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanScreen.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults @@ -186,7 +185,7 @@ private fun ScanHintBanner( .semantics { liveRegion = LiveRegionMode.Polite } .background( color = BitwardenTheme.colorScheme.background.scrim, - shape = RoundedCornerShape(size = 8.dp), + shape = BitwardenTheme.shapes.content, ) .padding(horizontal = 16.dp, vertical = 12.dp), ) diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreenTest.kt index 42b5764b2b..158cf528ec 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityScreenTest.kt @@ -1571,7 +1571,7 @@ class AccountSecurityScreenTest : BitwardenComposeTest() { .assert(hasAnyAncestor(isDialog())) .assertIsDisplayed() composeTestRule - .onNodeWithText("fingerprint-placeholder") + .onNodeWithText(text = "fingerprint-placeholder", substring = true) .assert(hasAnyAncestor(isDialog())) .assertIsDisplayed() }