Fix #154.6, downloading a merge in the library will properly download

This commit is contained in:
Jobobby04 2021-03-07 23:17:43 -05:00
parent e6f288e2c9
commit f3573d16b4

View File

@ -541,15 +541,27 @@ class LibraryPresenter(
fun downloadUnreadChapters(mangas: List<Manga>) { fun downloadUnreadChapters(mangas: List<Manga>) {
mangas.forEach { manga -> mangas.forEach { manga ->
launchIO { launchIO {
/* SY --> */ val chapters = if (manga.isEhBasedManga()) { if (manga.source == MERGED_SOURCE_ID) {
val chapter = db.getChapters(manga).executeOnIO().minByOrNull { it.source_order } val mergedSource = sourceManager.get(MERGED_SOURCE_ID) as MergedSource
if (chapter != null && !chapter.read) listOf(chapter) else emptyList() val mergedMangas = db.getMergedMangas(manga.id!!).executeAsBlocking()
} else if (manga.source == MERGED_SOURCE_ID) { mergedSource
(sourceManager.getOrStub(MERGED_SOURCE_ID) as MergedSource).getChaptersAsBlocking(manga).filter { !it.read } .getChaptersAsBlocking(manga)
} else /* SY <-- */ db.getChapters(manga).executeAsBlocking() .filter { !it.read }
.filter { !it.read } .groupBy { it.manga_id!! }
.forEach ab@{ (mangaId, chapters) ->
val mergedManga = mergedMangas.firstOrNull { it.id == mangaId } ?: return@ab
downloadManager.downloadChapters(mergedManga, chapters)
}
} else {
/* SY --> */ val chapters = if (manga.isEhBasedManga()) {
db.getChapters(manga).executeOnIO().minByOrNull { it.source_order }?.let { chapter ->
if (!chapter.read) listOf(chapter) else emptyList()
} ?: emptyList()
} else /* SY <-- */ db.getChapters(manga).executeAsBlocking()
.filter { !it.read }
downloadManager.downloadChapters(manga, chapters) downloadManager.downloadChapters(manga, chapters)
}
} }
} }
} }
@ -623,10 +635,10 @@ class LibraryPresenter(
if (source is MergedSource) { if (source is MergedSource) {
val mergedMangas = db.getMergedMangas(manga.id!!).executeAsBlocking() val mergedMangas = db.getMergedMangas(manga.id!!).executeAsBlocking()
val sources = mergedMangas.distinctBy { it.source }.map { sourceManager.getOrStub(it.source) } val sources = mergedMangas.distinctBy { it.source }.map { sourceManager.getOrStub(it.source) }
chapters.groupBy { it.manga_id }.forEach { map -> chapters.groupBy { it.manga_id }.forEach { (mangaId, chapters) ->
val mergedManga = mergedMangas.firstOrNull { it.id == map.key } ?: return@forEach val mergedManga = mergedMangas.firstOrNull { it.id == mangaId } ?: return@forEach
val mergedMangaSource = sources.firstOrNull { it.id == mergedManga.source } ?: return@forEach val mergedMangaSource = sources.firstOrNull { it.id == mergedManga.source } ?: return@forEach
downloadManager.deleteChapters(map.value, mergedManga, mergedMangaSource) downloadManager.deleteChapters(chapters, mergedManga, mergedMangaSource)
} }
} else /* SY <-- */ downloadManager.deleteChapters(chapters, manga, source) } else /* SY <-- */ downloadManager.deleteChapters(chapters, manga, source)
} }