mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-07-21 04:54:41 +01:00
Stop prompting system password restore on PIN entry in regV5.
This commit is contained in:
committed by
Michelle Tang
parent
495b5ef9be
commit
8536504318
+29
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2026 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.signal.registration.screens
|
||||
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.input.OffsetMapping
|
||||
import androidx.compose.ui.text.input.PasswordVisualTransformation
|
||||
import androidx.compose.ui.text.input.TransformedText
|
||||
import androidx.compose.ui.text.input.VisualTransformation
|
||||
|
||||
/**
|
||||
* Masks input with bullets exactly like [PasswordVisualTransformation], but is intentionally a
|
||||
* distinct type. Compose flags a field with password semantics whenever its transformation is a
|
||||
* [PasswordVisualTransformation], which makes the system autofill framework offer to save/fill a
|
||||
* password. We never want that prompt for PIN entry.
|
||||
*/
|
||||
object PinVisualTransformation : VisualTransformation {
|
||||
private const val MASK = '•'
|
||||
|
||||
override fun filter(text: AnnotatedString): TransformedText {
|
||||
return TransformedText(
|
||||
AnnotatedString(MASK.toString().repeat(text.text.length)),
|
||||
OffsetMapping.Identity
|
||||
)
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -57,7 +57,6 @@ import androidx.compose.ui.text.SpanStyle
|
||||
import androidx.compose.ui.text.buildAnnotatedString
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.text.input.PasswordVisualTransformation
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextDecoration
|
||||
import androidx.compose.ui.text.withStyle
|
||||
@@ -71,6 +70,7 @@ import org.signal.core.ui.compose.Previews
|
||||
import org.signal.core.ui.compose.Scaffolds
|
||||
import org.signal.core.ui.compose.SignalIcons
|
||||
import org.signal.registration.R
|
||||
import org.signal.registration.screens.PinVisualTransformation
|
||||
import org.signal.registration.screens.RegistrationScaffold
|
||||
import org.signal.registration.screens.TwoPaneRegistrationScaffold
|
||||
import org.signal.registration.screens.attachDebugLogHelper
|
||||
@@ -399,7 +399,7 @@ private fun PinInputField(
|
||||
imeAction = ImeAction.Done
|
||||
),
|
||||
keyboardActions = KeyboardActions(onDone = { if (canSubmitPin) onSubmit() }),
|
||||
visualTransformation = PasswordVisualTransformation()
|
||||
visualTransformation = PinVisualTransformation
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -43,7 +43,6 @@ import androidx.compose.ui.res.pluralStringResource
|
||||
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.PasswordVisualTransformation
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.signal.core.ui.compose.AllDevicePreviews
|
||||
@@ -52,6 +51,7 @@ import org.signal.core.ui.compose.Dialogs
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.signal.core.ui.compose.SignalIcons
|
||||
import org.signal.registration.R
|
||||
import org.signal.registration.screens.PinVisualTransformation
|
||||
import org.signal.registration.screens.RegistrationScaffold
|
||||
import org.signal.registration.screens.TwoPaneRegistrationScaffold
|
||||
import org.signal.registration.screens.attachDebugLogHelper
|
||||
@@ -326,7 +326,7 @@ private fun PinInputField(
|
||||
),
|
||||
keyboardActions = KeyboardActions(onDone = { if (canSubmitPin) onSubmit() }),
|
||||
isError = state.triesRemaining != null,
|
||||
visualTransformation = PasswordVisualTransformation()
|
||||
visualTransformation = PinVisualTransformation
|
||||
)
|
||||
|
||||
if (state.triesRemaining != null) {
|
||||
|
||||
Reference in New Issue
Block a user