From 0e9195051984f71c7580a2099dc01706ee0b2f8e Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Sat, 31 Dec 2022 16:02:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=A4=9C=E9=97=B4?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/huanchengfly/tieba/post/DataStore.kt | 20 ++++++++++++++++++- .../tieba/post/utils/AppPreferencesUtils.kt | 3 +-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/DataStore.kt b/app/src/main/java/com/huanchengfly/tieba/post/DataStore.kt index d585e795..74358169 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/DataStore.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/DataStore.kt @@ -1,9 +1,11 @@ package com.huanchengfly.tieba.post +import android.annotation.SuppressLint import android.content.Context import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.collectAsState +import androidx.datastore.core.DataMigration import androidx.datastore.core.DataStore import androidx.datastore.preferences.SharedPreferencesMigration import androidx.datastore.preferences.core.* @@ -23,10 +25,26 @@ object DataStoreConst { val Context.dataStore: DataStore by preferencesDataStore( name = DataStoreConst.DATA_STORE_NAME, produceMigrations = { context -> - listOf(SharedPreferencesMigration(context, "settings")) + listOf( + SharedPreferencesMigration(context, "settings"), + object : DataMigration { + override suspend fun cleanUp() {} + + override suspend fun migrate(currentData: Preferences): Preferences { + return currentData.toMutablePreferences().apply { + set(stringPreferencesKey("dark_theme"), "grey_dark") + }.toPreferences() + } + + override suspend fun shouldMigrate(currentData: Preferences): Boolean { + return currentData[stringPreferencesKey("dark_theme")] == "dark" + } + } + ) } ) +@SuppressLint("FlowOperatorInvokedInComposition") @Composable fun DataStore.collectPreferenceAsState(key: Preferences.Key, defaultValue: T): State { return data.map { it[key] ?: defaultValue }.collectAsState(initial = defaultValue) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt index 885b55c2..46710320 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt @@ -70,7 +70,7 @@ open class AppPreferencesUtils(context: Context) { defaultValue = "0" ) - var darkTheme by DataStoreDelegates.string(key = "dark_theme", defaultValue = "dark") + var darkTheme by DataStoreDelegates.string(key = "dark_theme", defaultValue = "grey_dark") var followSystemNight by DataStoreDelegates.boolean( defaultValue = true, @@ -365,7 +365,6 @@ open class AppPreferencesUtils(context: Context) { } } } - } val Context.appPreferences: AppPreferencesUtils