fix(merged-manga): Fix download ahead for merged entries (#1132)
* Fix download ahead for merged entries * correctly handle merged manga
This commit is contained in:
parent
004b63dfb5
commit
8f2ab5b87e
1 changed files with 24 additions and 9 deletions
|
|
@ -34,6 +34,7 @@ import eu.kanade.tachiyomi.source.online.all.MergedSource
|
||||||
import eu.kanade.tachiyomi.ui.reader.chapter.ReaderChapterItem
|
import eu.kanade.tachiyomi.ui.reader.chapter.ReaderChapterItem
|
||||||
import eu.kanade.tachiyomi.ui.reader.loader.ChapterLoader
|
import eu.kanade.tachiyomi.ui.reader.loader.ChapterLoader
|
||||||
import eu.kanade.tachiyomi.ui.reader.loader.DownloadPageLoader
|
import eu.kanade.tachiyomi.ui.reader.loader.DownloadPageLoader
|
||||||
|
import eu.kanade.tachiyomi.ui.reader.loader.HttpPageLoader
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.InsertPage
|
import eu.kanade.tachiyomi.ui.reader.model.InsertPage
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
|
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
|
||||||
|
|
@ -615,8 +616,12 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This code is likely deprecated since once `chapter.pageLoader` is initialized with [HttpPageLoader],
|
||||||
|
* it would set `chapter.state` to `Loading` or `Loaded` and return early already.
|
||||||
|
*/
|
||||||
if (chapter.pageLoader?.isLocal == false) {
|
if (chapter.pageLoader?.isLocal == false) {
|
||||||
val manga = manga ?: return
|
val manga = state.value.mergedManga?.get(chapter.chapter.manga_id) ?: manga ?: return
|
||||||
val dbChapter = chapter.chapter
|
val dbChapter = chapter.chapter
|
||||||
val isDownloaded = downloadManager.isChapterDownloaded(
|
val isDownloaded = downloadManager.isChapterDownloaded(
|
||||||
dbChapter.name,
|
dbChapter.name,
|
||||||
|
|
@ -699,14 +704,19 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||||
if (getCurrentChapter()?.pageLoader !is DownloadPageLoader) return
|
if (getCurrentChapter()?.pageLoader !is DownloadPageLoader) return
|
||||||
val nextChapter = state.value.viewerChapters?.nextChapter?.chapter ?: return
|
val nextChapter = state.value.viewerChapters?.nextChapter?.chapter ?: return
|
||||||
|
|
||||||
|
// KMK -->
|
||||||
|
val mangas = state.value.mergedManga ?: mapOf(manga.id to manga)
|
||||||
|
val nextChapterManga = mangas[nextChapter.manga_id] ?: return
|
||||||
|
// KMK <--
|
||||||
|
|
||||||
viewModelScope.launchIO {
|
viewModelScope.launchIO {
|
||||||
val isNextChapterDownloaded = downloadManager.isChapterDownloaded(
|
val isNextChapterDownloaded = downloadManager.isChapterDownloaded(
|
||||||
nextChapter.name,
|
nextChapter.name,
|
||||||
nextChapter.scanlator,
|
nextChapter.scanlator,
|
||||||
// SY -->
|
// KMK -->
|
||||||
manga.ogTitle,
|
nextChapterManga.ogTitle,
|
||||||
// SY <--
|
nextChapterManga.source,
|
||||||
manga.source,
|
// KMK <--
|
||||||
)
|
)
|
||||||
if (!isNextChapterDownloaded) return@launchIO
|
if (!isNextChapterDownloaded) return@launchIO
|
||||||
|
|
||||||
|
|
@ -718,10 +728,15 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||||
}
|
}
|
||||||
}.take(downloadAheadAmount)
|
}.take(downloadAheadAmount)
|
||||||
|
|
||||||
downloadManager.downloadChapters(
|
// KMK -->
|
||||||
manga,
|
chaptersToDownload.groupBy { it.mangaId }.forEach { (mangaId, chapters) ->
|
||||||
chaptersToDownload,
|
val chapterManga = mangas[mangaId] ?: return@forEach
|
||||||
)
|
downloadManager.downloadChapters(
|
||||||
|
chapterManga,
|
||||||
|
chapters,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// KMK <--
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue