diff options
6 files changed, 48 insertions, 40 deletions
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorActivity.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorActivity.kt index 5728c8cb9263..35addb341c72 100644 --- a/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorActivity.kt +++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorActivity.kt @@ -24,7 +24,6 @@ import androidx.activity.compose.setContent import androidx.activity.viewModels import com.android.credentialmanager.ui.theme.WearCredentialSelectorTheme import com.android.credentialmanager.ui.WearApp -import com.google.android.horologist.annotations.ExperimentalHorologistApi import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint(ComponentActivity::class) @@ -32,7 +31,6 @@ class CredentialSelectorActivity : Hilt_CredentialSelectorActivity() { private val viewModel: CredentialSelectorViewModel by viewModels() - @OptIn(ExperimentalHorologistApi::class) override fun onCreate(savedInstanceState: Bundle?) { Log.d(TAG, "onCreate, intent: $intent") super.onCreate(savedInstanceState) 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 c641d7f9f48f..25bc38133e38 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 @@ -15,6 +15,7 @@ */ package com.android.credentialmanager.ui.components +import androidx.wear.compose.material.MaterialTheme as WearMaterialTheme import androidx.compose.foundation.layout.Row import androidx.compose.material3.Icon import android.graphics.drawable.Drawable @@ -22,7 +23,11 @@ import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material.icons.outlined.LockOpen import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -46,7 +51,7 @@ fun CredentialsScreenChip( onClick: () -> Unit, secondaryLabel: String? = null, icon: Drawable? = null, - isAuthenticationEntryLocked: Boolean = false, + isAuthenticationEntryLocked: Boolean? = null, textAlign: TextAlign = TextAlign.Center, modifier: Modifier = Modifier, colors: ChipColors = ChipDefaults.secondaryChipColors() @@ -77,7 +82,7 @@ fun CredentialsScreenChip( text: @Composable () -> Unit, secondaryLabel: String? = null, icon: Drawable? = null, - isAuthenticationEntryLocked: Boolean = false, + isAuthenticationEntryLocked: Boolean? = null, modifier: Modifier = Modifier, colors: ChipColors = ChipDefaults.primaryChipColors(), ) { @@ -94,16 +99,23 @@ fun CredentialsScreenChip( text = secondaryLabel, ) - if (isAuthenticationEntryLocked) - // TODO(b/324465527) change this to lock icon and correct size once figma mocks are - // updated - Icon( - bitmap = checkNotNull(icon?.toBitmap()?.asImageBitmap()), - // Decorative purpose only. - contentDescription = null, - modifier = Modifier.size(10.dp), - tint = Color.Unspecified - ) + if (isAuthenticationEntryLocked != null) { + if (isAuthenticationEntryLocked) { + Icon( + Icons.Outlined.Lock, + contentDescription = null, + modifier = Modifier.size(12.dp).align(Alignment.CenterVertically), + tint = WearMaterialTheme.colors.onSurfaceVariant + ) + } else { + Icon( + Icons.Outlined.LockOpen, + contentDescription = null, + modifier = Modifier.size(12.dp).align(Alignment.CenterVertically), + tint = WearMaterialTheme.colors.onSurfaceVariant + ) + } + } } } } 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 22f6bf0f37ee..282fea0d7218 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 @@ -22,7 +22,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp @@ -57,7 +56,6 @@ fun WearUsernameText( text: String, textAlign: TextAlign = TextAlign.Center, modifier: Modifier = Modifier, - onTextLayout: (TextLayoutResult) -> Unit = {}, ) { Text( modifier = modifier.padding(start = 8.dp, end = 8.dp).wrapContentSize(), @@ -67,7 +65,6 @@ fun WearUsernameText( overflow = TextOverflow.Ellipsis, textAlign = textAlign, maxLines = 2, - onTextLayout = onTextLayout, ) } @@ -79,7 +76,6 @@ fun WearButtonText( maxLines: Int = 1, modifier: Modifier = Modifier, color: Color = WearMaterialTheme.colors.onSurface, - onTextLayout: (TextLayoutResult) -> Unit = {}, ) { Text( modifier = modifier.wrapContentSize(), @@ -89,7 +85,6 @@ fun WearButtonText( overflow = TextOverflow.Ellipsis, textAlign = textAlign, maxLines = maxLines, - onTextLayout = onTextLayout, ) } @@ -97,7 +92,6 @@ fun WearButtonText( fun WearSecondaryLabel( text: String, modifier: Modifier = Modifier, - onTextLayout: (TextLayoutResult) -> Unit = {}, ) { Text( modifier = modifier.wrapContentSize(), @@ -107,6 +101,5 @@ fun WearSecondaryLabel( overflow = TextOverflow.Ellipsis, textAlign = TextAlign.Start, maxLines = 1, - onTextLayout = onTextLayout, ) } diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/mappers/CredentialSelectorUiStateGetMapper.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/mappers/CredentialSelectorUiStateGetMapper.kt index 473094cc1308..265627520cf7 100644 --- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/mappers/CredentialSelectorUiStateGetMapper.kt +++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/mappers/CredentialSelectorUiStateGetMapper.kt @@ -43,7 +43,8 @@ fun Request.Get.toGet(isPrimary: Boolean): CredentialSelectorUiState.Get { var icon: Drawable? = null // provide icon if all entries have the same provider - if (sortedEntries.all {it.providerId == sortedEntries[0].providerId}) { + if (sortedEntries.isNotEmpty() && + sortedEntries.all {it.providerId == sortedEntries[0].providerId}) { icon = providerInfos[0].icon } 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 fb81e736171b..36e97929e883 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 @@ -75,7 +75,10 @@ fun MultiCredentialsFlattenScreen( CredentialsScreenChip( label = credential.userName, onClick = { selectEntry(credential, false) }, - secondaryLabel = credential.credentialTypeDisplayName, + secondaryLabel = + credential.credentialTypeDisplayName.ifEmpty { + credential.providerDisplayName + }, icon = credential.icon, textAlign = TextAlign.Start ) 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 7addc74aecd0..ce2bad0f71ad 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 @@ -61,13 +61,12 @@ fun MultiCredentialsFoldScreen( val credentials = credentialSelectorUiState.sortedEntries item { var title = stringResource(R.string.choose_sign_in_title) - - if (credentials.isEmpty()) { - title = stringResource(R.string.choose_sign_in_title) - } else if (credentials.all{ it.credentialType == CredentialType.PASSKEY }) { - title = stringResource(R.string.choose_passkey_title) - } else if (credentials.all { it.credentialType == CredentialType.PASSWORD }) { - title = stringResource(R.string.choose_password_title) + if (credentials.isNotEmpty()) { + if (credentials.all { it.credentialType == CredentialType.PASSKEY }) { + title = stringResource(R.string.choose_passkey_title) + } else if (credentials.all { it.credentialType == CredentialType.PASSWORD }) { + title = stringResource(R.string.choose_password_title) + } } SignInHeader( @@ -77,16 +76,19 @@ fun MultiCredentialsFoldScreen( } credentials.forEach { credential: CredentialEntryInfo -> - item { - CredentialsScreenChip( - label = credential.userName, - onClick = { selectEntry(credential, false) }, - secondaryLabel = credential.credentialTypeDisplayName, - icon = credential.icon, - ) - CredentialsScreenChipSpacer() + item { + CredentialsScreenChip( + label = credential.userName, + onClick = { selectEntry(credential, false) }, + secondaryLabel = + credential.credentialTypeDisplayName.ifEmpty { + credential.providerDisplayName + }, + icon = credential.icon, + ) + CredentialsScreenChipSpacer() + } } - } credentialSelectorUiState.authenticationEntryList.forEach { authenticationEntryInfo -> item { @@ -96,7 +98,6 @@ fun MultiCredentialsFoldScreen( CredentialsScreenChipSpacer() } } - item { Spacer(modifier = Modifier.size(8.dp)) } |