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
This commit is contained in:
parent
0ce1eee2d5
commit
b38bcd4f0b
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'MangaDex'
|
extName = 'MangaDex'
|
||||||
pkgNameSuffix = 'all.mangadex'
|
pkgNameSuffix = 'all.mangadex'
|
||||||
extClass = '.MangaDexFactory'
|
extClass = '.MangaDexFactory'
|
||||||
extVersionCode = 150
|
extVersionCode = 151
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,4 +90,9 @@ object MDConstants {
|
||||||
fun getBlockedGroupsPrefKey(dexLang: String): String {
|
fun getBlockedGroupsPrefKey(dexLang: String): String {
|
||||||
return "${blockedGroupsPref}_$dexLang"
|
return "${blockedGroupsPref}_$dexLang"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private const val blockedUploaderPref = "blockedUploader"
|
||||||
|
fun getBlockedUploaderPrefKey(dexLang: String): String {
|
||||||
|
return "${blockedUploaderPref}_$dexLang"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,7 +177,11 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
||||||
preferences.getString(
|
preferences.getString(
|
||||||
MDConstants.getBlockedGroupsPrefKey(dexLang),
|
MDConstants.getBlockedGroupsPrefKey(dexLang),
|
||||||
MDConstants.blockedGroupsPrefDefaults
|
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()
|
}.build().toString()
|
||||||
return GET(url, headers, CacheControl.FORCE_NETWORK)
|
return GET(url, headers, CacheControl.FORCE_NETWORK)
|
||||||
}
|
}
|
||||||
|
@ -333,7 +337,11 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
||||||
preferences.getString(
|
preferences.getString(
|
||||||
MDConstants.getBlockedGroupsPrefKey(dexLang),
|
MDConstants.getBlockedGroupsPrefKey(dexLang),
|
||||||
MDConstants.blockedGroupsPrefDefaults
|
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()
|
}.build().toString()
|
||||||
return GET(url, headers = headers, cache = CacheControl.FORCE_NETWORK)
|
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(coverQualityPref)
|
||||||
screen.addPreference(dataSaverPref)
|
screen.addPreference(dataSaverPref)
|
||||||
screen.addPreference(standardHttpsPortPref)
|
screen.addPreference(standardHttpsPortPref)
|
||||||
screen.addPreference(contentRatingPref)
|
screen.addPreference(contentRatingPref)
|
||||||
screen.addPreference(originalLanguagePref)
|
screen.addPreference(originalLanguagePref)
|
||||||
screen.addPreference(blockedGroupsPref)
|
screen.addPreference(blockedGroupsPref)
|
||||||
|
screen.addPreference(blockedUploaderPref)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getFilterList(): FilterList =
|
override fun getFilterList(): FilterList =
|
||||||
|
|
Loading…
Reference in New Issue