diff --git a/packages/CredentialManager/res/values/strings.xml b/packages/CredentialManager/res/values/strings.xml index 2c24bf14117a7..92ce77282cb96 100644 --- a/packages/CredentialManager/res/values/strings.xml +++ b/packages/CredentialManager/res/values/strings.xml @@ -1,4 +1,5 @@ - + + CredentialManager Cancel Continue @@ -12,4 +13,7 @@ Create a passkey at Use saved sign in Create passkey at + Use %1$s for all your sign-ins? + Set as default + Use once \ No newline at end of file diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt index f4d60b5f77ccd..82fce9f7a98dd 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt @@ -83,6 +83,8 @@ fun CreatePasskeyScreen( onOptionSelected = {viewModel.onMoreOptionsRowSelected(it)} ) CreateScreenState.MORE_OPTIONS_ROW_INTRO -> MoreOptionsRowIntroCard( + providerInfo = uiState.selectedProvider!!, + onDefaultOrNotSelected = {viewModel.onDefaultOrNotSelected(it)} ) } }, @@ -282,10 +284,37 @@ fun MoreOptionsSelectionCard( @ExperimentalMaterialApi @Composable fun MoreOptionsRowIntroCard( + providerInfo: ProviderInfo, + onDefaultOrNotSelected: (String) -> Unit, ) { Card( backgroundColor = lightBackgroundColor, ) { + Column() { + Text( + text = stringResource(R.string.use_provider_for_all_title, providerInfo.name), + style = Typography.subtitle1, + modifier = Modifier.padding(all = 24.dp).align(alignment = Alignment.CenterHorizontally) + ) + Row( + horizontalArrangement = Arrangement.SpaceBetween, + modifier = Modifier.fillMaxWidth().padding(horizontal = 24.dp) + ) { + CancelButton( + stringResource(R.string.use_once), + onclick = { onDefaultOrNotSelected(providerInfo.name) } + ) + ConfirmButton( + stringResource(R.string.set_as_default), + onclick = { onDefaultOrNotSelected(providerInfo.name) } + ) + } + Divider( + thickness = 18.dp, + color = Color.Transparent, + modifier = Modifier.padding(bottom = 40.dp) + ) + } } } diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt index 3cf81da1fbaa8..ff44e2ee1b068 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt @@ -112,4 +112,12 @@ class CreatePasskeyViewModel( CredentialManagerRepo.getInstance().onCancel() dialogResult.value = DialogResult(ResultState.CANCELED) } + + fun onDefaultOrNotSelected(providerName: String) { + uiState = uiState.copy( + currentScreenState = CreateScreenState.CREATION_OPTION_SELECTION, + selectedProvider = getProviderInfoByName(providerName) + ) + // TODO: implement the if choose as default or not logic later + } }