Fix #154.6, downloading a merge in the library will properly download
This commit is contained in:
parent
e6f288e2c9
commit
f3573d16b4
@ -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)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user