From 1f86685ed849721b7a3378660fb90444bfc27858 Mon Sep 17 00:00:00 2001 From: Harsh Lal Date: Mon, 27 Mar 2023 19:58:14 +0000 Subject: [PATCH] Enhance fallback UI for single entry Bug: 275377503 Test: local-deployment Change-Id: If07f7a6a233f29b623028c322f6124fc88f69886 --- .../CredentialManager/res/values/strings.xml | 2 ++ .../getflow/GetGenericCredentialComponents.kt | 26 +++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/CredentialManager/res/values/strings.xml b/packages/CredentialManager/res/values/strings.xml index 1e0c2cdb6d99b..0498a15269ce1 100644 --- a/packages/CredentialManager/res/values/strings.xml +++ b/packages/CredentialManager/res/values/strings.xml @@ -105,6 +105,8 @@ Choose a saved sign-in for %1$s Choose an option for %1$s? + + Use this info on %1$s? Sign in another way diff --git a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetGenericCredentialComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetGenericCredentialComponents.kt index ba48f2b0fc1b8..57fefbe577b4a 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetGenericCredentialComponents.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetGenericCredentialComponents.kt @@ -34,7 +34,9 @@ import com.android.credentialmanager.CredentialSelectorViewModel import com.android.credentialmanager.R import com.android.credentialmanager.common.BaseEntry import com.android.credentialmanager.common.ProviderActivityState +import com.android.credentialmanager.common.ui.ConfirmButton import com.android.credentialmanager.common.ui.CredentialContainerCard +import com.android.credentialmanager.common.ui.CtaButtonRow import com.android.credentialmanager.common.ui.HeadlineIcon import com.android.credentialmanager.common.ui.HeadlineText import com.android.credentialmanager.common.ui.LargeLabelTextOnSurfaceVariant @@ -62,6 +64,7 @@ fun GetGenericCredentialScreen( providerDisplayInfo = getCredentialUiState.providerDisplayInfo, providerInfoList = getCredentialUiState.providerInfoList, onEntrySelected = viewModel::getFlowOnEntrySelected, + onConfirm = viewModel::getFlowOnConfirmEntrySelected, onLog = { viewModel.logUiEvent(it) }, ) viewModel.uiMetrics.log(GetCredentialEvent @@ -93,10 +96,13 @@ fun PrimarySelectionCardGeneric( providerDisplayInfo: ProviderDisplayInfo, providerInfoList: List, onEntrySelected: (BaseEntry) -> Unit, + onConfirm: () -> Unit, onLog: @Composable (UiEventLogger.UiEventEnum) -> Unit, ) { val sortedUserNameToCredentialEntryList = providerDisplayInfo.sortedUserNameToCredentialEntryList + val totalEntriesCount = sortedUserNameToCredentialEntryList + .flatMap { it.sortedCredentialEntryList }.size SheetContainerCard { // When only one provider (not counting the remote-only provider) exists, display that // provider's icon + name up top. @@ -125,7 +131,11 @@ fun PrimarySelectionCardGeneric( item { HeadlineText( text = stringResource( - R.string.get_dialog_title_choose_option_for, + if (totalEntriesCount == 1) { + R.string.get_dialog_title_use_info_on + } else { + R.string.get_dialog_title_choose_option_for + }, requestDisplayInfo.appName ), ) @@ -134,7 +144,6 @@ fun PrimarySelectionCardGeneric( item { CredentialContainerCard { Column(verticalArrangement = Arrangement.spacedBy(2.dp)) { - // Show max 4 entries in this primary page sortedUserNameToCredentialEntryList.forEach { // TODO(b/275375861): fallback UI merges entries by account names. // Need a strategy to be able to show all entries. @@ -147,6 +156,19 @@ fun PrimarySelectionCardGeneric( } } } + item { Divider(thickness = 24.dp, color = Color.Transparent) } + item { + if (totalEntriesCount == 1) { + CtaButtonRow( + rightButton = { + ConfirmButton( + stringResource(R.string.get_dialog_button_label_continue), + onClick = onConfirm + ) + } + ) + } + } } onLog(GetCredentialEvent.CREDMAN_GET_CRED_PRIMARY_SELECTION_CARD) }