diff options
author | 2024-08-21 05:40:03 +0000 | |
---|---|---|
committer | 2024-08-22 16:22:32 +0000 | |
commit | 41ae45e9af6e475269c72ea8a878397df45b788a (patch) | |
tree | 4df148ba551497b4f424cb4cc32bee5dd8dce173 /packages/CredentialManager | |
parent | 3bc44be9ed2bbbb6e51c93bd7fd9be898be0a911 (diff) |
Address linguistic bugs, Add locked provider chips to secondary screen as well
go/credential-selector-ui
Test: Manual
Change-Id: I8704fc921d432a6d3bbe1752398a2144d0ea6ccd
Flag: EXEMPT bugfix
Bug: 359649621, 359650013, 359650037, 358272033, 361566141
Diffstat (limited to 'packages/CredentialManager')
4 files changed, 111 insertions, 69 deletions
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/CredentialsScreenChip.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/CredentialsScreenChip.kt index e58de64a25e3..5bd26e113d2e 100644 --- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/CredentialsScreenChip.kt +++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/CredentialsScreenChip.kt @@ -48,45 +48,14 @@ import com.android.credentialmanager.model.get.AuthenticationEntryInfo /* Used as credential suggestion or user action chip. */ @Composable fun CredentialsScreenChip( - label: String, + primaryText: @Composable () -> Unit, + secondaryText: (@Composable () -> Unit)? = null, onClick: () -> Unit, - secondaryLabel: String? = null, icon: Drawable? = null, isAuthenticationEntryLocked: Boolean? = null, - textAlign: TextAlign = TextAlign.Center, modifier: Modifier = Modifier, colors: ChipColors = ChipDefaults.secondaryChipColors() ) { - return CredentialsScreenChip( - onClick, - text = { - WearButtonText( - text = label, - textAlign = textAlign, - maxLines = 2 - ) - }, - secondaryLabel, - icon, - isAuthenticationEntryLocked, - modifier, - colors - ) -} - - - -/* Used as credential suggestion or user action chip. */ -@Composable -fun CredentialsScreenChip( - onClick: () -> Unit, - text: @Composable () -> Unit, - secondaryLabel: String? = null, - icon: Drawable? = null, - isAuthenticationEntryLocked: Boolean? = null, - modifier: Modifier = Modifier, - colors: ChipColors = ChipDefaults.primaryChipColors(), - ) { val labelParam: (@Composable RowScope.() -> Unit) = { var horizontalArrangement = Arrangement.Start @@ -94,19 +63,15 @@ fun CredentialsScreenChip( horizontalArrangement = Arrangement.Center } Row(horizontalArrangement = horizontalArrangement, modifier = modifier.fillMaxWidth()) { - text() + primaryText() } } val secondaryLabelParam: (@Composable RowScope.() -> Unit)? = - secondaryLabel?.let { + secondaryText?.let { { Row { - WearSecondaryLabel( - text = secondaryLabel, - color = WearMaterialTheme.colors.onSurfaceVariant - ) - + secondaryText() if (isAuthenticationEntryLocked != null) { if (isAuthenticationEntryLocked) { Icon( @@ -156,9 +121,19 @@ fun CredentialsScreenChip( @Composable fun CredentialsScreenChipPreview() { CredentialsScreenChip( - label = "Elisa Beckett", + primaryText = { + WearButtonText( + text = "Elisa Beckett", + textAlign = TextAlign.Start, + ) + }, onClick = { }, - secondaryLabel = "beckett_bakery@gmail.com", + secondaryText = { + WearSecondaryLabel( + text = "beckett_bakery@gmail.com", + color = WearMaterialTheme.colors.onSurfaceVariant + ) + }, icon = null, ) } @@ -166,8 +141,13 @@ fun CredentialsScreenChipPreview() { @Composable fun SignInOptionsChip(onClick: () -> Unit) { CredentialsScreenChip( - label = stringResource(R.string.dialog_sign_in_options_button), - textAlign = TextAlign.Start, + primaryText = { + WearButtonText( + text = stringResource(R.string.dialog_sign_in_options_button), + textAlign = TextAlign.Center, + maxLines = 2 + ) + }, onClick = onClick, ) } @@ -182,7 +162,7 @@ fun SignInOptionsChipPreview() { fun ContinueChip(onClick: () -> Unit) { CredentialsScreenChip( onClick = onClick, - text = { + primaryText = { WearButtonText( text = stringResource(R.string.dialog_continue_button), textAlign = TextAlign.Center, @@ -202,14 +182,21 @@ fun ContinueChipPreview() { @Composable fun DismissChip(onClick: () -> Unit) { CredentialsScreenChip( - label = stringResource(R.string.dialog_dismiss_button), + primaryText = { + WearButtonText( + text = stringResource(R.string.dialog_dismiss_button), + textAlign = TextAlign.Center, + maxLines = 2 + ) + }, onClick = onClick, ) } @Composable fun LockedProviderChip( authenticationEntryInfo: AuthenticationEntryInfo, - onClick: () -> Unit + secondaryMaxLines: Int = 1, + onClick: () -> Unit, ) { val secondaryLabel = stringResource( if (authenticationEntryInfo.isUnlockedAndEmpty) @@ -218,10 +205,21 @@ fun LockedProviderChip( ) CredentialsScreenChip( - label = authenticationEntryInfo.title, + primaryText = { + WearButtonText( + text = authenticationEntryInfo.title, + textAlign = TextAlign.Start, + maxLines = 2, + ) + }, icon = authenticationEntryInfo.icon, - secondaryLabel = secondaryLabel, - textAlign = TextAlign.Start, + secondaryText = { + WearSecondaryLabel( + text = secondaryLabel, + color = WearMaterialTheme.colors.onSurfaceVariant, + maxLines = secondaryMaxLines + ) + }, isAuthenticationEntryLocked = !authenticationEntryInfo.isUnlockedAndEmpty, onClick = onClick, ) diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/Texts.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/Texts.kt index a7b13add8692..a1dc568d5532 100644 --- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/Texts.kt +++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/Texts.kt @@ -16,7 +16,6 @@ package com.android.credentialmanager.common.ui.components -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.material3.Text @@ -93,15 +92,16 @@ fun WearButtonText( fun WearSecondaryLabel( text: String, color: Color = WearMaterialTheme.colors.onSurface, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, + maxLines: Int = 1, ) { Text( - modifier = modifier.fillMaxSize(), + modifier = modifier.wrapContentSize(), text = text, color = color, style = WearMaterialTheme.typography.caption1, overflow = TextOverflow.Ellipsis, textAlign = TextAlign.Start, - maxLines = 1, + maxLines = maxLines, ) } diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt index ef32c944d650..932b3456bfb8 100644 --- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt +++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt @@ -24,13 +24,13 @@ import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.Alignment import com.android.credentialmanager.CredentialSelectorUiState.Get.MultipleEntry import com.android.credentialmanager.FlowEngine import com.android.credentialmanager.R import com.android.credentialmanager.common.ui.components.WearButtonText +import com.android.credentialmanager.ui.components.LockedProviderChip import com.android.credentialmanager.common.ui.components.WearSecondaryLabel import com.android.credentialmanager.model.get.CredentialEntryInfo import com.android.credentialmanager.ui.components.CredentialsScreenChipSpacer @@ -38,6 +38,8 @@ import com.google.android.horologist.annotations.ExperimentalHorologistApi import com.google.android.horologist.compose.layout.ScalingLazyColumn import com.google.android.horologist.compose.layout.rememberColumnState import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults +import androidx.compose.ui.text.style.TextAlign +import androidx.wear.compose.material.MaterialTheme as WearMaterialTheme /** * Screen that shows multiple credentials to select from, grouped by accounts @@ -69,6 +71,7 @@ fun MultiCredentialsFlattenScreen( text = stringResource(R.string.sign_in_options_title), textAlign = TextAlign.Center, modifier = Modifier.weight(0.854f).fillMaxSize(), + maxLines = 2, ) Spacer(Modifier.weight(0.073f)) // 7.3% side margin } @@ -94,19 +97,39 @@ fun MultiCredentialsFlattenScreen( userNameEntries.sortedCredentialEntryList.forEach { credential: CredentialEntryInfo -> item { CredentialsScreenChip( - label = credential.userName, + primaryText = { + WearButtonText( + text = credential.userName, + textAlign = TextAlign.Start, + maxLines = 2, + ) + }, onClick = { selectEntry(credential, false) }, - secondaryLabel = - credential.credentialTypeDisplayName.ifEmpty { - credential.providerDisplayName + secondaryText = + { + WearSecondaryLabel( + text = credential.credentialTypeDisplayName.ifEmpty { + credential.providerDisplayName + }, + color = WearMaterialTheme.colors.onSurfaceVariant, + maxLines = 2 + ) }, icon = credential.icon, - textAlign = TextAlign.Start ) CredentialsScreenChipSpacer() } } + + credentialSelectorUiState.authenticationEntryList.forEach { authenticationEntryInfo -> + item { + LockedProviderChip(authenticationEntryInfo, secondaryMaxLines = 2) { + selectEntry(authenticationEntryInfo, false) + } + CredentialsScreenChipSpacer() + } + } } if (credentialSelectorUiState.actionEntryList.isNotEmpty()) { @@ -120,7 +143,8 @@ fun MultiCredentialsFlattenScreen( bottom = 4.dp, start = 0.dp, end = 0.dp - ).fillMaxWidth(0.87f) + ).fillMaxWidth(0.87f), + maxLines = 2 ) Spacer(Modifier.weight(0.0624f)) // 6.24% side margin } @@ -128,9 +152,15 @@ fun MultiCredentialsFlattenScreen( credentialSelectorUiState.actionEntryList.forEach { actionEntry -> item { CredentialsScreenChip( - label = actionEntry.title, + primaryText = { + WearButtonText( + text = actionEntry.title, + textAlign = TextAlign.Start, + maxLines = 2 + ) + }, onClick = { selectEntry(actionEntry, false) }, - secondaryLabel = null, + secondaryText = null, icon = actionEntry.icon, ) CredentialsScreenChipSpacer() diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldScreen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldScreen.kt index 38307b0daee6..b56b982b562f 100644 --- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldScreen.kt +++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldScreen.kt @@ -17,7 +17,6 @@ package com.android.credentialmanager.ui.screens.multiple import androidx.compose.foundation.layout.Row -import androidx.compose.ui.text.style.TextAlign import androidx.compose.foundation.layout.fillMaxSize import com.android.credentialmanager.R import androidx.compose.ui.res.stringResource @@ -40,6 +39,10 @@ import com.google.android.horologist.compose.layout.ScalingLazyColumnState import com.android.credentialmanager.model.CredentialType import com.android.credentialmanager.ui.components.BottomSpacer import com.android.credentialmanager.ui.components.CredentialsScreenChipSpacer +import com.android.credentialmanager.common.ui.components.WearButtonText +import com.android.credentialmanager.common.ui.components.WearSecondaryLabel +import androidx.compose.ui.text.style.TextAlign +import androidx.wear.compose.material.MaterialTheme as WearMaterialTheme /** * Screen that shows multiple credentials to select from. @@ -82,14 +85,25 @@ fun MultiCredentialsFoldScreen( credentials.forEach { credential: CredentialEntryInfo -> item { CredentialsScreenChip( - label = credential.userName, + primaryText = + { + WearButtonText( + text = credential.userName, + textAlign = TextAlign.Start, + maxLines = 2 + ) + }, onClick = { selectEntry(credential, false) }, - secondaryLabel = - credential.credentialTypeDisplayName.ifEmpty { - credential.providerDisplayName + secondaryText = { + WearSecondaryLabel( + text = credential.credentialTypeDisplayName.ifEmpty { + credential.providerDisplayName + }, + color = WearMaterialTheme.colors.onSurfaceVariant, + maxLines = 1 // See b/359649621 for context + ) }, icon = credential.icon, - textAlign = TextAlign.Start ) CredentialsScreenChipSpacer() } |