Преглед изворни кода

feat: AppConfig runBlocking DS 直读替换为 getPref* 门面读快照

PR-3: 散点机械替换 —— AppConfig 中 5 个属性的 runBlocking 直读 DataStore
改为通过 getPref*/putPref* 门面读 AppConfigStore 内存快照,消除主线程阻塞 IO
掉帧点。同时移除已无用的 settingsRepository 延迟初始化与相关 import。

组A 文件经审计已全部使用 getPref*/putPref* 门面(PR-1 生效),无需改动。
- bookExportFileName / episodeExportFileName: settingsRepository.getString + first() → getPrefString
- importKeepName / importKeepGroup / importKeepEnable: settingsRepository.getBoolean + first() → getPrefBoolean
- 删除 settingsRepository lazy init、runBlocking/first/get import
5151561 пре 3 месеци
родитељ
комит
9e4318b43c
1 измењених фајлова са 10 додато и 21 уклоњено
  1. 10 21
      app/src/main/java/io/legado/app/help/config/AppConfig.kt

+ 10 - 21
app/src/main/java/io/legado/app/help/config/AppConfig.kt

@@ -3,7 +3,6 @@ package io.legado.app.help.config
 import io.legado.app.BuildConfig
 import io.legado.app.constant.PreferKey
 import io.legado.app.data.appDb
-import io.legado.app.data.repository.SettingsRepository
 import io.legado.app.ui.config.backupConfig.BackupConfig
 import io.legado.app.ui.config.bookshelfConfig.BookshelfConfig
 import io.legado.app.ui.config.coverConfig.CoverConfig
@@ -22,16 +21,10 @@ import io.legado.app.utils.putPrefBoolean
 import io.legado.app.utils.putPrefInt
 import io.legado.app.utils.putPrefString
 import io.legado.app.utils.sysConfiguration
-import kotlinx.coroutines.flow.first
-import kotlinx.coroutines.runBlocking
-import org.koin.java.KoinJavaComponent.get
 import splitties.init.appCtx
 
 @Suppress("MemberVisibilityCanBePrivate", "ConstPropertyName")
 object AppConfig {
-    private val settingsRepository: SettingsRepository by lazy {
-        get(SettingsRepository::class.java)
-    }
     val isCronet get() = DownloadCacheConfig.cronetEnable
     val useAntiAlias get() = OtherConfig.antiAlias
     val userAgent: String get() = DownloadCacheConfig.userAgent
@@ -195,20 +188,16 @@ object AppConfig {
         }
 
     var bookExportFileName: String?
-        get() = runBlocking {
-            settingsRepository.getString(PreferKey.bookExportFileName).first().ifEmpty { null }
-        }
+        get() = appCtx.getPrefString(PreferKey.bookExportFileName)
         set(value) {
-            runBlocking { DsSync.putString(PreferKey.bookExportFileName, value) }
+            appCtx.putPrefString(PreferKey.bookExportFileName, value)
         }
 
     // 保存 自定义导出章节模式 文件名js表达式
     var episodeExportFileName: String?
-        get() = runBlocking {
-            settingsRepository.getString(PreferKey.episodeExportFileName).first()
-        }
+        get() = appCtx.getPrefString(PreferKey.episodeExportFileName)
         set(value) {
-            runBlocking { DsSync.putString(PreferKey.episodeExportFileName, value) }
+            appCtx.putPrefString(PreferKey.episodeExportFileName, value)
         }
 
     var bookImportFileName: String?
@@ -414,15 +403,15 @@ object AppConfig {
         }
 
     var importKeepName: Boolean
-        get() = runBlocking { settingsRepository.getBoolean(PreferKey.importKeepName).first() }
-        set(value) { runBlocking { DsSync.putBoolean(PreferKey.importKeepName, value) } }
+        get() = appCtx.getPrefBoolean(PreferKey.importKeepName)
+        set(value) { appCtx.putPrefBoolean(PreferKey.importKeepName, value) }
     var importKeepGroup: Boolean
-        get() = runBlocking { settingsRepository.getBoolean(PreferKey.importKeepGroup).first() }
-        set(value) { runBlocking { DsSync.putBoolean(PreferKey.importKeepGroup, value) } }
+        get() = appCtx.getPrefBoolean(PreferKey.importKeepGroup)
+        set(value) { appCtx.putPrefBoolean(PreferKey.importKeepGroup, value) }
     var importKeepEnable: Boolean
-        get() = runBlocking { settingsRepository.getBoolean(PreferKey.importKeepEnable).first() }
+        get() = appCtx.getPrefBoolean(PreferKey.importKeepEnable)
         set(value) {
-            runBlocking { DsSync.putBoolean(PreferKey.importKeepEnable, value) }
+            appCtx.putPrefBoolean(PreferKey.importKeepEnable, value)
         }
 
     var previewImageByClick: Boolean