Add confirmation dialog before loggong out.

This commit is contained in:
Benoit Marty
2022-11-16 10:56:18 +01:00
parent 5a1737d115
commit c1d7f56870

View File

@@ -3,13 +3,20 @@
package io.element.android.x.features.roomlist.components
import Avatar
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ExitToApp
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import io.element.android.x.core.compose.LogCompositions
import io.element.android.x.features.roomlist.model.MatrixUser
@@ -20,6 +27,7 @@ fun RoomListTopBar(
scrollBehavior: TopAppBarScrollBehavior
) {
LogCompositions(tag = "RoomListScreen", msg = "TopBar")
val openDialog = remember { mutableStateOf(false) }
MediumTopAppBar(
modifier = Modifier
.nestedScroll(scrollBehavior.nestedScrollConnection),
@@ -38,11 +46,59 @@ fun RoomListTopBar(
},
actions = {
IconButton(
onClick = onLogoutClicked
onClick = { openDialog.value = true }
) {
Icon(Icons.Default.ExitToApp, contentDescription = "logout")
}
},
scrollBehavior = scrollBehavior,
)
}
if (openDialog.value) {
AskLogoutConfirmDialog(onLogoutClicked) {
openDialog.value = false
}
}
}
@Composable
fun AskLogoutConfirmDialog(onLogoutClicked: () -> Unit, onDismiss: () -> Unit) {
AlertDialog(
onDismissRequest = onDismiss,
title = {
Text(text = "Log out")
},
text = {
Text("Do you confirm you want to log out?")
},
confirmButton = {
Row(
modifier = Modifier.padding(all = 8.dp),
horizontalArrangement = Arrangement.Center
) {
Button(
modifier = Modifier.fillMaxWidth(),
onClick = {
onDismiss()
onLogoutClicked()
})
{
Text("Logout")
}
}
},
dismissButton = {
Row(
modifier = Modifier.padding(all = 8.dp),
horizontalArrangement = Arrangement.Center
) {
Button(
modifier = Modifier.fillMaxWidth(),
onClick = onDismiss
)
{
Text("Cancel")
}
}
}
)
}