From de4e0abef4ff1d3e4e1257290edb7bc21d5b7972 Mon Sep 17 00:00:00 2001 From: arkon Date: Sun, 23 May 2021 11:27:52 -0400 Subject: [PATCH] Update reader chapter list filtering to handle not downloaded/bookmarked (closes #5107) (cherry picked from commit ce9fb2f1fe03e47c64f0f667a9f7ef040f46bb2f) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt --- .../tachiyomi/ui/reader/ReaderPresenter.kt | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 296454ef7..75d7049b2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -125,20 +125,16 @@ 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.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) || // SY --> (filteredScanlators != null && MdUtil.getScanlators(it.scanlator).none { group -> filteredScanlators.contains(group) }) @@ -147,9 +143,9 @@ class ReaderPresenter( return@filter false } } - - true + else -> false } + } .toMutableList() val find = list.find { it.id == chapterId } @@ -157,9 +153,9 @@ class ReaderPresenter( list.add(selectedChapter) } list - } else { - dbChapters } + else -> dbChapters + } when (manga.sorting) { Manga.CHAPTER_SORTING_SOURCE -> ChapterLoadBySource().get(chaptersForReader)