From 629f1891f6a186567463e7816c280a2d945fb267 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sat, 21 Dec 2024 19:42:37 +0700 Subject: [PATCH] refactor(download): Singleton cache and provider --- .../tachiyomi/data/download/DownloadCache.kt | 4 +-- .../data/download/DownloadManager.kt | 26 +++++++------------ .../tachiyomi/data/download/Downloader.kt | 8 +++--- app/src/main/java/yokai/core/di/AppModule.kt | 4 +++ 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt index 2be641e573..5e210e9353 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt @@ -62,8 +62,8 @@ import yokai.domain.storage.StorageManager */ class DownloadCache( private val context: Context, - private val provider: DownloadProvider, - private val sourceManager: SourceManager, + private val provider: DownloadProvider = Injekt.get(), + private val sourceManager: SourceManager = Injekt.get(), private val storageManager: StorageManager = Injekt.get(), ) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt index 26bb0404a7..830c9b071e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt @@ -20,7 +20,9 @@ import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onStart +import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.injectLazy +import uy.kohesive.injekt.api.get import yokai.domain.download.DownloadPreferences import yokai.i18n.MR import yokai.util.lang.getString @@ -32,31 +34,21 @@ import yokai.util.lang.getString * * @param context the application context. */ -class DownloadManager(val context: Context) { - - /** - * The sources manager. - */ - private val sourceManager by injectLazy() +class DownloadManager( + val context: Context, + private val sourceManager: SourceManager = Injekt.get(), + private val provider: DownloadProvider = Injekt.get(), + private val cache: DownloadCache = Injekt.get(), +) { private val preferences by injectLazy() private val downloadPreferences by injectLazy() - /** - * Downloads provider, used to retrieve the folders where the chapters are or should be stored. - */ - private val provider = DownloadProvider(context) - - /** - * Cache of downloaded chapters. - */ - private val cache = DownloadCache(context, provider, sourceManager) - /** * Downloader whose only task is to download chapters. */ - private val downloader = Downloader(context, provider, cache, sourceManager) + private val downloader = Downloader(context) val isRunning: Boolean get() = downloader.isRunning diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index 1b2c925611..fd0960f179 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -54,7 +54,9 @@ import kotlinx.coroutines.runBlocking import kotlinx.coroutines.supervisorScope import nl.adaptivity.xmlutil.serialization.XML import okhttp3.Response +import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.injectLazy +import uy.kohesive.injekt.api.get import yokai.core.archive.ZipWriter import yokai.core.metadata.COMIC_INFO_FILE import yokai.core.metadata.ComicInfo @@ -71,9 +73,9 @@ import yokai.util.lang.getString */ class Downloader( private val context: Context, - private val provider: DownloadProvider, - private val cache: DownloadCache, - private val sourceManager: SourceManager, + private val provider: DownloadProvider = Injekt.get(), + private val cache: DownloadCache = Injekt.get(), + private val sourceManager: SourceManager = Injekt.get(), ) { private val preferences: PreferencesHelper by injectLazy() private val downloadPreferences: DownloadPreferences by injectLazy() diff --git a/app/src/main/java/yokai/core/di/AppModule.kt b/app/src/main/java/yokai/core/di/AppModule.kt index 1aa081de23..f53d7c1e1a 100644 --- a/app/src/main/java/yokai/core/di/AppModule.kt +++ b/app/src/main/java/yokai/core/di/AppModule.kt @@ -12,7 +12,9 @@ import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.cache.CoverCache +import eu.kanade.tachiyomi.data.download.DownloadCache import eu.kanade.tachiyomi.data.download.DownloadManager +import eu.kanade.tachiyomi.data.download.DownloadProvider import eu.kanade.tachiyomi.data.library.CustomMangaManager import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.extension.ExtensionManager @@ -118,7 +120,9 @@ fun appModule(app: Application) = module { single { SourceManager(app, get()) } single { ExtensionManager(app) } + single { DownloadProvider(app) } single { DownloadManager(app) } + single { DownloadCache(app) } single { CustomMangaManager(app) }