Let SecureBackupEnableView use UserStoryFlowPage.

This commit is contained in:
Benoit Marty 2023-11-03 14:52:08 +01:00 committed by Benoit Marty
parent 0e918e9db8
commit 769cafc877
2 changed files with 17 additions and 47 deletions

View file

@ -16,29 +16,22 @@
package io.element.android.features.securebackup.impl.enable package io.element.android.features.securebackup.impl.enable
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
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
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
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.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
import io.element.android.libraries.designsystem.preview.PreviewsDayNight 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.TopAppBar
import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.designsystem.utils.CommonDrawables
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun SecureBackupEnableView( fun SecureBackupEnableView(
state: SecureBackupEnableState, state: SecureBackupEnableState,
@ -51,20 +44,13 @@ fun SecureBackupEnableView(
onDone() onDone()
} }
} }
HeaderFooterPage( UserStoryFlowPage(
modifier = modifier, modifier = modifier,
topBar = { canGoBack = true,
TopAppBar( onBackClicked = onBackClicked,
navigationIcon = { BackButton(onClick = onBackClicked) }, title = stringResource(id = R.string.screen_chat_backup_key_backup_action_enable),
title = {}, iconResourceId = CommonDrawables.ic_key,
) buttons = { Buttons(state = state) }
},
header = {
HeaderContent()
},
footer = {
BottomMenu(state = state)
}
) )
if (state.enableAction is Async.Failure) { if (state.enableAction is Async.Failure) {
ErrorDialog( ErrorDialog(
@ -75,31 +61,15 @@ fun SecureBackupEnableView(
} }
@Composable @Composable
private fun HeaderContent( private fun ColumnScope.Buttons(
modifier: Modifier = Modifier,
) {
IconTitleSubtitleMolecule(
modifier = modifier.padding(top = 0.dp),
iconResourceId = CommonDrawables.ic_key,
title = stringResource(id = R.string.screen_chat_backup_key_backup_action_enable),
subTitle = null,
)
}
@Composable
private fun BottomMenu(
state: SecureBackupEnableState, state: SecureBackupEnableState,
) { ) {
ButtonColumnMolecule( Button(
modifier = Modifier.padding(bottom = 20.dp) text = stringResource(id = R.string.screen_chat_backup_key_backup_action_enable),
) { showProgress = state.enableAction.isLoading(),
Button( modifier = Modifier.fillMaxWidth(),
text = stringResource(id = R.string.screen_chat_backup_key_backup_action_enable), onClick = { state.eventSink.invoke(SecureBackupEnableEvents.EnableBackup) }
showProgress = state.enableAction.isLoading(), )
modifier = Modifier.fillMaxWidth(),
onClick = { state.eventSink.invoke(SecureBackupEnableEvents.EnableBackup) }
)
}
} }
@PreviewsDayNight @PreviewsDayNight

View file

@ -50,10 +50,10 @@ import io.element.android.libraries.theme.ElementTheme
fun UserStoryFlowPage( fun UserStoryFlowPage(
canGoBack: Boolean, canGoBack: Boolean,
onBackClicked: () -> Unit, onBackClicked: () -> Unit,
title: String,
subTitle: String?,
iconResourceId: Int?, iconResourceId: Int?,
title: String,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
subTitle: String? = null,
content: @Composable () -> Unit = {}, content: @Composable () -> Unit = {},
buttons: @Composable ColumnScope.() -> Unit = {}, buttons: @Composable ColumnScope.() -> Unit = {},
) { ) {