MyReadingManga - refactor search (#3991)
This commit is contained in:
parent
e508cfddc5
commit
f28dfa6af4
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'MyReadingManga'
|
extName = 'MyReadingManga'
|
||||||
pkgNameSuffix = 'all.myreadingmanga'
|
pkgNameSuffix = 'all.myreadingmanga'
|
||||||
extClass = '.MyReadingMangaFactory'
|
extClass = '.MyReadingMangaFactory'
|
||||||
extVersionCode = 37
|
extVersionCode = 38
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,19 +65,19 @@ open class MyReadingManga(override val lang: String, private val siteLang: Strin
|
||||||
|
|
||||||
// Search
|
// Search
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
var fqIndex = 0
|
val filterList = if (filters.isEmpty()) getFilterList() else filters
|
||||||
|
// whether enforce language is true will change the index of the loop below
|
||||||
|
val indexModifier = filterList.filterIsInstance<EnforceLanguageFilter>().first().indexModifier()
|
||||||
|
|
||||||
val uri = Uri.parse("$baseUrl/search/").buildUpon()
|
val uri = Uri.parse("$baseUrl/search/").buildUpon()
|
||||||
.appendQueryParameter("wpsolr_q", query)
|
.appendQueryParameter("wpsolr_q", query)
|
||||||
@Suppress("NullableBooleanElvis")
|
filterList.forEachIndexed { i, filter ->
|
||||||
if ((filters.find { it is EnforceLanguageFilter } as? Filter.CheckBox)?.state ?: true)
|
if (filter is UriFilter) {
|
||||||
uri.appendQueryParameter("wpsolr_fq[$fqIndex]", "lang_str:$siteLang")
|
filter.addToUri(uri, "wpsolr_fq[${i - indexModifier}]")
|
||||||
.appendQueryParameter("wpsolr_page", page.toString())
|
|
||||||
filters.forEach {
|
|
||||||
if (it is UriFilter) {
|
|
||||||
fqIndex++
|
|
||||||
it.addToUri(uri, "wpsolr_fq[$fqIndex]")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
uri.appendQueryParameter("wpsolr_page", page.toString())
|
||||||
|
|
||||||
return GET(uri.toString(), headers)
|
return GET(uri.toString(), headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@ open class MyReadingManga(override val lang: String, private val siteLang: Strin
|
||||||
// Generates the filter lists for app
|
// Generates the filter lists for app
|
||||||
override fun getFilterList(): FilterList {
|
override fun getFilterList(): FilterList {
|
||||||
return FilterList(
|
return FilterList(
|
||||||
EnforceLanguageFilter(),
|
EnforceLanguageFilter(siteLang),
|
||||||
GenreFilter(returnFilter(getCache(cachedPagesUrls["genres"]!!), ".tagcloud a[href*=/genre/]")),
|
GenreFilter(returnFilter(getCache(cachedPagesUrls["genres"]!!), ".tagcloud a[href*=/genre/]")),
|
||||||
TagFilter(returnFilter(getCache(cachedPagesUrls["tags"]!!), ".tagcloud a[href*=/tag/]")),
|
TagFilter(returnFilter(getCache(cachedPagesUrls["tags"]!!), ".tagcloud a[href*=/tag/]")),
|
||||||
CatFilter(returnFilter(getCache(cachedPagesUrls["categories"]!!), ".links a")),
|
CatFilter(returnFilter(getCache(cachedPagesUrls["categories"]!!), ".links a")),
|
||||||
|
@ -262,7 +262,12 @@ open class MyReadingManga(override val lang: String, private val siteLang: Strin
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private class EnforceLanguageFilter : Filter.CheckBox("Enforce language", true)
|
private class EnforceLanguageFilter(val siteLang: String) : Filter.CheckBox("Enforce language", true), UriFilter {
|
||||||
|
fun indexModifier() = if (state) 0 else 1
|
||||||
|
override fun addToUri(uri: Uri.Builder, uriParam: String) {
|
||||||
|
if (state) uri.appendQueryParameter(uriParam, "lang_str:$siteLang")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class GenreFilter(GENRES: Array<String>) : UriSelectFilter("Genre", "genre_str", arrayOf("Any", *GENRES))
|
private class GenreFilter(GENRES: Array<String>) : UriSelectFilter("Genre", "genre_str", arrayOf("Any", *GENRES))
|
||||||
private class TagFilter(POPTAG: Array<String>) : UriSelectFilter("Popular Tags", "tags", arrayOf("Any", *POPTAG))
|
private class TagFilter(POPTAG: Array<String>) : UriSelectFilter("Popular Tags", "tags", arrayOf("Any", *POPTAG))
|
||||||
|
|
Loading…
Reference in New Issue