Update reader chapter list filtering to handle not downloaded/bookmarked (closes #5107)

This commit is contained in:
arkon 2021-05-23 11:27:52 -04:00
parent 974275a429
commit ce9fb2f1fe

View File

@ -96,28 +96,22 @@ class ReaderPresenter(
val selectedChapter = dbChapters.find { it.id == chapterId }
?: error("Requested chapter of id $chapterId not found in chapter list")
val chaptersForReader =
if (preferences.skipRead() || preferences.skipFiltered()) {
val list = dbChapters
.filter {
if (preferences.skipRead() && it.read) {
return@filter false
} else if (preferences.skipFiltered()) {
if (
(manga.readFilter == Manga.CHAPTER_SHOW_READ && !it.read) ||
val chaptersForReader = when {
(preferences.skipRead() || preferences.skipFiltered()) -> {
val list = dbChapters.filterNot {
when {
preferences.skipRead() && it.read -> true
preferences.skipFiltered() -> {
(manga.readFilter == Manga.CHAPTER_SHOW_READ && !it.read) ||
(manga.readFilter == Manga.CHAPTER_SHOW_UNREAD && it.read) ||
(
manga.downloadedFilter == Manga.CHAPTER_SHOW_DOWNLOADED &&
!downloadManager.isChapterDownloaded(it, manga)
) ||
(manga.bookmarkedFilter == Manga.CHAPTER_SHOW_BOOKMARKED && !it.bookmark)
) {
return@filter false
}
(manga.downloadedFilter == Manga.CHAPTER_SHOW_DOWNLOADED && !downloadManager.isChapterDownloaded(it, manga)) ||
(manga.downloadedFilter == Manga.CHAPTER_SHOW_NOT_DOWNLOADED && downloadManager.isChapterDownloaded(it, manga)) ||
(manga.bookmarkedFilter == Manga.CHAPTER_SHOW_BOOKMARKED && !it.bookmark) ||
(manga.bookmarkedFilter == Manga.CHAPTER_SHOW_NOT_BOOKMARKED && it.bookmark)
}
true
else -> false
}
}
.toMutableList()
val find = list.find { it.id == chapterId }
@ -125,9 +119,9 @@ class ReaderPresenter(
list.add(selectedChapter)
}
list
} else {
dbChapters
}
else -> dbChapters
}
when (manga.sorting) {
Manga.CHAPTER_SORTING_SOURCE -> ChapterLoadBySource().get(chaptersForReader)