fix: dataStore逻辑
This commit is contained in:
@@ -4,6 +4,7 @@ import android.content.SharedPreferences
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import io.legado.app.BuildConfig
|
import io.legado.app.BuildConfig
|
||||||
import io.legado.app.constant.PreferKey
|
import io.legado.app.constant.PreferKey
|
||||||
|
import io.legado.app.ui.config.themeConfig.ThemeConfig
|
||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.data.repository.ReadPreferences
|
import io.legado.app.data.repository.ReadPreferences
|
||||||
import io.legado.app.ui.book.manga.config.MangaScrollMode
|
import io.legado.app.ui.book.manga.config.MangaScrollMode
|
||||||
@@ -50,7 +51,7 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
var mangaClickActionBC = appCtx.getPrefInt(PreferKey.mangaClickActionBC, 1)
|
var mangaClickActionBC = appCtx.getPrefInt(PreferKey.mangaClickActionBC, 1)
|
||||||
var mangaClickActionBR = appCtx.getPrefInt(PreferKey.mangaClickActionBR, 1)
|
var mangaClickActionBR = appCtx.getPrefInt(PreferKey.mangaClickActionBR, 1)
|
||||||
|
|
||||||
var themeMode = appCtx.getPrefString(PreferKey.themeMode, "0")
|
val themeMode get() = ThemeConfig.themeMode
|
||||||
var AppTheme = appCtx.getPrefString(PreferKey.appTheme, "0")
|
var AppTheme = appCtx.getPrefString(PreferKey.appTheme, "0")
|
||||||
|
|
||||||
var swipeAnimation = appCtx.getPrefBoolean(PreferKey.swipeAnimation, true)
|
var swipeAnimation = appCtx.getPrefBoolean(PreferKey.swipeAnimation, true)
|
||||||
@@ -205,10 +206,6 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
AppTheme = appCtx.getPrefString(PreferKey.appTheme, "0")
|
AppTheme = appCtx.getPrefString(PreferKey.appTheme, "0")
|
||||||
}
|
}
|
||||||
|
|
||||||
PreferKey.themeMode -> {
|
|
||||||
themeMode = appCtx.getPrefString(PreferKey.themeMode, "0")
|
|
||||||
}
|
|
||||||
|
|
||||||
PreferKey.clickActionTL -> clickActionTL =
|
PreferKey.clickActionTL -> clickActionTL =
|
||||||
appCtx.getPrefInt(PreferKey.clickActionTL, 2)
|
appCtx.getPrefInt(PreferKey.clickActionTL, 2)
|
||||||
|
|
||||||
|
|||||||
@@ -2587,8 +2587,6 @@ class ReadBookViewModel(
|
|||||||
else -> "0" // dark → follow system
|
else -> "0" // dark → follow system
|
||||||
}
|
}
|
||||||
ThemeConfig.themeMode = nextMode
|
ThemeConfig.themeMode = nextMode
|
||||||
// 同步更新 AppConfig 缓存,确保 View 层 ReadStyleResolver 立即读到新值
|
|
||||||
AppConfig.themeMode = nextMode
|
|
||||||
_uiState.update { it.copy(styleConfig = buildStyleConfig()) }
|
_uiState.update { it.copy(styleConfig = buildStyleConfig()) }
|
||||||
_effects.tryEmit(ReadBookEffect.UpdateReadViewConfig(
|
_effects.tryEmit(ReadBookEffect.UpdateReadViewConfig(
|
||||||
setOf(
|
setOf(
|
||||||
|
|||||||
@@ -125,14 +125,17 @@ fun <T> prefDelegate(
|
|||||||
is Long -> appCtx.putPrefLong(key, value)
|
is Long -> appCtx.putPrefLong(key, value)
|
||||||
is Float -> appCtx.putPrefFloat(key, value)
|
is Float -> appCtx.putPrefFloat(key, value)
|
||||||
}
|
}
|
||||||
// 同步写入 DataStore(权威存储),确保持久化后再返回
|
// 同步写入 DataStore,确保持久化后再返回
|
||||||
runBlocking(Dispatchers.IO) {
|
// 异常不阻断流程:SP 已写入,readFromDs() 会回退到 SP 读取
|
||||||
when (value) {
|
runCatching {
|
||||||
is String? -> DsSync.putString(key, value)
|
runBlocking(Dispatchers.IO) {
|
||||||
is Int -> DsSync.putInt(key, value)
|
when (value) {
|
||||||
is Boolean -> DsSync.putBoolean(key, value)
|
is String? -> DsSync.putString(key, value)
|
||||||
is Long -> DsSync.putLong(key, value)
|
is Int -> DsSync.putInt(key, value)
|
||||||
is Float -> DsSync.putFloat(key, value)
|
is Boolean -> DsSync.putBoolean(key, value)
|
||||||
|
is Long -> DsSync.putLong(key, value)
|
||||||
|
is Float -> DsSync.putFloat(key, value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onValueChange?.invoke(value)
|
onValueChange?.invoke(value)
|
||||||
|
|||||||
Reference in New Issue
Block a user