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>) {
mangas.forEach { manga ->
launchIO {
/* SY --> */ val chapters = if (manga.isEhBasedManga()) {
val chapter = db.getChapters(manga).executeOnIO().minByOrNull { it.source_order }
if (chapter != null && !chapter.read) listOf(chapter) else emptyList()
} else if (manga.source == MERGED_SOURCE_ID) {
(sourceManager.getOrStub(MERGED_SOURCE_ID) as MergedSource).getChaptersAsBlocking(manga).filter { !it.read }
} else /* SY <-- */ db.getChapters(manga).executeAsBlocking()
.filter { !it.read }
if (manga.source == MERGED_SOURCE_ID) {
val mergedSource = sourceManager.get(MERGED_SOURCE_ID) as MergedSource
val mergedMangas = db.getMergedMangas(manga.id!!).executeAsBlocking()
mergedSource
.getChaptersAsBlocking(manga)
.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) {
val mergedMangas = db.getMergedMangas(manga.id!!).executeAsBlocking()
val sources = mergedMangas.distinctBy { it.source }.map { sourceManager.getOrStub(it.source) }
chapters.groupBy { it.manga_id }.forEach { map ->
val mergedManga = mergedMangas.firstOrNull { it.id == map.key } ?: return@forEach
chapters.groupBy { it.manga_id }.forEach { (mangaId, chapters) ->
val mergedManga = mergedMangas.firstOrNull { it.id == mangaId } ?: 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)
}