diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
index af95883de1..a4189ae6e8 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
@@ -262,7 +262,7 @@ class PreferencesHelper(val context: Context) {
fun backupInterval() = flowPrefs.getInt(Keys.backupInterval, 0)
- fun removeAfterReadSlots() = prefs.getInt(Keys.removeAfterReadSlots, -1)
+ fun removeAfterReadSlots() = flowPrefs.getInt(Keys.removeAfterReadSlots, -1)
fun removeAfterMarkedAsRead() = prefs.getBoolean(Keys.removeAfterMarkedAsRead, false)
@@ -409,6 +409,8 @@ class PreferencesHelper(val context: Context) {
fun removeBookmarkedChapters() = flowPrefs.getBoolean("pref_remove_bookmarked", false)
+ fun removeExcludeCategories() = flowPrefs.getStringSet("remove_exclude_categories", emptySet())
+
fun showAllCategories() = flowPrefs.getBoolean("show_all_categories", true)
fun showAllCategoriesWhenSearchingSingleCategory() = flowPrefs.getBoolean("show_all_categories_when_searching_single_category", false)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
index d55e487088..649fdc5845 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
@@ -561,7 +561,7 @@ class ReaderViewModel(
private fun deleteChapterIfNeeded(currentChapter: ReaderChapter) {
// Determine which chapter should be deleted and enqueue
val currentChapterPosition = chapterList.indexOf(currentChapter)
- val removeAfterReadSlots = preferences.removeAfterReadSlots()
+ val removeAfterReadSlots = preferences.removeAfterReadSlots().get()
val chapterToDelete = chapterList.getOrNull(currentChapterPosition - removeAfterReadSlots)
if (removeAfterReadSlots != 0 && chapterToDownload != null) {
@@ -571,6 +571,15 @@ class ReaderViewModel(
}
// Check if deleting option is enabled and chapter exists
if (removeAfterReadSlots != -1 && chapterToDelete != null) {
+ val excludedCategories = preferences.removeExcludeCategories().get().map(String::toInt)
+ if (excludedCategories.any()) {
+ val categories = db.getCategoriesForManga(manga!!).executeAsBlocking()
+ .mapNotNull { it.id }
+ .ifEmpty { listOf(0) }
+
+ if (categories.any { it in excludedCategories }) return
+ }
+
enqueueDeleteReadChapters(chapterToDelete)
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt
index 4d048299e3..6e78d053e2 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt
@@ -55,6 +55,9 @@ class SettingsDownloadController : SettingsController() {
summaryRes = R.string.split_tall_images_summary
}
+ val dbCategories = db.getCategories().executeAsBlocking()
+ val categories = listOf(Category.createDefault(context)) + dbCategories
+
preferenceCategory {
titleRes = R.string.remove_after_read
@@ -64,7 +67,7 @@ class SettingsDownloadController : SettingsController() {
defaultValue = false
}
intListPreference(activity) {
- key = Keys.removeAfterReadSlots
+ bindTo(preferences.removeAfterReadSlots())
titleRes = R.string.remove_after_read
entriesRes = arrayOf(
R.string.never,
@@ -77,15 +80,20 @@ class SettingsDownloadController : SettingsController() {
entryRange = -1..4
defaultValue = -1
}
+ multiSelectListPreferenceMat(activity) {
+ bindTo(preferences.removeExcludeCategories())
+ titleRes = R.string.pref_remove_exclude_categories
+ entries = categories.map { it.name }
+ entryValues = categories.map { it.id.toString() }
+ noSelectionRes = R.string.none
+ preferences.removeAfterReadSlots().asImmediateFlowIn(viewScope) { isVisible = it != -1 }
+ }
switchPreference {
bindTo(preferences.removeBookmarkedChapters())
titleRes = R.string.allow_deleting_bookmarked_chapters
}
}
- val dbCategories = db.getCategories().executeAsBlocking()
- val categories = listOf(Category.createDefault(context)) + dbCategories
-
preferenceCategory {
titleRes = R.string.download_new_chapters
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6f4d043ac5..9a4e45c88c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -969,6 +969,7 @@
Remove when marked as read
Allow deleting bookmarked chapters
Remove after read
+ Excluded categories
Custom location
Last read chapter
Second to last chapter