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