Skip to content
Snippets Groups Projects
Verified Commit ec25bb0d authored by Torsten Grote's avatar Torsten Grote Committed by Sebastian
Browse files

Convert MailboxErrorDialog to AlertDialog

parent 89e13b27
No related branches found
No related tags found
1 merge request!304Initial working Mailbox implementation
/*
* Briar Desktop
* Copyright (C) 2021-2022 The Briar Project
* Copyright (C) 2021-2023 The Briar Project
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
......@@ -18,71 +18,54 @@
package org.briarproject.briar.desktop.mailbox
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.AlertDialog
import androidx.compose.material.Button
import androidx.compose.material.Scaffold
import androidx.compose.material.Surface
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.Text
import androidx.compose.material.rememberScaffoldState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberDialogState
import org.briarproject.bramble.api.mailbox.MailboxPairingState
import org.briarproject.briar.desktop.mailbox.MailboxPairingUiState.OfflineWhenPairing
import org.briarproject.briar.desktop.mailbox.MailboxPairingUiState.Pairing
import org.briarproject.briar.desktop.mailbox.MailboxPairingUiState.WasUnpaired
import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
import org.briarproject.briar.desktop.utils.PreviewUtils.preview
import java.awt.Dimension
fun main() = preview {
val visible = mutableStateOf(true)
MailboxErrorDialog(OfflineWhenPairing, visible.value) { visible.value = false }
@Suppress("HardCodedStringLiteral")
fun main() = preview("visible" to true) {
val visible = getBooleanParameter("visible")
MailboxErrorDialog(OfflineWhenPairing, visible) { setBooleanParameter("visible", false) }
}
@Composable
@OptIn(ExperimentalMaterialApi::class)
fun MailboxErrorDialog(
state: MailboxPairingUiState,
visible: Boolean,
onDismissed: () -> Unit,
) {
if (!visible) return
Dialog(
title = i18n("mailbox.setup.error.title"),
onCloseRequest = onDismissed,
state = rememberDialogState(
position = WindowPosition(Alignment.Center),
),
) {
window.minimumSize = Dimension(360, 180)
val scaffoldState = rememberScaffoldState()
Surface {
Scaffold(
modifier = Modifier
.padding(horizontal = 24.dp)
.padding(top = 24.dp, bottom = 12.dp),
scaffoldState = scaffoldState,
content = {
Text(
text = state.getError(),
)
},
bottomBar = {
Button(
onClick = onDismissed,
modifier = Modifier.padding(start = 8.dp)
) {
Text(i18n("ok"))
}
},
)
}
}
AlertDialog(
title = { Text(i18n("mailbox.setup.error.title")) },
onDismissRequest = onDismissed,
text = {
// Add empty box here with a minimum size to prevent overly narrow dialog
Box(modifier = Modifier.defaultMinSize(300.dp))
Text(text = state.getError())
},
confirmButton = {
Button(
onClick = onDismissed,
modifier = Modifier.padding(start = 8.dp)
) {
Text(i18n("ok"))
}
},
)
}
private fun MailboxPairingUiState.getError(): String = when (this) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment