Use SQLDelight for all Chapter related queries (#7440)

This commit is contained in:
Andreas
2022-07-03 00:51:33 +02:00
committed by GitHub
parent 76c0ead1db
commit 29633b64aa
9 changed files with 63 additions and 65 deletions
@@ -2,11 +2,15 @@ package eu.kanade.tachiyomi.data.download
import android.content.Context
import androidx.core.content.edit
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.domain.chapter.interactor.GetChapter
import eu.kanade.domain.chapter.model.toDbChapter
import eu.kanade.domain.manga.interactor.GetMangaById
import eu.kanade.domain.manga.model.toDbManga
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.HttpSource
import kotlinx.coroutines.runBlocking
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
@@ -29,7 +33,9 @@ class DownloadStore(
private val preferences = context.getSharedPreferences("active_downloads", Context.MODE_PRIVATE)
private val json: Json by injectLazy()
private val db: DatabaseHelper by injectLazy()
private val getMangaById: GetMangaById by injectLazy()
private val getChapter: GetChapter by injectLazy()
/**
* Counter used to keep the queue order.
@@ -90,10 +96,10 @@ class DownloadStore(
val cachedManga = mutableMapOf<Long, Manga?>()
for ((mangaId, chapterId) in objs) {
val manga = cachedManga.getOrPut(mangaId) {
db.getManga(mangaId).executeAsBlocking()
runBlocking { getMangaById.await(mangaId)?.toDbManga() }
} ?: continue
val source = sourceManager.get(manga.source) as? HttpSource ?: continue
val chapter = db.getChapter(chapterId).executeAsBlocking() ?: continue
val chapter = runBlocking { getChapter.await(chapterId) }?.toDbChapter() ?: continue
downloads.add(Download(source, manga, chapter))
}
}