Merge pull request #2294 from element-hq/feature/bma/fix

Ensure login and password exclude `\n`
This commit is contained in:
Benoit Marty
2024-01-26 10:11:51 +01:00
committed by GitHub
2 changed files with 20 additions and 9 deletions

1
changelog.d/2263.bugfix Normal file
View File

@@ -0,0 +1 @@
Ensure login and password exclude `\n`

View File

@@ -194,15 +194,17 @@ private fun LoginForm(
.onTabOrEnterKeyFocusNext(focusManager)
.testTag(TestTags.loginEmailUsername)
.autofill(autofillTypes = listOf(AutofillType.Username), onFill = {
loginFieldState = it
eventSink(LoginPasswordEvents.SetLogin(it))
val sanitized = it.sanitize()
loginFieldState = sanitized
eventSink(LoginPasswordEvents.SetLogin(sanitized))
}),
placeholder = {
Text(text = stringResource(CommonStrings.common_username))
},
onValueChange = {
loginFieldState = it
eventSink(LoginPasswordEvents.SetLogin(it))
val sanitized = it.sanitize()
loginFieldState = sanitized
eventSink(LoginPasswordEvents.SetLogin(sanitized))
},
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Email,
@@ -224,7 +226,6 @@ private fun LoginForm(
null
},
)
var passwordVisible by remember { mutableStateOf(false) }
if (state.loginAction is AsyncData.Loading) {
// Ensure password is hidden when user submits the form
@@ -239,12 +240,14 @@ private fun LoginForm(
.onTabOrEnterKeyFocusNext(focusManager)
.testTag(TestTags.loginPassword)
.autofill(autofillTypes = listOf(AutofillType.Password), onFill = {
passwordFieldState = it
eventSink(LoginPasswordEvents.SetPassword(it))
val sanitized = it.sanitize()
passwordFieldState = sanitized
eventSink(LoginPasswordEvents.SetPassword(sanitized))
}),
onValueChange = {
passwordFieldState = it
eventSink(LoginPasswordEvents.SetPassword(it))
val sanitized = it.sanitize()
passwordFieldState = sanitized
eventSink(LoginPasswordEvents.SetPassword(sanitized))
},
placeholder = {
Text(text = stringResource(CommonStrings.common_password))
@@ -272,6 +275,13 @@ private fun LoginForm(
}
}
/**
* Ensure that the string does not contain any new line characters, which can happen when pasting values.
*/
private fun String.sanitize(): String {
return replace("\n", "")
}
@Composable
private fun LoginErrorDialog(error: Throwable, onDismiss: () -> Unit) {
ErrorDialog(