Browse Source

Enter recovery key: add Done ime action.

pull/1648/head
Benoit Marty 11 months ago committed by Benoit Marty
parent
commit
dc1bbb0145
  1. 7
      features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyView.kt
  2. 1
      features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupView.kt
  3. 23
      features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt

7
features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyView.kt

@ -75,6 +75,9 @@ fun SecureBackupEnterRecoveryKeyView(
state = state, state = state,
onChange = { onChange = {
state.eventSink.invoke(SecureBackupEnterRecoveryKeyEvents.OnRecoveryKeyChange(it)) state.eventSink.invoke(SecureBackupEnterRecoveryKeyEvents.OnRecoveryKeyChange(it))
},
onSubmit = {
state.eventSink.invoke(SecureBackupEnterRecoveryKeyEvents.Submit)
}) })
} }
} }
@ -112,13 +115,15 @@ private fun BottomMenu(
@Composable @Composable
private fun Content( private fun Content(
state: SecureBackupEnterRecoveryKeyState, state: SecureBackupEnterRecoveryKeyState,
onChange: ((String) -> Unit)?, onChange: (String) -> Unit,
onSubmit: () -> Unit,
) { ) {
RecoveryKeyView( RecoveryKeyView(
modifier = Modifier.padding(top = 52.dp), modifier = Modifier.padding(top = 52.dp),
state = state.recoveryKeyViewState, state = state.recoveryKeyViewState,
onClick = null, onClick = null,
onChange = onChange, onChange = onChange,
onSubmit = onSubmit,
) )
} }

1
features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupView.kt

@ -192,6 +192,7 @@ private fun Content(
state = state, state = state,
onClick = onClick, onClick = onClick,
onChange = null, onChange = null,
onSubmit = null,
) )
} }

23
features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt

@ -25,12 +25,15 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.progressSemantics import androidx.compose.foundation.progressSemantics
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@ -52,6 +55,7 @@ internal fun RecoveryKeyView(
state: RecoveryKeyViewState, state: RecoveryKeyViewState,
onClick: (() -> Unit)?, onClick: (() -> Unit)?,
onChange: ((String) -> Unit)?, onChange: ((String) -> Unit)?,
onSubmit: (() -> Unit)?,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
Column( Column(
@ -63,7 +67,7 @@ internal fun RecoveryKeyView(
modifier = Modifier.padding(start = 16.dp), modifier = Modifier.padding(start = 16.dp),
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
) )
RecoveryKeyContent(state, onClick, onChange) RecoveryKeyContent(state, onClick, onChange, onSubmit)
RecoveryKeyFooter(state) RecoveryKeyFooter(state)
} }
} }
@ -73,11 +77,12 @@ private fun RecoveryKeyContent(
state: RecoveryKeyViewState, state: RecoveryKeyViewState,
onClick: (() -> Unit)?, onClick: (() -> Unit)?,
onChange: ((String) -> Unit)?, onChange: ((String) -> Unit)?,
onSubmit: (() -> Unit)?,
) { ) {
when (state.recoveryKeyUserStory) { when (state.recoveryKeyUserStory) {
RecoveryKeyUserStory.Setup, RecoveryKeyUserStory.Setup,
RecoveryKeyUserStory.Change -> RecoveryKeyStaticContent(state, onClick) RecoveryKeyUserStory.Change -> RecoveryKeyStaticContent(state, onClick)
RecoveryKeyUserStory.Enter -> RecoveryKeyFormContent(state, onChange) RecoveryKeyUserStory.Enter -> RecoveryKeyFormContent(state, onChange, onSubmit)
} }
} }
@ -143,8 +148,13 @@ private fun RecoveryKeyStaticContent(
} }
@Composable @Composable
private fun RecoveryKeyFormContent(state: RecoveryKeyViewState, onChange: ((String) -> Unit)?) { private fun RecoveryKeyFormContent(
state: RecoveryKeyViewState,
onChange: ((String) -> Unit)?,
onSubmit: (() -> Unit)?,
) {
onChange ?: error("onChange should not be null") onChange ?: error("onChange should not be null")
onSubmit ?: error("onSubmit should not be null")
val recoveryKeyVisualTransformation = remember { val recoveryKeyVisualTransformation = remember {
RecoveryKeyVisualTransformation() RecoveryKeyVisualTransformation()
} }
@ -155,6 +165,12 @@ private fun RecoveryKeyFormContent(state: RecoveryKeyViewState, onChange: ((Stri
onValueChange = onChange, onValueChange = onChange,
enabled = state.inProgress.not(), enabled = state.inProgress.not(),
visualTransformation = recoveryKeyVisualTransformation, visualTransformation = recoveryKeyVisualTransformation,
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Done,
),
keyboardActions = KeyboardActions(
onDone = { onSubmit() }
),
label = { Text(text = stringResource(id = R.string.screen_recovery_key_confirm_key_placeholder)) } label = { Text(text = stringResource(id = R.string.screen_recovery_key_confirm_key_placeholder)) }
) )
} }
@ -217,5 +233,6 @@ internal fun RecoveryKeyViewPreview(
state = state, state = state,
onClick = {}, onClick = {},
onChange = {}, onChange = {},
onSubmit = {},
) )
} }

Loading…
Cancel
Save