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