[Mangadex] Update originalLanguage pref to use MultiSelectListPreference (#9671)
The zh-hk workaround is done during query param building rather than being stored in the preference value
This commit is contained in:
parent
f3b3995174
commit
55b2eac827
@ -6,7 +6,7 @@ ext {
|
||||
extName = 'MangaDex'
|
||||
pkgNameSuffix = 'all.mangadex'
|
||||
extClass = '.MangaDexFactory'
|
||||
extVersionCode = 142
|
||||
extVersionCode = 143
|
||||
isNsfw = true
|
||||
}
|
||||
|
||||
|
@ -68,21 +68,13 @@ object MDConstants {
|
||||
return "${contentRatingPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val originalLanguageJapanesePref = "originalLanguageJapanese"
|
||||
private const val originalLanguagePref = "originalLanguage"
|
||||
const val originalLanguagePrefValJapanese = "ja"
|
||||
const val originalLanguagePrefValChinese = "zh"
|
||||
const val originalLanguagePrefValChineseHk = "zh-hk"
|
||||
const val originalLanguagePrefValKorean = "ko"
|
||||
|
||||
fun getOriginalLanguageJapanesePref(dexLang: String): String {
|
||||
return "${originalLanguageJapanesePref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val originalLanguageChinesePref = "originalLanguageChinese"
|
||||
|
||||
fun getOriginalLanguageChinesePref(dexLang: String): String {
|
||||
return "${originalLanguageChinesePref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val originalLanguageKoreanPref = "originalLanguageKorean"
|
||||
|
||||
fun getOriginalLanguageKoreanPref(dexLang: String): String {
|
||||
return "${originalLanguageKoreanPref}_$dexLang"
|
||||
fun getOriginalLanguagePrefKey(dexLang: String): String {
|
||||
return "${originalLanguagePref}_$dexLang"
|
||||
}
|
||||
}
|
||||
|
@ -70,28 +70,15 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
||||
MDConstants.getContentRatingPrefKey(dexLang),
|
||||
MDConstants.contentRatingPrefDefaults
|
||||
)?.forEach { addQueryParameter("contentRating[]", it) }
|
||||
if (preferences.getBoolean(
|
||||
MDConstants.getOriginalLanguageJapanesePref(dexLang),
|
||||
false
|
||||
)
|
||||
) {
|
||||
addQueryParameter("originalLanguage[]", "ja")
|
||||
}
|
||||
// dex has zh and zh-hk for chinese manhua
|
||||
if (preferences.getBoolean(
|
||||
MDConstants.getOriginalLanguageChinesePref(dexLang),
|
||||
false
|
||||
)
|
||||
) {
|
||||
addQueryParameter("originalLanguage[]", "zh")
|
||||
addQueryParameter("originalLanguage[]", "zh-hk")
|
||||
}
|
||||
if (preferences.getBoolean(
|
||||
MDConstants.getOriginalLanguageKoreanPref(dexLang),
|
||||
false
|
||||
)
|
||||
) {
|
||||
addQueryParameter("originalLanguage[]", "ko")
|
||||
preferences.getStringSet(
|
||||
MDConstants.getOriginalLanguagePrefKey(dexLang),
|
||||
setOf()
|
||||
)?.forEach {
|
||||
addQueryParameter("originalLanguage[]", it)
|
||||
// dex has zh and zh-hk for chinese manhua
|
||||
if (it == MDConstants.originalLanguagePrefValChinese) {
|
||||
addQueryParameter("originalLanguage[]", MDConstants.originalLanguagePrefValChineseHk)
|
||||
}
|
||||
}
|
||||
}.build().toUrl().toString()
|
||||
return GET(
|
||||
@ -124,7 +111,7 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
||||
return MangasPage(mangaList, hasMoreResults)
|
||||
}
|
||||
|
||||
// LATEST section API can't sort by date yet so not implemented
|
||||
// LATEST section API can't sort by date yet so not implemented
|
||||
override fun latestUpdatesParse(response: Response): MangasPage {
|
||||
val chapterListDto = helper.json.decodeFromString<ChapterListDto>(response.body!!.string())
|
||||
val hasMoreResults = chapterListDto.limit + chapterListDto.offset < chapterListDto.total
|
||||
@ -170,16 +157,15 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
||||
addQueryParameter("translatedLanguage[]", dexLang)
|
||||
addQueryParameter("order[publishAt]", "desc")
|
||||
addQueryParameter("includeFutureUpdates", "0")
|
||||
if (preferences.getBoolean(MDConstants.getOriginalLanguageJapanesePref(dexLang), false)) {
|
||||
addQueryParameter("originalLanguage[]", "ja")
|
||||
}
|
||||
// dex has zh and zh-hk for chinese manhua
|
||||
if (preferences.getBoolean(MDConstants.getOriginalLanguageChinesePref(dexLang), false)) {
|
||||
addQueryParameter("originalLanguage[]", "zh")
|
||||
addQueryParameter("originalLanguage[]", "zh-hk")
|
||||
}
|
||||
if (preferences.getBoolean(MDConstants.getOriginalLanguageKoreanPref(dexLang), false)) {
|
||||
addQueryParameter("originalLanguage[]", "ko")
|
||||
preferences.getStringSet(
|
||||
MDConstants.getOriginalLanguagePrefKey(dexLang),
|
||||
setOf()
|
||||
)?.forEach {
|
||||
addQueryParameter("originalLanguage[]", it)
|
||||
// dex has zh and zh-hk for chinese manhua
|
||||
if (it == MDConstants.originalLanguagePrefValChinese) {
|
||||
addQueryParameter("originalLanguage[]", MDConstants.originalLanguagePrefValChineseHk)
|
||||
}
|
||||
}
|
||||
preferences.getStringSet(
|
||||
MDConstants.getContentRatingPrefKey(dexLang),
|
||||
@ -489,44 +475,21 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
||||
}
|
||||
}
|
||||
|
||||
val originalLanguageJapanesePref = SwitchPreferenceCompat(screen.context).apply {
|
||||
key = MDConstants.getOriginalLanguageJapanesePref(dexLang)
|
||||
title = "Japanese"
|
||||
summary = "If enabled, only shows content that was originally published in Japanese in both latest and browse"
|
||||
setDefaultValue(false)
|
||||
|
||||
val originalLanguagePref = MultiSelectListPreference(screen.context).apply {
|
||||
key = MDConstants.getOriginalLanguagePrefKey(dexLang)
|
||||
title = "Filter original languages"
|
||||
summary = "Only show content that was originally published in the selected languages in both latest and browse"
|
||||
entries = arrayOf("Japanese", "Chinese", "Korean")
|
||||
entryValues = arrayOf(
|
||||
MDConstants.originalLanguagePrefValJapanese,
|
||||
MDConstants.originalLanguagePrefValChinese,
|
||||
MDConstants.originalLanguagePrefValKorean
|
||||
)
|
||||
setDefaultValue(setOf<String>())
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val checkValue = newValue as Boolean
|
||||
val checkValue = newValue as Set<String>
|
||||
preferences.edit()
|
||||
.putBoolean(MDConstants.getOriginalLanguageJapanesePref(dexLang), checkValue)
|
||||
.commit()
|
||||
}
|
||||
}
|
||||
|
||||
val originalLanguageChinesePref = SwitchPreferenceCompat(screen.context).apply {
|
||||
key = MDConstants.getOriginalLanguageChinesePref(dexLang)
|
||||
title = "Chinese"
|
||||
summary = "If enabled, only shows content that was originally published in Chinese in both latest and browse"
|
||||
setDefaultValue(false)
|
||||
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val checkValue = newValue as Boolean
|
||||
preferences.edit()
|
||||
.putBoolean(MDConstants.getOriginalLanguageChinesePref(dexLang), checkValue)
|
||||
.commit()
|
||||
}
|
||||
}
|
||||
|
||||
val originalLanguageKoreanPref = SwitchPreferenceCompat(screen.context).apply {
|
||||
key = MDConstants.getOriginalLanguageKoreanPref(dexLang)
|
||||
title = "Korean"
|
||||
summary = "If enabled, only shows content that was originally published in Korean in both latest and browse"
|
||||
setDefaultValue(false)
|
||||
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val checkValue = newValue as Boolean
|
||||
preferences.edit()
|
||||
.putBoolean(MDConstants.getOriginalLanguageKoreanPref(dexLang), checkValue)
|
||||
.putStringSet(MDConstants.getOriginalLanguagePrefKey(dexLang), checkValue)
|
||||
.commit()
|
||||
}
|
||||
}
|
||||
@ -535,9 +498,7 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
||||
screen.addPreference(dataSaverPref)
|
||||
screen.addPreference(standardHttpsPortPref)
|
||||
screen.addPreference(contentRatingPref)
|
||||
screen.addPreference(originalLanguageJapanesePref)
|
||||
screen.addPreference(originalLanguageChinesePref)
|
||||
screen.addPreference(originalLanguageKoreanPref)
|
||||
screen.addPreference(originalLanguagePref)
|
||||
}
|
||||
|
||||
override fun getFilterList(): FilterList =
|
||||
|
@ -78,26 +78,26 @@ class MangaDexFilters {
|
||||
private class OriginalLanguageList(originalLanguage: List<OriginalLanguage>) :
|
||||
Filter.Group<OriginalLanguage>("Original language", originalLanguage)
|
||||
|
||||
private fun getOriginalLanguage(preferences: SharedPreferences, dexLang: String) = listOf(
|
||||
OriginalLanguage("Japanese (Manga)", "ja").apply {
|
||||
state = preferences.getBoolean(
|
||||
MDConstants.getOriginalLanguageJapanesePref(dexLang),
|
||||
false
|
||||
)
|
||||
},
|
||||
OriginalLanguage("Chinese (Manhua)", "zh").apply {
|
||||
state = preferences.getBoolean(
|
||||
MDConstants.getOriginalLanguageChinesePref(dexLang),
|
||||
false
|
||||
)
|
||||
},
|
||||
OriginalLanguage("Korean (Manhwa)", "ko").apply {
|
||||
state = preferences.getBoolean(
|
||||
MDConstants.getOriginalLanguageKoreanPref(dexLang),
|
||||
false
|
||||
)
|
||||
},
|
||||
)
|
||||
private fun getOriginalLanguage(preferences: SharedPreferences, dexLang: String): List<OriginalLanguage> {
|
||||
val originalLanguages = preferences.getStringSet(
|
||||
MDConstants.getOriginalLanguagePrefKey(dexLang),
|
||||
setOf()
|
||||
)
|
||||
return listOf(
|
||||
OriginalLanguage("Japanese (Manga)", "ja").apply {
|
||||
state = originalLanguages
|
||||
?.contains(MDConstants.originalLanguagePrefValJapanese) ?: false
|
||||
},
|
||||
OriginalLanguage("Chinese (Manhua)", "zh").apply {
|
||||
state = originalLanguages
|
||||
?.contains(MDConstants.originalLanguagePrefValChinese) ?: false
|
||||
},
|
||||
OriginalLanguage("Korean (Manhwa)", "ko").apply {
|
||||
state = originalLanguages
|
||||
?.contains(MDConstants.originalLanguagePrefValKorean) ?: false
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
internal class Tag(val id: String, name: String) : Filter.TriState(name)
|
||||
private class TagList(tags: List<Tag>) : Filter.Group<Tag>("Tags", tags)
|
||||
@ -209,10 +209,10 @@ class MangaDexFilters {
|
||||
filter.state.forEach { lang ->
|
||||
if (lang.state) {
|
||||
// dex has zh and zh-hk for chinese manhua
|
||||
if (lang.isoCode == "zh") {
|
||||
if (lang.isoCode == MDConstants.originalLanguagePrefValChinese) {
|
||||
addQueryParameter(
|
||||
"originalLanguage[]",
|
||||
"zh-hk"
|
||||
MDConstants.originalLanguagePrefValChineseHk
|
||||
)
|
||||
}
|
||||
addQueryParameter(
|
||||
|
Loading…
x
Reference in New Issue
Block a user