summaryrefslogtreecommitdiff
path: root/android/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/java/org/terst/doot/widget/ui/SettingsActivity.kt31
1 files changed, 25 insertions, 6 deletions
diff --git a/android/app/src/main/java/org/terst/doot/widget/ui/SettingsActivity.kt b/android/app/src/main/java/org/terst/doot/widget/ui/SettingsActivity.kt
index 485c067..fb7d773 100644
--- a/android/app/src/main/java/org/terst/doot/widget/ui/SettingsActivity.kt
+++ b/android/app/src/main/java/org/terst/doot/widget/ui/SettingsActivity.kt
@@ -41,24 +41,27 @@ class SettingsActivity : ComponentActivity() {
val scope = rememberCoroutineScope()
var savedUrl by remember { mutableStateOf("") }
var savedToken by remember { mutableStateOf("") }
+ var savedTextSize by remember { mutableStateOf(WidgetTextSize.NORMAL) }
LaunchedEffect(Unit) {
val prefs = dataStore.data.first()
savedUrl = prefs[Keys.SERVER_URL] ?: ""
savedToken = prefs[Keys.TOKEN] ?: ""
+ savedTextSize = WidgetTextSize.fromPref(prefs[Keys.TEXT_SIZE])
}
SettingsScreen(
initialUrl = savedUrl,
initialToken = savedToken,
- onSave = { url, token ->
+ initialTextSize = savedTextSize,
+ onSave = { url, token, textSize ->
lifecycleScope.launch {
- saveAndFinish(url, token, appWidgetId)
+ saveAndFinish(url, token, textSize, appWidgetId)
}
},
onTest = { url, token, onResult ->
scope.launch {
- val repo = WidgetRepository(OkHttpClient(), url.trimEnd('/'), token)
+ val repo = WidgetRepository(OkHttpClient(), url, token)
repo.fetchRaw().fold(
onSuccess = { onResult("✓ Connected (${it.items.size} items)") },
onFailure = { onResult("✗ ${it.message}") }
@@ -70,10 +73,11 @@ class SettingsActivity : ComponentActivity() {
}
}
- private suspend fun saveAndFinish(url: String, token: String, appWidgetId: Int) {
+ private suspend fun saveAndFinish(url: String, token: String, textSize: WidgetTextSize, appWidgetId: Int) {
dataStore.edit { prefs ->
prefs[Keys.SERVER_URL] = url.trimEnd('/')
prefs[Keys.TOKEN] = token
+ prefs[Keys.TEXT_SIZE] = textSize.name
}
RefreshWorker.schedule(this)
RefreshWorker.runOnce(this)
@@ -91,11 +95,13 @@ class SettingsActivity : ComponentActivity() {
fun SettingsScreen(
initialUrl: String = "",
initialToken: String = "",
- onSave: (url: String, token: String) -> Unit,
+ initialTextSize: WidgetTextSize = WidgetTextSize.NORMAL,
+ onSave: (url: String, token: String, textSize: WidgetTextSize) -> Unit,
onTest: (url: String, token: String, onResult: (String) -> Unit) -> Unit
) {
var url by remember(initialUrl) { mutableStateOf(initialUrl) }
var token by remember(initialToken) { mutableStateOf(initialToken) }
+ var textSize by remember(initialTextSize) { mutableStateOf(initialTextSize) }
var status by remember { mutableStateOf("") }
var testing by remember { mutableStateOf(false) }
@@ -132,6 +138,19 @@ fun SettingsScreen(
singleLine = true
)
+ Column(verticalArrangement = Arrangement.spacedBy(4.dp)) {
+ Text("Text Size", style = MaterialTheme.typography.labelLarge)
+ Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
+ WidgetTextSize.entries.forEach { option ->
+ FilterChip(
+ selected = textSize == option,
+ onClick = { textSize = option },
+ label = { Text(option.name.lowercase().replaceFirstChar { it.uppercase() }) }
+ )
+ }
+ }
+ }
+
if (status.isNotEmpty()) {
Text(
status,
@@ -159,7 +178,7 @@ fun SettingsScreen(
}
Button(
- onClick = { onSave(url, token) },
+ onClick = { onSave(url, token, textSize) },
enabled = url.isNotBlank() && token.isNotBlank()
) {
Text("Save")