|
|
@ -24,7 +24,6 @@ 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.runtime.Composable |
|
|
|
import androidx.compose.runtime.Composable |
|
|
|
import androidx.compose.runtime.LaunchedEffect |
|
|
|
|
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.graphics.vector.ImageVector |
|
|
|
import androidx.compose.ui.graphics.vector.ImageVector |
|
|
|
import androidx.compose.ui.res.stringResource |
|
|
|
import androidx.compose.ui.res.stringResource |
|
|
@ -34,11 +33,9 @@ import androidx.compose.ui.unit.dp |
|
|
|
import io.element.android.compound.theme.ElementTheme |
|
|
|
import io.element.android.compound.theme.ElementTheme |
|
|
|
import io.element.android.compound.tokens.generated.CompoundIcons |
|
|
|
import io.element.android.compound.tokens.generated.CompoundIcons |
|
|
|
import io.element.android.features.securebackup.impl.R |
|
|
|
import io.element.android.features.securebackup.impl.R |
|
|
|
import io.element.android.libraries.architecture.AsyncAction |
|
|
|
|
|
|
|
import io.element.android.libraries.architecture.AsyncData |
|
|
|
|
|
|
|
import io.element.android.libraries.designsystem.atomic.pages.FlowStepPage |
|
|
|
import io.element.android.libraries.designsystem.atomic.pages.FlowStepPage |
|
|
|
|
|
|
|
import io.element.android.libraries.designsystem.components.async.AsyncActionView |
|
|
|
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.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 |
|
|
@ -53,11 +50,6 @@ fun SecureBackupDisableView( |
|
|
|
onBackClicked: () -> Unit, |
|
|
|
onBackClicked: () -> Unit, |
|
|
|
modifier: Modifier = Modifier, |
|
|
|
modifier: Modifier = Modifier, |
|
|
|
) { |
|
|
|
) { |
|
|
|
LaunchedEffect(state.disableAction) { |
|
|
|
|
|
|
|
if (state.disableAction is AsyncAction.Success) { |
|
|
|
|
|
|
|
onDone() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
FlowStepPage( |
|
|
|
FlowStepPage( |
|
|
|
modifier = modifier, |
|
|
|
modifier = modifier, |
|
|
|
onBackClicked = onBackClicked, |
|
|
|
onBackClicked = onBackClicked, |
|
|
@ -68,17 +60,19 @@ fun SecureBackupDisableView( |
|
|
|
buttons = { Buttons(state = state) }, |
|
|
|
buttons = { Buttons(state = state) }, |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
if (state.showConfirmationDialog) { |
|
|
|
AsyncActionView( |
|
|
|
SecureBackupDisableConfirmationDialog( |
|
|
|
async = state.disableAction, |
|
|
|
onConfirm = { state.eventSink.invoke(SecureBackupDisableEvents.DisableBackup(force = true)) }, |
|
|
|
confirmingDialog = { |
|
|
|
onDismiss = { state.eventSink.invoke(SecureBackupDisableEvents.DismissDialogs) }, |
|
|
|
SecureBackupDisableConfirmationDialog( |
|
|
|
) |
|
|
|
onConfirm = { state.eventSink.invoke(SecureBackupDisableEvents.DisableBackup) }, |
|
|
|
} else if (state.disableAction is AsyncAction.Failure) { |
|
|
|
onDismiss = { state.eventSink.invoke(SecureBackupDisableEvents.DismissDialogs) }, |
|
|
|
ErrorDialog( |
|
|
|
) |
|
|
|
content = state.disableAction.error.let { it.message ?: it.toString() }, |
|
|
|
}, |
|
|
|
onDismiss = { state.eventSink.invoke(SecureBackupDisableEvents.DismissDialogs) }, |
|
|
|
progressDialog = {}, |
|
|
|
) |
|
|
|
errorMessage = { it.message ?: it.toString() }, |
|
|
|
} |
|
|
|
onErrorDismiss = { state.eventSink.invoke(SecureBackupDisableEvents.DismissDialogs) }, |
|
|
|
|
|
|
|
onSuccess = { onDone() }, |
|
|
|
|
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Composable |
|
|
|
@Composable |
|
|
@ -102,7 +96,7 @@ private fun ColumnScope.Buttons( |
|
|
|
showProgress = state.disableAction.isLoading(), |
|
|
|
showProgress = state.disableAction.isLoading(), |
|
|
|
destructive = true, |
|
|
|
destructive = true, |
|
|
|
modifier = Modifier.fillMaxWidth(), |
|
|
|
modifier = Modifier.fillMaxWidth(), |
|
|
|
onClick = { state.eventSink.invoke(SecureBackupDisableEvents.DisableBackup(force = false)) } |
|
|
|
onClick = { state.eventSink.invoke(SecureBackupDisableEvents.DisableBackup) } |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|