From 00ef9f9477c68b27005f5112397b0f2d04d7d6fd Mon Sep 17 00:00:00 2001 From: Rama Bondan Prakoso Date: Fri, 19 Jul 2019 17:05:28 +0700 Subject: [PATCH] Mangadex: Fix search filters for demographic and publication (#1315) change to list selection like on the website Signed-off-by: Rama Bondan Prakoso --- src/all/mangadex/build.gradle | 2 +- .../extension/all/mangadex/Mangadex.kt | 44 +++++++++++++++---- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle index ebe547c65..f24650238 100644 --- a/src/all/mangadex/build.gradle +++ b/src/all/mangadex/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: MangaDex' pkgNameSuffix = 'all.mangadex' extClass = '.MangadexFactory' - extVersionCode = 63 + extVersionCode = 64 libVersion = '1.2' } 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 d98aa0222..1e912e2ab 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 @@ -211,13 +211,25 @@ open class Mangadex(override val lang: String, private val internalLang: String, when (filter) { is TextField -> url.addQueryParameter(filter.key, filter.state) is Demographic -> { - if (filter.state != 0) { - url.addQueryParameter("demo_id", filter.state.toString()) + val DemographicToInclude = mutableListOf() + filter.state.forEach { content -> + if (content.isIncluded()) { + DemographicToInclude.add(content.id) + } + } + if (DemographicToInclude.isNotEmpty()) { + url.addQueryParameter("demos", DemographicToInclude.joinToString(",")) } } is PublicationStatus -> { - if (filter.state != 0) { - url.addQueryParameter("status_id", filter.state.toString()) + val PublicationToInclude = mutableListOf() + filter.state.forEach { content -> + if (content.isIncluded()) { + PublicationToInclude.add(content.id) + } + } + if (PublicationToInclude.isNotEmpty()) { + url.addQueryParameter("statuses", PublicationToInclude.joinToString(",")) } } is OriginalLanguage -> { @@ -562,15 +574,29 @@ open class Mangadex(override val lang: String, private val internalLang: String, private fun getShowThumbnail(): Int = preferences.getInt(SHOW_THUMBNAIL_PREF, 0) private fun getServer(): String = preferences.getString(SERVER_PREF, "0") - private class TextField(name: String, val key: String) : Filter.Text(name) private class Tag(val id: String, name: String) : Filter.TriState(name) + private class Demographic(demographics: List) : Filter.Group("Demographic", demographics) + private class PublicationStatus(publications: List) : Filter.Group("Publication", publications) private class ContentList(contents: List) : Filter.Group("Content", contents) private class FormatList(formats: List) : Filter.Group("Format", formats) private class GenreList(genres: List) : Filter.Group("Genres", genres) private class R18 : Filter.Select("R18+", arrayOf("Default", "Show all", "Show only", "Show none")) - private class Demographic : Filter.Select("Demographic", arrayOf("All", "Shounen", "Shoujo", "Seinen", "Josei")) - private class PublicationStatus : Filter.Select("Publication status", arrayOf("All", "Ongoing", "Completed", "Cancelled", "Hiatus")) + + private fun getDemographic() = listOf( + Tag("1", "Shounen"), + Tag("2", "Shoujo"), + Tag("3", "Seinen"), + Tag("4", "Josei") + ).sortedWith(compareBy { it.name }) + + private fun getPublicationStatus() = listOf( + Tag("1", "Ongoing"), + Tag("2", "Completed"), + Tag("3", "Cancelled"), + Tag("4", "Hiatus") + ).sortedWith(compareBy { it.name }) + private class ThemeList(themes: List) : Filter.Group("Themes", themes) private class TagInclusionMode : Filter.Select("Tag inclusion mode", arrayOf("All (and)", "Any (or)"), 0) private class TagExclusionMode : Filter.Select("Tag exclusion mode", arrayOf("All (and)", "Any (or)"), 1) @@ -587,8 +613,8 @@ open class Mangadex(override val lang: String, private val internalLang: String, TextField("Artist", "artist"), R18(), SortFilter(), - Demographic(), - PublicationStatus(), + Demographic(getDemographic()), + PublicationStatus(getPublicationStatus()), OriginalLanguage(), ContentList(getContentList()), FormatList(getFormatList()),