Fix auto-downloading for merged manga
(cherry picked from commit 8f868c0813a9a5e7af64760f22e849cb344a4f89) # Conflicts: # app/src/main/sqldelight/data/merged.sq
This commit is contained in:
parent
c58554ec75
commit
f7e5df2b6d
@ -25,6 +25,19 @@ fun getMergedMangaQuery() =
|
|||||||
ON ${Manga.TABLE}.${Manga.COL_ID} = M.${Merged.COL_MANGA_ID}
|
ON ${Manga.TABLE}.${Manga.COL_ID} = M.${Merged.COL_MANGA_ID}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query to get the manga merged into a merged manga
|
||||||
|
*/
|
||||||
|
fun getMergedMangaForDownloadingQuery() =
|
||||||
|
"""
|
||||||
|
SELECT ${Manga.TABLE}.*
|
||||||
|
FROM (
|
||||||
|
SELECT ${Merged.COL_MANGA_ID} FROM ${Merged.TABLE} WHERE ${Merged.COL_MERGE_ID} = ? AND ${Merged.COL_DOWNLOAD_CHAPTERS} = 1
|
||||||
|
) AS M
|
||||||
|
JOIN ${Manga.TABLE}
|
||||||
|
ON ${Manga.TABLE}.${Manga.COL_ID} = M.${Merged.COL_MANGA_ID}
|
||||||
|
"""
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query to get all the manga that are merged into other manga
|
* Query to get all the manga that are merged into other manga
|
||||||
*/
|
*/
|
||||||
|
@ -480,13 +480,22 @@ class LibraryUpdateService(
|
|||||||
// We don't want to start downloading while the library is updating, because websites
|
// We don't want to start downloading while the library is updating, because websites
|
||||||
// may don't like it and they could ban the user.
|
// may don't like it and they could ban the user.
|
||||||
// SY -->
|
// SY -->
|
||||||
val chapterFilter = if (manga.source == MERGED_SOURCE_ID) {
|
if (manga.source == MERGED_SOURCE_ID) {
|
||||||
db.getMergedMangaReferences(manga.id!!).executeAsBlocking()
|
val downloadingManga = db.getMergedMangasForDownloading(manga.id!!).executeAsBlocking()
|
||||||
.filterNot { it.downloadChapters }
|
.associateBy { it.id!! }
|
||||||
.mapNotNull { it.mangaId } + manga.id!!
|
chapters.groupBy { it.manga_id }
|
||||||
} else emptyList()
|
.forEach {
|
||||||
|
downloadManager.downloadChapters(
|
||||||
|
downloadingManga[it.key] ?: return@forEach,
|
||||||
|
chapters,
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
// SY <--
|
// SY <--
|
||||||
downloadManager.downloadChapters(manga, /* SY --> */ chapters.filterNot { it.manga_id in chapterFilter } /* SY <-- */, false)
|
downloadManager.downloadChapters(manga, chapters, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -70,12 +70,12 @@ class MergedSource : HttpSource() {
|
|||||||
.apply {
|
.apply {
|
||||||
if (isEmpty()) {
|
if (isEmpty()) {
|
||||||
throw IllegalArgumentException(
|
throw IllegalArgumentException(
|
||||||
"Manga references are empty, info unavailable, merge is likely corrupted"
|
"Manga references are empty, info unavailable, merge is likely corrupted",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (size == 1 && first().mangaSourceId == MERGED_SOURCE_ID) {
|
if (size == 1 && first().mangaSourceId == MERGED_SOURCE_ID) {
|
||||||
throw IllegalArgumentException(
|
throw IllegalArgumentException(
|
||||||
"Manga references contain only the merged reference, merge is likely corrupted"
|
"Manga references contain only the merged reference, merge is likely corrupted",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.data.database.models.Chapter
|
|||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.queries.getAllMergedMangaQuery
|
import eu.kanade.tachiyomi.data.database.queries.getAllMergedMangaQuery
|
||||||
import eu.kanade.tachiyomi.data.database.queries.getMergedChaptersQuery
|
import eu.kanade.tachiyomi.data.database.queries.getMergedChaptersQuery
|
||||||
|
import eu.kanade.tachiyomi.data.database.queries.getMergedMangaForDownloadingQuery
|
||||||
import eu.kanade.tachiyomi.data.database.queries.getMergedMangaFromUrlQuery
|
import eu.kanade.tachiyomi.data.database.queries.getMergedMangaFromUrlQuery
|
||||||
import eu.kanade.tachiyomi.data.database.queries.getMergedMangaQuery
|
import eu.kanade.tachiyomi.data.database.queries.getMergedMangaQuery
|
||||||
import eu.kanade.tachiyomi.data.database.tables.ChapterTable
|
import eu.kanade.tachiyomi.data.database.tables.ChapterTable
|
||||||
@ -61,6 +62,16 @@ interface MergedQueries : DbProvider {
|
|||||||
)
|
)
|
||||||
.prepare()
|
.prepare()
|
||||||
|
|
||||||
|
fun getMergedMangasForDownloading(mergedMangaId: Long) = db.get()
|
||||||
|
.listOfObjects(Manga::class.java)
|
||||||
|
.withQuery(
|
||||||
|
RawQuery.builder()
|
||||||
|
.query(getMergedMangaForDownloadingQuery())
|
||||||
|
.args(mergedMangaId)
|
||||||
|
.build(),
|
||||||
|
)
|
||||||
|
.prepare()
|
||||||
|
|
||||||
fun getMergedMangas(mergedMangaUrl: String) = db.get()
|
fun getMergedMangas(mergedMangaUrl: String) = db.get()
|
||||||
.listOfObjects(Manga::class.java)
|
.listOfObjects(Manga::class.java)
|
||||||
.withQuery(
|
.withQuery(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user