From b38bcd4f0b5f8c42c9ae4b988997cd09df8dd2d8 Mon Sep 17 00:00:00 2001 From: nicki <72807749+curche@users.noreply.github.com> Date: Wed, 12 Jan 2022 23:32:04 +0530 Subject: [PATCH] MangaDex: Block Uploaders (#10433) * Add uploader block to Dex extension * Sort the list to aid Varnish Caching "For sake of caching, sort User configurable input query params. Varnish caching cannot know that it's a list that's safe to re-sort etc. Use like alphabetical UUID sorting" * Bump MangaDex.extVersionCode --- src/all/mangadex/build.gradle | 2 +- .../extension/all/mangadex/MDConstants.kt | 5 +++ .../extension/all/mangadex/MangaDex.kt | 31 +++++++++++++++++-- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle index 16b4d24bd..2e585d260 100644 --- a/src/all/mangadex/build.gradle +++ b/src/all/mangadex/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'MangaDex' pkgNameSuffix = 'all.mangadex' extClass = '.MangaDexFactory' - extVersionCode = 150 + extVersionCode = 151 isNsfw = true } diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MDConstants.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MDConstants.kt index 3c2faaacf..f01c30b09 100644 --- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MDConstants.kt +++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MDConstants.kt @@ -90,4 +90,9 @@ object MDConstants { fun getBlockedGroupsPrefKey(dexLang: String): String { return "${blockedGroupsPref}_$dexLang" } + + private const val blockedUploaderPref = "blockedUploader" + fun getBlockedUploaderPrefKey(dexLang: String): String { + return "${blockedUploaderPref}_$dexLang" + } } diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt index dfcf5bc5f..588d95c7d 100644 --- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt +++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt @@ -177,7 +177,11 @@ abstract class MangaDex(override val lang: String, val dexLang: String) : preferences.getString( MDConstants.getBlockedGroupsPrefKey(dexLang), MDConstants.blockedGroupsPrefDefaults - )?.split(",")?.forEach { if (it.isNotEmpty()) addQueryParameter("excludedGroups[]", it.trim()) } + )?.split(",")?.sorted()?.forEach { if (it.isNotEmpty()) addQueryParameter("excludedGroups[]", it.trim()) } + preferences.getString( + MDConstants.getBlockedUploaderPrefKey(dexLang), + "" + )?.split(", ")?.sorted()?.forEach { if (it.isNotEmpty()) addQueryParameter("excludedUploaders[]", it.trim()) } }.build().toString() return GET(url, headers, CacheControl.FORCE_NETWORK) } @@ -333,7 +337,11 @@ abstract class MangaDex(override val lang: String, val dexLang: String) : preferences.getString( MDConstants.getBlockedGroupsPrefKey(dexLang), MDConstants.blockedGroupsPrefDefaults - )?.split(",")?.forEach { if (it.isNotEmpty()) addQueryParameter("excludedGroups[]", it.trim()) } + )?.split(",")?.sorted()?.forEach { if (it.isNotEmpty()) addQueryParameter("excludedGroups[]", it.trim()) } + preferences.getString( + MDConstants.getBlockedUploaderPrefKey(dexLang), + "" + )?.split(",")?.sorted()?.forEach { if (it.isNotEmpty()) addQueryParameter("excludedUploaders[]", it.trim()) } }.build().toString() return GET(url, headers = headers, cache = CacheControl.FORCE_NETWORK) } @@ -529,12 +537,31 @@ abstract class MangaDex(override val lang: String, val dexLang: String) : } } + val blockedUploaderPref = EditTextPreference(screen.context).apply { + key = MDConstants.getBlockedUploaderPrefKey(dexLang) + title = "Block Uploader by UUID" + summary = "Chapters from blocked users will not show up in Latest or Manga feed.\n" + + "Enter as a Comma-separated list of uploader UUIDs" + setOnPreferenceChangeListener { _, newValue -> + val uploaderBlocked = newValue.toString() + .split(",") + .map { it.trim() } + .filter { helper.containsUuid(it) } + .joinToString(separator = ", ") + + preferences.edit() + .putString(MDConstants.getBlockedUploaderPrefKey(dexLang), uploaderBlocked) + .commit() + } + } + screen.addPreference(coverQualityPref) screen.addPreference(dataSaverPref) screen.addPreference(standardHttpsPortPref) screen.addPreference(contentRatingPref) screen.addPreference(originalLanguagePref) screen.addPreference(blockedGroupsPref) + screen.addPreference(blockedUploaderPref) } override fun getFilterList(): FilterList =