diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 55a8d6932..6fdc2707f 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -541,15 +541,27 @@ class LibraryPresenter( fun downloadUnreadChapters(mangas: List) { 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) }