Browse Source

Add Reader Setting to Skip Dupe Chapters (#8831)

Add reader setting to filter dupe chapters with same scanlator priority.
MCAxiaz 2 years ago
parent
commit
cf393b217b

+ 4 - 0
app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt

@@ -135,6 +135,10 @@ object SettingsReaderScreen : SearchableSettings {
                     pref = readerPreferences.skipFiltered(),
                     title = stringResource(R.string.pref_skip_filtered_chapters),
                 ),
+                Preference.PreferenceItem.SwitchPreference(
+                    pref = readerPreferences.skipDupe(),
+                    title = stringResource(R.string.pref_skip_dupe_chapters),
+                ),
                 Preference.PreferenceItem.SwitchPreference(
                     pref = readerPreferences.alwaysShowChapterTransition(),
                     title = stringResource(R.string.pref_always_show_chapter_transition),

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

@@ -183,6 +183,16 @@ class ReaderViewModel(
                 }
             }
             else -> chapters
+        }.run {
+            if (readerPreferences.skipDupe().get()) {
+                groupBy { it.chapterNumber }
+                    .mapValues { (_, chapters) ->
+                        chapters.find { it.id == chapterId || it.scanlator == selectedChapter.scanlator } ?: chapters.first()
+                    }
+                    .values
+            } else {
+                this
+            }
         }
 
         chaptersForReader

+ 2 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt

@@ -60,6 +60,8 @@ class ReaderPreferences(
 
     fun skipFiltered() = preferenceStore.getBoolean("skip_filtered", true)
 
+    fun skipDupe() = preferenceStore.getBoolean("skip_dupe", false)
+
     // endregion
 
     // region Split two page spread

+ 1 - 0
i18n/src/main/res/values/strings.xml

@@ -337,6 +337,7 @@
     <string name="pref_keep_screen_on">Keep screen on</string>
     <string name="pref_skip_read_chapters">Skip chapters marked read</string>
     <string name="pref_skip_filtered_chapters">Skip filtered chapters</string>
+    <string name="pref_skip_dupe_chapters">Skip duplicate chapters</string>
     <string name="pref_reader_navigation">Navigation</string>
     <string name="pref_read_with_volume_keys">Volume keys</string>
     <string name="pref_read_with_volume_keys_inverted">Invert volume keys</string>