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 {
|
private val chapterList by lazy {
|
||||||
val manga = manga!!
|
val manga = manga!!
|
||||||
val chapters = runBlocking {
|
// SY -->
|
||||||
/* SY --> */ if (manga.source == MERGED_SOURCE_ID) {
|
val (chapters, mangaMap) = runBlocking {
|
||||||
getMergedChapterByMangaId.await(manga.id)
|
if (manga.source == MERGED_SOURCE_ID) {
|
||||||
|
getMergedChapterByMangaId.await(manga.id) to getMergedMangaById.await(manga.id)
|
||||||
|
.associateBy { it.id }
|
||||||
} else {
|
} 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 }
|
val selectedChapter = chapters.find { it.id == chapterId }
|
||||||
?: error("Requested chapter of id $chapterId not found in chapter list")
|
?: error("Requested chapter of id $chapterId not found in chapter list")
|
||||||
@ -196,8 +208,10 @@ class ReaderViewModel(
|
|||||||
readerPreferences.skipFiltered().get() -> {
|
readerPreferences.skipFiltered().get() -> {
|
||||||
(manga.unreadFilterRaw == Manga.CHAPTER_SHOW_READ && !it.read) ||
|
(manga.unreadFilterRaw == Manga.CHAPTER_SHOW_READ && !it.read) ||
|
||||||
(manga.unreadFilterRaw == Manga.CHAPTER_SHOW_UNREAD && 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)) ||
|
// SY -->
|
||||||
(manga.downloadedFilterRaw == Manga.CHAPTER_SHOW_NOT_DOWNLOADED && downloadManager.isChapterDownloaded(it.name, it.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, manga.source)) ||
|
(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_BOOKMARKED && !it.bookmark) ||
|
||||||
(manga.bookmarkedFilterRaw == Manga.CHAPTER_SHOW_NOT_BOOKMARKED && it.bookmark) ||
|
(manga.bookmarkedFilterRaw == Manga.CHAPTER_SHOW_NOT_BOOKMARKED && it.bookmark) ||
|
||||||
// SY -->
|
// SY -->
|
||||||
@ -228,7 +242,7 @@ class ReaderViewModel(
|
|||||||
}
|
}
|
||||||
.run {
|
.run {
|
||||||
if (basePreferences.downloadedOnly().get()) {
|
if (basePreferences.downloadedOnly().get()) {
|
||||||
filterDownloaded(manga)
|
filterDownloaded(manga, mangaMap)
|
||||||
} else {
|
} else {
|
||||||
this
|
this
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,13 @@ import uy.kohesive.injekt.api.get
|
|||||||
/**
|
/**
|
||||||
* Returns a copy of the list with not downloaded chapters removed
|
* 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()
|
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