From ada00cfed8e16f4a1319fbe926ea15fca022b80e Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Thu, 26 Jan 2023 14:54:47 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E4=BF=AE=E6=94=B9=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=8D=A1=E9=A1=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tieba/post/ui/common/prefs/widgets/ListPref.kt | 5 ++++- .../tieba/post/ui/common/prefs/widgets/SwitchPref.kt | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/common/prefs/widgets/ListPref.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/common/prefs/widgets/ListPref.kt index 3c02706f..a17baf37 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/common/prefs/widgets/ListPref.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/common/prefs/widgets/ListPref.kt @@ -65,12 +65,15 @@ fun ListPref( prefs?.get(selectionKey)?.also { selected = it } // starting value if it exists in datastore fun edit(current: Pair) = run { + scope.launch { + selected = current.first + onValueChange?.invoke(current.first) + } scope.launch { try { datastore.edit { preferences -> preferences[selectionKey] = current.first } - onValueChange?.invoke(current.first) } catch (e: Exception) { Log.e("ListPref", "Could not write pref $key to database. ${e.printStackTrace()}") } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/common/prefs/widgets/SwitchPref.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/common/prefs/widgets/SwitchPref.kt index c314f043..3191113d 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/common/prefs/widgets/SwitchPref.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/common/prefs/widgets/SwitchPref.kt @@ -3,7 +3,11 @@ package com.huanchengfly.tieba.post.ui.common.prefs.widgets import android.util.Log import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.MaterialTheme -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.datastore.preferences.core.booleanPreferencesKey @@ -35,13 +39,15 @@ fun SwitchPref( prefs?.get(selectionKey)?.also { checked = it } // starting value if it exists in datastore fun edit(newState: Boolean) = run { + scope.launch { + checked = newState + onCheckedChange?.invoke(newState) + } scope.launch { try { datastore.edit { preferences -> preferences[selectionKey] = newState } - checked = newState - onCheckedChange?.invoke(newState) } catch (e: Exception) { Log.e("SwitchPref", "Could not write pref $key to database. ${e.printStackTrace()}") }