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