Fix downloaded merged chapters in reader
This commit is contained in:
parent
e2840b6b9d
commit
bc816d7b49
@ -177,13 +177,25 @@ class ReaderViewModel(
|
||||
*/
|
||||
private val chapterList by lazy {
|
||||
val manga = manga!!
|
||||
val chapters = runBlocking {
|
||||
/* SY --> */ if (manga.source == MERGED_SOURCE_ID) {
|
||||
getMergedChapterByMangaId.await(manga.id)
|
||||
// SY -->
|
||||
val (chapters, mangaMap) = runBlocking {
|
||||
if (manga.source == MERGED_SOURCE_ID) {
|
||||
getMergedChapterByMangaId.await(manga.id) to getMergedMangaById.await(manga.id)
|
||||
.associateBy { it.id }
|
||||
} else {
|
||||
/* SY <-- */ getChapterByMangaId.await(manga.id)
|
||||
getChapterByMangaId.await(manga.id) to null
|
||||
}
|
||||
}
|
||||
fun isChapterDownloaded(chapter: Chapter): Boolean {
|
||||
val chapterManga = mangaMap?.get(chapter.mangaId) ?: manga
|
||||
return downloadManager.isChapterDownloaded(
|
||||
chapterName = chapter.name,
|
||||
chapterScanlator = chapter.scanlator,
|
||||
mangaTitle = chapterManga.ogTitle,
|
||||
sourceId = chapterManga.source
|
||||
)
|
||||
}
|
||||
// SY <--
|
||||
|
||||
val selectedChapter = chapters.find { it.id == chapterId }
|
||||
?: error("Requested chapter of id $chapterId not found in chapter list")
|
||||
@ -196,8 +208,10 @@ class ReaderViewModel(
|
||||
readerPreferences.skipFiltered().get() -> {
|
||||
(manga.unreadFilterRaw == Manga.CHAPTER_SHOW_READ && !it.read) ||
|
||||
(manga.unreadFilterRaw == Manga.CHAPTER_SHOW_UNREAD && it.read) ||
|
||||
(manga.downloadedFilterRaw == Manga.CHAPTER_SHOW_DOWNLOADED && !downloadManager.isChapterDownloaded(it.name, it.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, manga.source)) ||
|
||||
(manga.downloadedFilterRaw == Manga.CHAPTER_SHOW_NOT_DOWNLOADED && downloadManager.isChapterDownloaded(it.name, it.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, manga.source)) ||
|
||||
// SY -->
|
||||
(manga.downloadedFilterRaw == Manga.CHAPTER_SHOW_DOWNLOADED && !isChapterDownloaded(it)) ||
|
||||
(manga.downloadedFilterRaw == Manga.CHAPTER_SHOW_NOT_DOWNLOADED && isChapterDownloaded(it)) ||
|
||||
// SY <--
|
||||
(manga.bookmarkedFilterRaw == Manga.CHAPTER_SHOW_BOOKMARKED && !it.bookmark) ||
|
||||
(manga.bookmarkedFilterRaw == Manga.CHAPTER_SHOW_NOT_BOOKMARKED && it.bookmark) ||
|
||||
// SY -->
|
||||
@ -228,7 +242,7 @@ class ReaderViewModel(
|
||||
}
|
||||
.run {
|
||||
if (basePreferences.downloadedOnly().get()) {
|
||||
filterDownloaded(manga)
|
||||
filterDownloaded(manga, mangaMap)
|
||||
} else {
|
||||
this
|
||||
}
|
||||
|
@ -9,8 +9,13 @@ import uy.kohesive.injekt.api.get
|
||||
/**
|
||||
* Returns a copy of the list with not downloaded chapters removed
|
||||
*/
|
||||
fun List<Chapter>.filterDownloaded(manga: Manga): List<Chapter> {
|
||||
fun List<Chapter>.filterDownloaded(manga: Manga/* SY --> */, mangaMap: Map<Long, Manga>?): List<Chapter> {
|
||||
val downloadCache: DownloadCache = Injekt.get()
|
||||
|
||||
return filter { downloadCache.isChapterDownloaded(it.name, it.scanlator, manga.title, manga.source, false) }
|
||||
// SY -->
|
||||
return filter {
|
||||
val chapterManga = mangaMap?.get(it.mangaId) ?: manga
|
||||
downloadCache.isChapterDownloaded(it.name, it.scanlator, chapterManga.ogTitle, chapterManga.source, false)
|
||||
}
|
||||
// SY <--
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user