From 899177c9a68fc0d8ff83bb356f596fb2ee380d10 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 7 Nov 2023 17:43:54 +0100 Subject: [PATCH] RecoveryKey: Let any password manager provide the key and change keyboard type to password. --- .../impl/setup/views/RecoveryKeyView.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt index d167a9abe1..9e72a19182 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt @@ -30,10 +30,13 @@ import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier +import androidx.compose.ui.autofill.AutofillType import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.PreviewParameter @@ -47,6 +50,7 @@ import io.element.android.libraries.designsystem.theme.components.CircularProgre import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.OutlinedTextField import io.element.android.libraries.designsystem.theme.components.Text +import io.element.android.libraries.designsystem.theme.components.autofill import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings @@ -148,6 +152,7 @@ private fun RecoveryKeyStaticContent( } } +@OptIn(ExperimentalComposeUiApi::class) @Composable private fun RecoveryKeyFormContent( state: RecoveryKeyViewState, @@ -162,13 +167,19 @@ private fun RecoveryKeyFormContent( if (keyHasSpace) VisualTransformation.None else RecoveryKeyVisualTransformation() } OutlinedTextField( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .autofill( + autofillTypes = listOf(AutofillType.Password), + onFill = { onChange(it) }, + ), minLines = 2, value = state.formattedRecoveryKey.orEmpty(), onValueChange = onChange, enabled = state.inProgress.not(), visualTransformation = recoveryKeyVisualTransformation, keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Password, imeAction = ImeAction.Done, ), keyboardActions = KeyboardActions(