@ -19,11 +19,13 @@ package io.element.android.features.verifysession.impl
@@ -19,11 +19,13 @@ package io.element.android.features.verifysession.impl
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
@ -57,6 +59,7 @@ import io.element.android.libraries.designsystem.components.ProgressDialog
@@ -57,6 +59,7 @@ import io.element.android.libraries.designsystem.components.ProgressDialog
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Button
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
import io.element.android.libraries.designsystem.theme.components.OutlinedButton
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.components.TextButton
@ -99,13 +102,24 @@ fun VerifySelfSessionView(
@@ -99,13 +102,24 @@ fun VerifySelfSessionView(
}
}
val verificationFlowStep = state . verificationFlowStep
if ( state . verificationFlowStep is FlowStep . Loading ||
state . verificationFlowStep is FlowStep . Skipped ) {
// Just display a loader in this case, to avoid UI glitch.
Box (
modifier = Modifier . fillMaxSize ( ) ,
contentAlignment = Alignment . Center ,
) {
CircularProgressIndicator ( )
}
} else {
HeaderFooterPage (
modifier = modifier ,
topBar = {
TopAppBar (
title = { } ,
actions = {
if ( state . verificationFlowStep != FlowStep . Completed &&
if ( state . verificationFlowStep !is FlowStep . Completed &&
state . displaySkipButton &&
LocalInspectionMode . current . not ( ) ) {
TextButton (
@ -137,6 +151,7 @@ fun VerifySelfSessionView(
@@ -137,6 +151,7 @@ fun VerifySelfSessionView(
) {
Content ( flowState = verificationFlowStep )
}
}
when ( state . signOutAction ) {
AsyncAction . Loading -> {
@ -157,6 +172,7 @@ fun VerifySelfSessionView(
@@ -157,6 +172,7 @@ fun VerifySelfSessionView(
@Composable
private fun HeaderContent ( verificationFlowStep : FlowStep ) {
val iconStyle = when ( verificationFlowStep ) {
VerifySelfSessionState . VerificationStep . Loading -> error ( " Should not happen " )
is FlowStep . Initial , FlowStep . AwaitingOtherDeviceResponse -> BigIcon . Style . Default ( CompoundIcons . LockSolid ( ) )
FlowStep . Canceled -> BigIcon . Style . AlertSolid
FlowStep . Ready , is FlowStep . Verifying -> BigIcon . Style . Default ( CompoundIcons . Reaction ( ) )
@ -164,6 +180,7 @@ private fun HeaderContent(verificationFlowStep: FlowStep) {
@@ -164,6 +180,7 @@ private fun HeaderContent(verificationFlowStep: FlowStep) {
is FlowStep . Skipped -> return
}
val titleTextId = when ( verificationFlowStep ) {
VerifySelfSessionState . VerificationStep . Loading -> error ( " Should not happen " )
is FlowStep . Initial , FlowStep . AwaitingOtherDeviceResponse -> R . string . screen _identity _confirmation _title
FlowStep . Canceled -> CommonStrings . common _verification _cancelled
FlowStep . Ready -> R . string . screen _session _verification _compare _emojis _title
@ -175,6 +192,7 @@ private fun HeaderContent(verificationFlowStep: FlowStep) {
@@ -175,6 +192,7 @@ private fun HeaderContent(verificationFlowStep: FlowStep) {
is FlowStep . Skipped -> return
}
val subtitleTextId = when ( verificationFlowStep ) {
VerifySelfSessionState . VerificationStep . Loading -> error ( " Should not happen " )
is FlowStep . Initial , FlowStep . AwaitingOtherDeviceResponse -> R . string . screen _identity _confirmation _subtitle
FlowStep . Canceled -> R . string . screen _session _verification _cancelled _subtitle
FlowStep . Ready -> R . string . screen _session _verification _ready _subtitle
@ -268,6 +286,7 @@ private fun BottomMenu(
@@ -268,6 +286,7 @@ private fun BottomMenu(
val isVerifying = ( verificationViewState as ? FlowStep . Verifying ) ?. state is AsyncData . Loading < Unit >
when ( verificationViewState ) {
VerifySelfSessionState . VerificationStep . Loading -> error ( " Should not happen " )
is FlowStep . Initial -> {
BottomMenu {
if ( verificationViewState . isLastDevice ) {