Let SecureBackupDisableView use UserStoryFlowPage.

This commit is contained in:
Benoit Marty 2023-11-03 14:44:44 +01:00 committed by Benoit Marty
parent c57397792c
commit f28d9af2ae

View file

@ -18,11 +18,11 @@ package io.element.android.features.securebackup.impl.disable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -31,10 +31,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.features.securebackup.impl.R import io.element.android.features.securebackup.impl.R
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule import io.element.android.libraries.designsystem.atomic.pages.UserStoryFlowPage
import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule
import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage
import io.element.android.libraries.designsystem.components.button.BackButton
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
@ -42,11 +39,9 @@ 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.Button
import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.components.TopAppBar
import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.theme.ElementTheme import io.element.android.libraries.theme.ElementTheme
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun SecureBackupDisableView( fun SecureBackupDisableView(
state: SecureBackupDisableState, state: SecureBackupDisableState,
@ -59,23 +54,17 @@ fun SecureBackupDisableView(
onDone() onDone()
} }
} }
HeaderFooterPage( UserStoryFlowPage(
modifier = modifier, modifier = modifier,
topBar = { canGoBack = true,
TopAppBar( onBackClicked = onBackClicked,
navigationIcon = { BackButton(onClick = onBackClicked) }, title = stringResource(id = R.string.screen_key_backup_disable_title),
title = {}, subTitle = stringResource(id = R.string.screen_key_backup_disable_description),
iconResourceId = CommonDrawables.ic_key_off,
content = { Content(state = state) },
buttons = { Buttons(state = state) },
) )
},
header = {
HeaderContent()
},
footer = {
BottomMenu(state = state)
}
) {
Content(state = state)
}
if (state.showConfirmationDialog) { if (state.showConfirmationDialog) {
SecureBackupDisableConfirmationDialog( SecureBackupDisableConfirmationDialog(
onConfirm = { state.eventSink.invoke(SecureBackupDisableEvents.DisableBackup(force = true)) }, onConfirm = { state.eventSink.invoke(SecureBackupDisableEvents.DisableBackup(force = true)) },
@ -102,23 +91,8 @@ private fun SecureBackupDisableConfirmationDialog(onConfirm: () -> Unit, onDismi
} }
@Composable @Composable
private fun HeaderContent( private fun ColumnScope.Buttons(
modifier: Modifier = Modifier,
) {
IconTitleSubtitleMolecule(
modifier = modifier.padding(top = 0.dp),
iconResourceId = CommonDrawables.ic_key_off,
title = stringResource(id = R.string.screen_key_backup_disable_title),
subTitle = stringResource(id = R.string.screen_key_backup_disable_description),
)
}
@Composable
private fun BottomMenu(
state: SecureBackupDisableState, state: SecureBackupDisableState,
) {
ButtonColumnMolecule(
modifier = Modifier.padding(bottom = 20.dp)
) { ) {
Button( Button(
text = stringResource(id = R.string.screen_chat_backup_key_backup_action_disable), text = stringResource(id = R.string.screen_chat_backup_key_backup_action_disable),
@ -128,7 +102,6 @@ private fun BottomMenu(
onClick = { state.eventSink.invoke(SecureBackupDisableEvents.DisableBackup(force = false)) } onClick = { state.eventSink.invoke(SecureBackupDisableEvents.DisableBackup(force = false)) }
) )
} }
}
@Composable @Composable
private fun Content(state: SecureBackupDisableState) { private fun Content(state: SecureBackupDisableState) {