From 526325c001d7071f7ac370355d2c0defd7f222d1 Mon Sep 17 00:00:00 2001 From: Kivlan Date: Sun, 2 Jul 2023 15:34:22 +0700 Subject: [PATCH] feature: automatically mark new duplicate read chapters as read --- .../more/settings/screen/SettingsLibraryScreen.kt | 5 +++++ .../tachiyomi/data/library/LibraryUpdateJob.kt | 14 +++++++++++++- .../domain/library/service/LibraryPreferences.kt | 2 ++ i18n/src/main/res/values/strings.xml | 2 ++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt index e009675763..b32b26a7ec 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt @@ -269,6 +269,11 @@ object SettingsLibraryScreen : SearchableSettings { pref = libraryPreferences.newShowUpdatesCount(), title = stringResource(R.string.pref_library_update_show_tab_badge), ), + Preference.PreferenceItem.SwitchPreference( + pref = libraryPreferences.libraryReadDuplicateChapters(), + title = stringResource(R.string.pref_library_mark_duplicate_chapters), + subtitle = stringResource(R.string.pref_library_mark_duplicate_chapters_summary), + ), ), ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt index 54e000d5fa..93bad07dac 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt @@ -14,6 +14,7 @@ import androidx.work.WorkInfo import androidx.work.WorkQuery import androidx.work.WorkerParameters import androidx.work.workDataOf +import eu.kanade.domain.chapter.interactor.SetReadStatus import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource import eu.kanade.domain.chapter.interactor.SyncChaptersWithTrackServiceTwoWay import eu.kanade.domain.manga.interactor.UpdateManga @@ -101,6 +102,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet private val getTracks: GetTracks = Injekt.get() private val insertTrack: InsertTrack = Injekt.get() private val syncChaptersWithTrackServiceTwoWay: SyncChaptersWithTrackServiceTwoWay = Injekt.get() + private val setReadStatus: SetReadStatus = Injekt.get() private val notifier = LibraryUpdateNotifier(context) @@ -262,7 +264,17 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet else -> { try { val newChapters = updateManga(manga) - .sortedByDescending { it.sourceOrder } + .sortedByDescending { it.sourceOrder }.run { + if (libraryPreferences.libraryReadDuplicateChapters().get()) { + val readChapters = getChapterByMangaId.await(manga.id).filter { it.read } + val newReadChapters = this.filter { chapter -> readChapters.any { it.chapterNumber == chapter.chapterNumber } } + .also { setReadStatus.await(true, *it.toTypedArray()) } + + this.filterNot { newReadChapters.contains(it) } + } else { + this + } + } if (newChapters.isNotEmpty()) { val categoryIds = getCategories.await(manga.id).map { it.id } diff --git a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt index de66117ad8..159343e8aa 100644 --- a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt @@ -38,6 +38,8 @@ class LibraryPreferences( ), ) + fun libraryReadDuplicateChapters() = preferenceStore.getBoolean("pref_library_mark_duplicate_chapters", false) + fun leadingExpectedDays() = preferenceStore.getInt("pref_library_before_expect_key", 1) fun followingExpectedDays() = preferenceStore.getInt("pref_library_after_expect_key", 1) diff --git a/i18n/src/main/res/values/strings.xml b/i18n/src/main/res/values/strings.xml index 7dddc5ca6a..29850ba57f 100644 --- a/i18n/src/main/res/values/strings.xml +++ b/i18n/src/main/res/values/strings.xml @@ -277,6 +277,8 @@ Check for new cover and details when updating library Automatically refresh trackers Update trackers when updating library + Mark new duplicate chapters as read + Automatically mark new chapters as read if it has been read before Default category Always ask