summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author harinirajan <harinirajan@google.com> 2024-02-07 22:50:15 +0000
committer harinirajan <harinirajan@google.com> 2024-02-13 00:27:45 +0000
commita2d9a439c64c3202b2fadbddbe5a4b3ca4c3cbb7 (patch)
tree652ad48d82aded14e87139ec97a8d51c348c8799
parent83b185c430f23684b731a79bbd732fa7f15c3cc1 (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
-rw-r--r--packages/CredentialManager/wear/res/values/strings.xml6
-rw-r--r--packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt2
-rw-r--r--packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldScreen.kt16
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) }
}