summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Qinmei Du <duqinmei@google.com> 2022-10-13 03:25:09 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-10-13 03:25:09 +0000
commitc9bebe0352e94dcfd1023043d82cf3a531221afb (patch)
treea59cfddbaa69de9068dfb96fac44fd143ec660cc
parente77e65166b79231aaa3b8ab59a321140cca2ee93 (diff)
parent2534515966bbbe106ba9ce5599caee1a5b2dfd7b (diff)
Merge "Add the initial of the more options page with a toolbar has a return button"
-rw-r--r--packages/CredentialManager/res/values/strings.xml2
-rw-r--r--packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt1
-rw-r--r--packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt78
-rw-r--r--packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt14
4 files changed, 89 insertions, 6 deletions
diff --git a/packages/CredentialManager/res/values/strings.xml b/packages/CredentialManager/res/values/strings.xml
index 2901705d5836..2c24bf14117a 100644
--- a/packages/CredentialManager/res/values/strings.xml
+++ b/packages/CredentialManager/res/values/strings.xml
@@ -3,6 +3,7 @@
<string name="string_cancel">Cancel</string>
<string name="string_continue">Continue</string>
<string name="string_more_options">More options</string>
+ <string name="string_create_at_another_place">Create at another place</string>
<string name="string_no_thanks">No thanks</string>
<string name="passkey_creation_intro_title">A simple way to sign in safely</string>
<string name="passkey_creation_intro_body">Use your fingerprint, face or screen lock to sign in with a unique passkey that can’t be forgotten or stolen. Learn more</string>
@@ -10,4 +11,5 @@
<string name="choose_provider_body">This provider will store passkeys and passwords for you and help you easily autofill and sign in. Learn more</string>
<string name="choose_create_option_title">Create a passkey at</string>
<string name="choose_sign_in_title">Use saved sign in</string>
+ <string name="create_passkey_at">Create passkey at</string>
</resources> \ No newline at end of file
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt
index 5aa1e9ba6183..044688b8c227 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt
@@ -22,4 +22,5 @@ enum class CreateScreenState {
PASSKEY_INTRO,
PROVIDER_SELECTION,
CREATION_OPTION_SELECTION,
+ MORE_OPTIONS_SELECTION,
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt
index fbec1bc75dc6..997519db111d 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt
@@ -19,9 +19,13 @@ import androidx.compose.material.ChipDefaults
import androidx.compose.material.Divider
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.Icon
+import androidx.compose.material.IconButton
import androidx.compose.material.ModalBottomSheetLayout
import androidx.compose.material.ModalBottomSheetValue
import androidx.compose.material.Text
+import androidx.compose.material.TopAppBar
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@@ -71,8 +75,13 @@ fun CreatePasskeyScreen(
onOptionSelected = {viewModel.onCreateOptionSelected(it)},
onCancel = cancelActivity,
multiProvider = uiState.providers.size > 1,
- onMoreOptionSelected = {viewModel.onMoreOptionSelected()}
+ onMoreOptionSelected = {viewModel.onMoreOptionSelected(it)}
)
+ CreateScreenState.MORE_OPTIONS_SELECTION -> MoreOptionSelectionCard(
+ providerInfo = uiState.selectedProvider!!,
+ onCancel = cancelActivity,
+ onBackButtonSelected = {viewModel.onBackButtonSelected(it)}
+ )
}
},
scrimColor = Color.Transparent,
@@ -202,6 +211,67 @@ fun ProviderSelectionCard(
}
}
+@Composable
+fun MoreOptionSelectionCard(
+ providerInfo: ProviderInfo,
+ onCancel: () -> Unit,
+ onBackButtonSelected: (String) -> Unit
+) {
+ Card(
+ backgroundColor = lightBackgroundColor,
+ ) {
+ Column() {
+ TopAppBar(
+ title = { Text(text = stringResource(R.string.string_more_options), style = Typography.subtitle1) },
+ backgroundColor = lightBackgroundColor,
+ elevation = 0.dp,
+ navigationIcon =
+ {
+ IconButton(onClick = { onBackButtonSelected(providerInfo.name) }) {
+ Icon(Icons.Filled.ArrowBack, "backIcon"
+ )
+ }
+ }
+ )
+ Divider(
+ thickness = 24.dp,
+ color = Color.Transparent
+ )
+ Text(
+ text = stringResource(R.string.create_passkey_at),
+ style = Typography.body1,
+ modifier = Modifier.padding(horizontal = 28.dp)
+ )
+ Card(
+ shape = Shapes.medium,
+ modifier = Modifier
+ .padding(horizontal = 24.dp)
+ .align(alignment = Alignment.CenterHorizontally)
+ ) {
+ LazyColumn(
+ verticalArrangement = Arrangement.spacedBy(2.dp)
+ ) {
+ }
+ }
+ Divider(
+ thickness = 24.dp,
+ color = Color.Transparent
+ )
+ Row(
+ horizontalArrangement = Arrangement.Start,
+ modifier = Modifier.fillMaxWidth().padding(horizontal = 24.dp)
+ ) {
+ CancelButton(stringResource(R.string.string_cancel), onCancel)
+ }
+ Divider(
+ thickness = 18.dp,
+ color = Color.Transparent,
+ modifier = Modifier.padding(bottom = 16.dp)
+ )
+ }
+ }
+}
+
@ExperimentalMaterialApi
@Composable
fun ProviderRow(providerInfo: ProviderInfo, onProviderSelected: (String) -> Unit) {
@@ -276,7 +346,7 @@ fun CreationSelectionCard(
onOptionSelected: (String) -> Unit,
onCancel: () -> Unit,
multiProvider: Boolean,
- onMoreOptionSelected: () -> Unit,
+ onMoreOptionSelected: (String) -> Unit,
) {
Card(
backgroundColor = lightBackgroundColor,
@@ -318,7 +388,7 @@ fun CreationSelectionCard(
}
if (multiProvider) {
item {
- MoreOptionRow(onSelect = onMoreOptionSelected)
+ MoreOptionRow(onSelect = { onMoreOptionSelected(providerInfo.name) })
}
}
}
@@ -389,7 +459,7 @@ fun MoreOptionRow(onSelect: () -> Unit) {
shape = Shapes.large
) {
Text(
- text = stringResource(R.string.string_more_options),
+ text = stringResource(R.string.string_create_at_another_place),
style = Typography.h6,
)
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt
index e42016d59b0b..15300def6fda 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyViewModel.kt
@@ -52,7 +52,17 @@ class CreatePasskeyViewModel(
}
}
- fun onMoreOptionSelected() {
- Log.d("Account Selector", "On more option selected")
+ fun onMoreOptionSelected(providerName: String) {
+ uiState = uiState.copy(
+ currentScreenState = CreateScreenState.MORE_OPTIONS_SELECTION,
+ selectedProvider = getProviderInfoByName(providerName)
+ )
+ }
+
+ fun onBackButtonSelected(providerName: String) {
+ uiState = uiState.copy(
+ currentScreenState = CreateScreenState.CREATION_OPTION_SELECTION,
+ selectedProvider = getProviderInfoByName(providerName)
+ )
}
}