فهرست منبع

refactor: AppConfig.themeMode 改为直接读取 ThemeConfig.themeMode

删除 AppConfig.themeMode 缓存变量,isNightTheme 和 JsExtensions
统一从 ThemeConfig.themeMode(prefDelegate / MutableState)读取,
消除 SP listener 异步同步的时序问题。
HapeLee 5 ماه پیش
والد
کامیت
dced1d364d

+ 2 - 1
app/src/main/java/io/legado/app/help/JsExtensions.kt

@@ -16,6 +16,7 @@ import io.legado.app.data.entities.BaseSource
 import io.legado.app.exception.NoStackTraceException
 import io.legado.app.help.config.AppConfig
 import io.legado.app.help.config.ThemeConfigStore
+import io.legado.app.ui.config.themeConfig.ThemeConfig
 import io.legado.app.help.config.ReadBookConfig
 import io.legado.app.help.http.BackstageWebView
 import io.legado.app.help.http.CookieManager.cookieJarHeader
@@ -1196,7 +1197,7 @@ interface JsExtensions : JsEncodeUtils {
      */
     @JavascriptInterface
     fun getThemeMode(): String {
-        return AppConfig.themeMode ?: "0"
+        return ThemeConfig.themeMode
     }
 
     /**

+ 3 - 4
app/src/main/java/io/legado/app/help/config/AppConfig.kt

@@ -51,7 +51,6 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
     var mangaClickActionBC = appCtx.getPrefInt(PreferKey.mangaClickActionBC, 1)
     var mangaClickActionBR = appCtx.getPrefInt(PreferKey.mangaClickActionBR, 1)
 
-    val themeMode get() = ThemeConfig.themeMode
     var AppTheme = appCtx.getPrefString(PreferKey.appTheme, "0")
 
     var swipeAnimation = appCtx.getPrefBoolean(PreferKey.swipeAnimation, true)
@@ -282,15 +281,15 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
     }
 
     var isNightTheme: Boolean
-        get() = when (themeMode) {
+        get() = when (ThemeConfig.themeMode) {
             "1" -> false
             "2" -> true
             else -> sysConfiguration.isNightMode
         }
         set(value) {
             val newMode = if (value) "2" else "1"
-            if (themeMode != newMode) {
-                appCtx.putPrefString(PreferKey.themeMode, newMode)
+            if (ThemeConfig.themeMode != newMode) {
+                ThemeConfig.themeMode = newMode
             }
         }