Skip to content

Commit 3b7c8b6

Browse files
committed
fix some android app stuff
1 parent 7c128f9 commit 3b7c8b6

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

wordbase-android/app/src/main/java/io/github/aecsocket/wordbase/AnkiPage.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,14 @@ fun AnkiPagePreview() {
4949
model = model,
5050
models = models,
5151
onModelChange = { model = it },
52+
enabled = true,
5253
)
5354
}
5455

5556
@Composable
56-
fun AnkiPageApp() {
57+
fun AnkiPageApp(
58+
enabled: Boolean,
59+
) {
5760
val context = LocalContext.current
5861
val app = context.app()
5962
val wordbase by rememberWordbase()
@@ -83,6 +86,7 @@ fun AnkiPageApp() {
8386
}
8487
}
8588
},
89+
enabled = enabled,
8690
)
8791
} ?: run {
8892
Column(
@@ -120,6 +124,7 @@ fun AnkiPage(
120124
model: String,
121125
models: List<String>,
122126
onModelChange: (String) -> Unit,
127+
enabled: Boolean,
123128
) {
124129
Column(
125130
verticalArrangement = Arrangement.spacedBy(8.dp),
@@ -133,6 +138,7 @@ fun AnkiPage(
133138
selected = deck,
134139
options = decks,
135140
onSelectedChange = onDeckChange,
141+
enabled = enabled,
136142
)
137143

138144
DropdownField(
@@ -144,6 +150,7 @@ fun AnkiPage(
144150
selected = model,
145151
options = models,
146152
onSelectedChange = onModelChange,
153+
enabled = enabled,
147154
)
148155
}
149156
}
@@ -155,6 +162,7 @@ fun DropdownField(
155162
selected: String,
156163
options: List<String>,
157164
onSelectedChange: (String) -> Unit,
165+
enabled: Boolean = true,
158166
) {
159167
var expanded by remember { mutableStateOf(false) }
160168
ExposedDropdownMenuBox(
@@ -172,6 +180,7 @@ fun DropdownField(
172180
label = label,
173181
trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) },
174182
colors = ExposedDropdownMenuDefaults.textFieldColors(),
183+
enabled = enabled,
175184
)
176185

177186
ExposedDropdownMenu(
@@ -180,6 +189,7 @@ fun DropdownField(
180189
) {
181190
options.forEach {
182191
DropdownMenuItem(
192+
enabled = enabled,
183193
text = { Text(text = it) },
184194
onClick = {
185195
onSelectedChange(it)

wordbase-android/app/src/main/java/io/github/aecsocket/wordbase/ManagePage.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import androidx.compose.material3.Text
5555
import androidx.compose.material3.TextButton
5656
import androidx.compose.material3.TextField
5757
import androidx.compose.runtime.Composable
58+
import androidx.compose.runtime.derivedStateOf
5859
import androidx.compose.runtime.getValue
5960
import androidx.compose.runtime.mutableStateOf
6061
import androidx.compose.runtime.remember
@@ -214,6 +215,7 @@ fun AppManagePage(modifier: Modifier = Modifier) {
214215
// to avoid locking the UI on every tiny change.
215216
// TODO: This is effectively a hand-rolled mutex. Can we use an actual mutex somehow?
216217
var locked by remember { mutableStateOf(false) }
218+
val enabled by remember { derivedStateOf { !locked } }
217219

218220
var importState by remember { mutableStateOf<DictionaryImport?>(null) }
219221

@@ -290,7 +292,7 @@ fun AppManagePage(modifier: Modifier = Modifier) {
290292

291293
ManagePage(
292294
modifier = modifier,
293-
enabled = !locked,
295+
enabled = enabled,
294296
profile = profile,
295297
dictionaries = app.dictionaries.values.sortedBy { it.position },
296298
dictionaryImports = importState?.let { listOf(it) } ?: listOf(),
@@ -345,7 +347,11 @@ fun AppManagePage(modifier: Modifier = Modifier) {
345347
)
346348
)
347349
},
348-
anki = { AnkiPageApp() },
350+
anki = {
351+
AnkiPageApp(
352+
enabled = enabled,
353+
)
354+
},
349355
)
350356
}
351357

0 commit comments

Comments
 (0)