Fix #154.6, downloading a merge in the library will properly download
This commit is contained in:
parent
e6f288e2c9
commit
f3573d16b4
@ -541,11 +541,22 @@ class LibraryPresenter(
|
|||||||
fun downloadUnreadChapters(mangas: List<Manga>) {
|
fun downloadUnreadChapters(mangas: List<Manga>) {
|
||||||
mangas.forEach { manga ->
|
mangas.forEach { manga ->
|
||||||
launchIO {
|
launchIO {
|
||||||
|
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()) {
|
/* SY --> */ val chapters = if (manga.isEhBasedManga()) {
|
||||||
val chapter = db.getChapters(manga).executeOnIO().minByOrNull { it.source_order }
|
db.getChapters(manga).executeOnIO().minByOrNull { it.source_order }?.let { chapter ->
|
||||||
if (chapter != null && !chapter.read) listOf(chapter) else emptyList()
|
if (!chapter.read) listOf(chapter) else emptyList()
|
||||||
} else if (manga.source == MERGED_SOURCE_ID) {
|
} ?: emptyList()
|
||||||
(sourceManager.getOrStub(MERGED_SOURCE_ID) as MergedSource).getChaptersAsBlocking(manga).filter { !it.read }
|
|
||||||
} else /* SY <-- */ db.getChapters(manga).executeAsBlocking()
|
} else /* SY <-- */ db.getChapters(manga).executeAsBlocking()
|
||||||
.filter { !it.read }
|
.filter { !it.read }
|
||||||
|
|
||||||
@ -553,6 +564,7 @@ class LibraryPresenter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
fun cleanTitles(mangas: List<Manga>) {
|
fun cleanTitles(mangas: List<Manga>) {
|
||||||
@ -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)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user