diff options
| author | 2024-02-07 22:50:15 +0000 | |
|---|---|---|
| committer | 2024-02-13 00:27:45 +0000 | |
| commit | a2d9a439c64c3202b2fadbddbe5a4b3ca4c3cbb7 (patch) | |
| tree | 652ad48d82aded14e87139ec97a8d51c348c8799 | |
| parent | 83b185c430f23684b731a79bbd732fa7f15c3cc1 (diff) | |
Make multi credentials fold screen title dynamic based on credential type of available credentials.
Test: Manual. See go/credential-selector-ui
Bug: 324291832
Change-Id: I005282a42183cd4699d0a725b78ab190e248c9e7
3 files changed, 18 insertions, 6 deletions
diff --git a/packages/CredentialManager/wear/res/values/strings.xml b/packages/CredentialManager/wear/res/values/strings.xml index 80b1b30dc26a..4e9174e53864 100644 --- a/packages/CredentialManager/wear/res/values/strings.xml +++ b/packages/CredentialManager/wear/res/values/strings.xml @@ -35,6 +35,10 @@ <string name="dialog_sign_in_options_button">Sign-in Options</string> <!-- Title for multiple credentials folded screen. [CHAR LIMIT=NONE] --> <string name="sign_in_options_title">Sign-in Options</string> - <!-- Title for multiple credentials flattened screen. [CHAR LIMIT=NONE] --> + <!-- Title for multiple credentials screen. [CHAR LIMIT=NONE] --> <string name="choose_sign_in_title">Choose a sign in</string> + <!-- Title for multiple credentials screen with only passkeys. [CHAR LIMIT=NONE] --> + <string name="choose_passkey_title">Choose passkey</string> + <!-- Title for multiple credentials screen with only passwords. [CHAR LIMIT=NONE] --> + <string name="choose_password_title">Choose password</string> </resources>
\ No newline at end of file diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt index 59e6142f3687..2fc98e27bea1 100644 --- a/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt +++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt @@ -60,7 +60,7 @@ class CredentialSelectorViewModel @Inject constructor( sealed class CredentialSelectorUiState { data object Idle : CredentialSelectorUiState() - sealed class Get() : CredentialSelectorUiState() { + sealed class Get : CredentialSelectorUiState() { data class SingleEntry(val entry: CredentialEntryInfo) : Get() data class SingleEntryPerAccount(val sortedEntries: List<CredentialEntryInfo>) : Get() data class MultipleEntry( 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 6ba201116e62..a0ea4ee10fbf 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 @@ -42,6 +42,7 @@ import com.android.credentialmanager.ui.components.SignInOptionsChip import com.google.android.horologist.annotations.ExperimentalHorologistApi import com.google.android.horologist.compose.layout.ScalingLazyColumn import com.google.android.horologist.compose.layout.ScalingLazyColumnState +import com.android.credentialmanager.model.CredentialType /** * Screen that shows multiple credentials to select from. @@ -113,17 +114,25 @@ fun MultiCredentialsFoldScreen( columnState = columnState, modifier = modifier.fillMaxSize(), ) { + // flatten all credentials into one + val credentials = state.accounts.flatMap { it.sortedCredentialEntryList } item { + var title = stringResource(R.string.choose_sign_in_title) + 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( icon = screenIcon, - title = stringResource(R.string.choose_sign_in_title), + title = title, modifier = Modifier .padding(top = 6.dp), ) } - state.accounts.forEach { - it.sortedCredentialEntryList.forEach { credential: CredentialEntryInfo -> + credentials.forEach { credential: CredentialEntryInfo -> item { CredentialsScreenChip( label = credential.userName, @@ -133,7 +142,6 @@ fun MultiCredentialsFoldScreen( ) } } - } item { SignInOptionsChip(onSignInOptionsClicked) } item { DismissChip(onCancelClicked) } } |