Add support for SAS verification with numbers.
This commit is contained in:
parent
cc41cf6432
commit
d422bbca50
3 changed files with 41 additions and 12 deletions
|
|
@ -29,10 +29,10 @@ open class VerifySelfSessionStateProvider : PreviewParameterProvider<VerifySelfS
|
||||||
verificationFlowStep = VerifySelfSessionState.VerificationStep.AwaitingOtherDeviceResponse
|
verificationFlowStep = VerifySelfSessionState.VerificationStep.AwaitingOtherDeviceResponse
|
||||||
),
|
),
|
||||||
aVerifySelfSessionState().copy(
|
aVerifySelfSessionState().copy(
|
||||||
verificationFlowStep = VerifySelfSessionState.VerificationStep.Verifying(aSessionVerificationData(), Async.Uninitialized)
|
verificationFlowStep = VerifySelfSessionState.VerificationStep.Verifying(aEmojisSessionVerificationData(), Async.Uninitialized)
|
||||||
),
|
),
|
||||||
aVerifySelfSessionState().copy(
|
aVerifySelfSessionState().copy(
|
||||||
verificationFlowStep = VerifySelfSessionState.VerificationStep.Verifying(aSessionVerificationData(), Async.Loading())
|
verificationFlowStep = VerifySelfSessionState.VerificationStep.Verifying(aEmojisSessionVerificationData(), Async.Loading())
|
||||||
),
|
),
|
||||||
aVerifySelfSessionState().copy(
|
aVerifySelfSessionState().copy(
|
||||||
verificationFlowStep = VerifySelfSessionState.VerificationStep.Canceled
|
verificationFlowStep = VerifySelfSessionState.VerificationStep.Canceled
|
||||||
|
|
@ -40,19 +40,23 @@ open class VerifySelfSessionStateProvider : PreviewParameterProvider<VerifySelfS
|
||||||
aVerifySelfSessionState().copy(
|
aVerifySelfSessionState().copy(
|
||||||
verificationFlowStep = VerifySelfSessionState.VerificationStep.Ready
|
verificationFlowStep = VerifySelfSessionState.VerificationStep.Ready
|
||||||
),
|
),
|
||||||
|
aVerifySelfSessionState().copy(
|
||||||
|
verificationFlowStep = VerifySelfSessionState.VerificationStep.Verifying(aDecimalsSessionVerificationData(), Async.Uninitialized)
|
||||||
|
),
|
||||||
// Add other state here
|
// Add other state here
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun aSessionVerificationData(
|
private fun aEmojisSessionVerificationData(
|
||||||
emojiList: List<VerificationEmoji> = aVerificationEmojiList(),
|
emojiList: List<VerificationEmoji> = aVerificationEmojiList(),
|
||||||
decimals: List<Int> = emptyList(),
|
|
||||||
): SessionVerificationData {
|
): SessionVerificationData {
|
||||||
return if (emojiList.isEmpty()) {
|
return SessionVerificationData.Emojis(emojiList)
|
||||||
SessionVerificationData.Decimals(decimals)
|
}
|
||||||
} else {
|
|
||||||
SessionVerificationData.Emojis(emojiList)
|
private fun aDecimalsSessionVerificationData(
|
||||||
}
|
decimals: List<Int> = listOf(123, 456, 789),
|
||||||
|
): SessionVerificationData {
|
||||||
|
return SessionVerificationData.Decimals(decimals)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun aVerifySelfSessionState() = VerifySelfSessionState(
|
private fun aVerifySelfSessionState() = VerifySelfSessionState(
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package io.element.android.features.verifysession.impl
|
||||||
import androidx.activity.compose.BackHandler
|
import androidx.activity.compose.BackHandler
|
||||||
import androidx.compose.foundation.Image
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
|
@ -104,14 +105,23 @@ private fun HeaderContent(verificationFlowStep: FlowStep, modifier: Modifier = M
|
||||||
FlowStep.Initial -> R.string.screen_session_verification_open_existing_session_title
|
FlowStep.Initial -> R.string.screen_session_verification_open_existing_session_title
|
||||||
FlowStep.Canceled -> CommonStrings.common_verification_cancelled
|
FlowStep.Canceled -> CommonStrings.common_verification_cancelled
|
||||||
FlowStep.AwaitingOtherDeviceResponse -> R.string.screen_session_verification_waiting_to_accept_title
|
FlowStep.AwaitingOtherDeviceResponse -> R.string.screen_session_verification_waiting_to_accept_title
|
||||||
FlowStep.Ready, is FlowStep.Verifying, FlowStep.Completed -> R.string.screen_session_verification_compare_emojis_title
|
FlowStep.Ready,
|
||||||
|
FlowStep.Completed -> R.string.screen_session_verification_compare_emojis_title
|
||||||
|
is FlowStep.Verifying -> when (verificationFlowStep.data) {
|
||||||
|
is SessionVerificationData.Decimals -> R.string.screen_session_verification_compare_numbers_title
|
||||||
|
is SessionVerificationData.Emojis -> R.string.screen_session_verification_compare_emojis_title
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val subtitleTextId = when (verificationFlowStep) {
|
val subtitleTextId = when (verificationFlowStep) {
|
||||||
FlowStep.Initial -> R.string.screen_session_verification_open_existing_session_subtitle
|
FlowStep.Initial -> R.string.screen_session_verification_open_existing_session_subtitle
|
||||||
FlowStep.Canceled -> R.string.screen_session_verification_cancelled_subtitle
|
FlowStep.Canceled -> R.string.screen_session_verification_cancelled_subtitle
|
||||||
FlowStep.AwaitingOtherDeviceResponse -> R.string.screen_session_verification_waiting_to_accept_subtitle
|
FlowStep.AwaitingOtherDeviceResponse -> R.string.screen_session_verification_waiting_to_accept_subtitle
|
||||||
is FlowStep.Verifying, FlowStep.Completed -> R.string.screen_session_verification_compare_emojis_subtitle
|
|
||||||
FlowStep.Ready -> R.string.screen_session_verification_ready_subtitle
|
FlowStep.Ready -> R.string.screen_session_verification_ready_subtitle
|
||||||
|
FlowStep.Completed -> R.string.screen_session_verification_compare_emojis_subtitle
|
||||||
|
is FlowStep.Verifying -> when (verificationFlowStep.data) {
|
||||||
|
is SessionVerificationData.Decimals -> R.string.screen_session_verification_compare_numbers_subtitle
|
||||||
|
is SessionVerificationData.Emojis -> R.string.screen_session_verification_compare_emojis_subtitle
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IconTitleSubtitleMolecule(
|
IconTitleSubtitleMolecule(
|
||||||
|
|
@ -143,7 +153,20 @@ private fun ContentWaiting(modifier: Modifier = Modifier) {
|
||||||
@Composable
|
@Composable
|
||||||
private fun ContentVerifying(verificationFlowStep: FlowStep.Verifying, modifier: Modifier = Modifier) {
|
private fun ContentVerifying(verificationFlowStep: FlowStep.Verifying, modifier: Modifier = Modifier) {
|
||||||
when (verificationFlowStep.data) {
|
when (verificationFlowStep.data) {
|
||||||
is SessionVerificationData.Decimals -> Unit // TODO Render decimals
|
is SessionVerificationData.Decimals -> {
|
||||||
|
val text = verificationFlowStep.data.decimals.joinToString(separator = " - ") { it.toString() }
|
||||||
|
Box(
|
||||||
|
modifier = modifier.fillMaxWidth(),
|
||||||
|
contentAlignment = Alignment.Center,
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
text = text,
|
||||||
|
style = ElementTheme.typography.fontHeadingLgBold,
|
||||||
|
color = MaterialTheme.colorScheme.primary,
|
||||||
|
maxLines = 1,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
is SessionVerificationData.Emojis -> {
|
is SessionVerificationData.Emojis -> {
|
||||||
// We want each row to have up to 4 emojis
|
// We want each row to have up to 4 emojis
|
||||||
val rows = verificationFlowStep.data.emojis.chunked(4)
|
val rows = verificationFlowStep.data.emojis.chunked(4)
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
<string name="screen_session_verification_cancelled_subtitle">"Something doesn’t seem right. Either the request timed out or the request was denied."</string>
|
<string name="screen_session_verification_cancelled_subtitle">"Something doesn’t seem right. Either the request timed out or the request was denied."</string>
|
||||||
<string name="screen_session_verification_compare_emojis_subtitle">"Confirm that the emojis below match those shown on your other session."</string>
|
<string name="screen_session_verification_compare_emojis_subtitle">"Confirm that the emojis below match those shown on your other session."</string>
|
||||||
<string name="screen_session_verification_compare_emojis_title">"Compare emojis"</string>
|
<string name="screen_session_verification_compare_emojis_title">"Compare emojis"</string>
|
||||||
|
<string name="screen_session_verification_compare_numbers_subtitle">"Confirm that the numbers below match those shown on your other session."</string>
|
||||||
|
<string name="screen_session_verification_compare_numbers_title">"Compare numbers"</string>
|
||||||
<string name="screen_session_verification_complete_subtitle">"Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted."</string>
|
<string name="screen_session_verification_complete_subtitle">"Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted."</string>
|
||||||
<string name="screen_session_verification_open_existing_session_subtitle">"Prove it’s you in order to access your encrypted message history."</string>
|
<string name="screen_session_verification_open_existing_session_subtitle">"Prove it’s you in order to access your encrypted message history."</string>
|
||||||
<string name="screen_session_verification_open_existing_session_title">"Open an existing session"</string>
|
<string name="screen_session_verification_open_existing_session_title">"Open an existing session"</string>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue