@@ -4,29 +4,63 @@ import android.widget.Toast
44import androidx.compose.foundation.clickable
55import androidx.compose.foundation.layout.Column
66import androidx.compose.foundation.layout.padding
7+ import androidx.compose.material3.AlertDialog
78import androidx.compose.material3.CenterAlignedTopAppBar
89import androidx.compose.material3.ExperimentalMaterial3Api
910import androidx.compose.material3.HorizontalDivider
1011import androidx.compose.material3.ListItem
1112import androidx.compose.material3.MaterialTheme
1213import androidx.compose.material3.Scaffold
1314import androidx.compose.material3.Text
15+ import androidx.compose.material3.TextButton
1416import androidx.compose.runtime.Composable
1517import androidx.compose.runtime.collectAsState
1618import androidx.compose.runtime.getValue
19+ import androidx.compose.runtime.mutableStateOf
20+ import androidx.compose.runtime.remember
21+ import androidx.compose.runtime.setValue
1722import androidx.compose.ui.Modifier
1823import androidx.compose.ui.platform.LocalContext
1924import app.myfaq.shared.data.ActiveInstanceManager
25+ import app.myfaq.shared.data.MyFaqDatabase
2026import org.koin.compose.koinInject
2127
2228@OptIn(ExperimentalMaterial3Api ::class )
2329@Composable
2430fun SettingsScreen (
2531 onSwitchInstance : () -> Unit ,
2632 aim : ActiveInstanceManager = koinInject(),
33+ db : MyFaqDatabase = koinInject(),
2734) {
2835 val context = LocalContext .current
2936 val activeInstance by aim.activeInstance.collectAsState()
37+ var showDeleteConfirmation by remember { mutableStateOf(false ) }
38+
39+ // Delete confirmation dialog
40+ if (showDeleteConfirmation) {
41+ activeInstance?.let { instance ->
42+ AlertDialog (
43+ onDismissRequest = { showDeleteConfirmation = false },
44+ title = { Text (" Delete Instance" ) },
45+ text = { Text (" Are you sure you want to delete \" ${instance.displayName} \" ? This cannot be undone." ) },
46+ confirmButton = {
47+ TextButton (onClick = {
48+ db.instancesQueries.deleteById(instance.id)
49+ aim.clear()
50+ showDeleteConfirmation = false
51+ onSwitchInstance()
52+ }) {
53+ Text (" Delete" , color = MaterialTheme .colorScheme.error)
54+ }
55+ },
56+ dismissButton = {
57+ TextButton (onClick = { showDeleteConfirmation = false }) {
58+ Text (" Cancel" )
59+ }
60+ },
61+ )
62+ }
63+ }
3064
3165 Scaffold (
3266 topBar = {
@@ -65,6 +99,20 @@ fun SettingsScreen(
6599 )
66100 HorizontalDivider ()
67101
102+ // Delete instance
103+ if (activeInstance != null ) {
104+ ListItem (
105+ headlineContent = {
106+ Text (
107+ text = " Delete instance" ,
108+ color = MaterialTheme .colorScheme.error,
109+ )
110+ },
111+ modifier = Modifier .clickable { showDeleteConfirmation = true },
112+ )
113+ HorizontalDivider ()
114+ }
115+
68116 // App version
69117 ListItem (
70118 headlineContent = { Text (" App version" ) },
0 commit comments