Эх сурвалжийг харах

Filter out non-downloaded chapters in reader when Downloaded Only is enabled (#9568)

* FIxed Issue #5463 - DownloadedOnly Bug

* Changes according to Feedback

* Changes according to Feedback

---------

Co-authored-by: AlphiGhost <[email protected]>
Simon 1 жил өмнө
parent
commit
dddba7bb6f

+ 9 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt

@@ -34,6 +34,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
 import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
 import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
 import eu.kanade.tachiyomi.ui.reader.viewer.Viewer
+import eu.kanade.tachiyomi.util.chapter.filterDownloaded
 import eu.kanade.tachiyomi.util.chapter.removeDuplicates
 import eu.kanade.tachiyomi.util.editCover
 import eu.kanade.tachiyomi.util.lang.byteSize
@@ -91,6 +92,7 @@ class ReaderViewModel(
     private val downloadProvider: DownloadProvider = Injekt.get(),
     private val imageSaver: ImageSaver = Injekt.get(),
     preferences: BasePreferences = Injekt.get(),
+    private val basePreferences: BasePreferences = Injekt.get(),
     private val downloadPreferences: DownloadPreferences = Injekt.get(),
     private val readerPreferences: ReaderPreferences = Injekt.get(),
     private val trackPreferences: TrackPreferences = Injekt.get(),
@@ -184,6 +186,13 @@ class ReaderViewModel(
                     this
                 }
             }
+            .run {
+                if (basePreferences.downloadedOnly().get()) {
+                    filterDownloaded(manga)
+                } else {
+                    this
+                }
+            }
             .map { it.toDbChapter() }
             .map(::ReaderChapter)
     }

+ 16 - 0
app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterFilterDownloaded.kt

@@ -0,0 +1,16 @@
+package eu.kanade.tachiyomi.util.chapter
+
+import eu.kanade.tachiyomi.data.download.DownloadCache
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
+import uy.kohesive.injekt.Injekt
+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> {
+    val downloadCache: DownloadCache = Injekt.get()
+
+    return filter { downloadCache.isChapterDownloaded(it.name, it.scanlator, manga.title, manga.source, false) }
+}