HapeLee 11 месяцев назад
Родитель
Сommit
9b3b55a237

+ 5 - 1
app/src/main/java/io/legado/app/App.kt

@@ -32,6 +32,7 @@ import io.legado.app.data.entities.rule.BookInfoRule
 import io.legado.app.data.entities.rule.ContentRule
 import io.legado.app.data.entities.rule.ExploreRule
 import io.legado.app.data.entities.rule.SearchRule
+import io.legado.app.di.appDatabaseModule
 import io.legado.app.help.AppFreezeMonitor
 import io.legado.app.help.AppWebDav
 import io.legado.app.help.CrashHandler
@@ -60,6 +61,7 @@ import io.legado.app.utils.getPrefString
 import io.legado.app.utils.isDebuggable
 import kotlinx.coroutines.launch
 import org.chromium.base.ThreadUtils
+import org.koin.core.context.GlobalContext.startKoin
 import splitties.init.appCtx
 import splitties.systemservices.notificationManager
 import java.io.File
@@ -72,7 +74,9 @@ class App : Application() {
     private lateinit var oldConfig: Configuration
 
     override fun onCreate() {
-
+        startKoin {
+            modules(appDatabaseModule)
+        }
         if (getPrefString("app_theme", "0") == "12") {
             if (AppConfig.customMode == "accent")
                 setTheme(R.style.ThemeOverlay_WhiteBackground)

+ 39 - 0
app/src/main/java/io/legado/app/di/appDatabaseModule.kt

@@ -0,0 +1,39 @@
+package io.legado.app.di
+
+import io.legado.app.data.AppDatabase
+import io.legado.app.data.appDb
+import io.legado.app.data.dao.*
+import org.koin.dsl.module
+
+/**
+ * 应用程序的数据库和 DAO 模块
+ */
+val appDatabaseModule = module {
+
+    // 注册 AppDatabase 实例
+    // 使用 lazy 属性 appDb,该属性在 AppDatabase.kt 中定义并已初始化
+    single<AppDatabase> { appDb }
+
+    // 注册所有的 DAO 接口,通过 AppDatabase 实例获取
+    factory<BookDao> { get<AppDatabase>().bookDao }
+    factory<BookGroupDao> { get<AppDatabase>().bookGroupDao }
+    factory<BookSourceDao> { get<AppDatabase>().bookSourceDao }
+    factory<BookChapterDao> { get<AppDatabase>().bookChapterDao }
+    factory<ReplaceRuleDao> { get<AppDatabase>().replaceRuleDao }
+    factory<SearchBookDao> { get<AppDatabase>().searchBookDao }
+    factory<SearchKeywordDao> { get<AppDatabase>().searchKeywordDao }
+    factory<RssSourceDao> { get<AppDatabase>().rssSourceDao }
+    factory<BookmarkDao> { get<AppDatabase>().bookmarkDao }
+    factory<RssArticleDao> { get<AppDatabase>().rssArticleDao }
+    factory<RssStarDao> { get<AppDatabase>().rssStarDao }
+    factory<RssReadRecordDao> { get<AppDatabase>().rssReadRecordDao }
+    factory<CookieDao> { get<AppDatabase>().cookieDao }
+    factory<TxtTocRuleDao> { get<AppDatabase>().txtTocRuleDao }
+    factory<ReadRecordDao> { get<AppDatabase>().readRecordDao }
+    factory<HttpTTSDao> { get<AppDatabase>().httpTTSDao }
+    factory<CacheDao> { get<AppDatabase>().cacheDao }
+    factory<RuleSubDao> { get<AppDatabase>().ruleSubDao }
+    factory<DictRuleDao> { get<AppDatabase>().dictRuleDao }
+    factory<KeyboardAssistsDao> { get<AppDatabase>().keyboardAssistsDao }
+    factory<ServerDao> { get<AppDatabase>().serverDao }
+}