MangaThemesia: Allow searching with filter (#13384)
This commit is contained in:
		
							parent
							
								
									050789f77d
								
							
						
					
					
						commit
						d5a44221ba
					
				@ -81,43 +81,42 @@ abstract class MangaThemesia(
 | 
			
		||||
 | 
			
		||||
    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
 | 
			
		||||
        val url = baseUrl.toHttpUrl().newBuilder()
 | 
			
		||||
        if (query.isNotEmpty()) {
 | 
			
		||||
            url.addPathSegments("page/$page").addQueryParameter("s", query)
 | 
			
		||||
        } else {
 | 
			
		||||
            url.addPathSegment(mangaUrlDirectory.substring(1)).addQueryParameter("page", page.toString())
 | 
			
		||||
            filters.forEach { filter ->
 | 
			
		||||
                when (filter) {
 | 
			
		||||
                    is AuthorFilter -> {
 | 
			
		||||
                        url.addQueryParameter("author", filter.state)
 | 
			
		||||
                    }
 | 
			
		||||
                    is YearFilter -> {
 | 
			
		||||
                        url.addQueryParameter("yearx", filter.state)
 | 
			
		||||
                    }
 | 
			
		||||
                    is StatusFilter -> {
 | 
			
		||||
                        url.addQueryParameter("status", filter.selectedValue())
 | 
			
		||||
                    }
 | 
			
		||||
                    is TypeFilter -> {
 | 
			
		||||
                        url.addQueryParameter("type", filter.selectedValue())
 | 
			
		||||
                    }
 | 
			
		||||
                    is OrderByFilter -> {
 | 
			
		||||
                        url.addQueryParameter("order", filter.selectedValue())
 | 
			
		||||
                    }
 | 
			
		||||
                    is GenreListFilter -> {
 | 
			
		||||
                        filter.state
 | 
			
		||||
                            .filter { it.state != Filter.TriState.STATE_IGNORE }
 | 
			
		||||
                            .forEach {
 | 
			
		||||
                                val value = if (it.state == Filter.TriState.STATE_EXCLUDE) "-${it.value}" else it.value
 | 
			
		||||
                                url.addQueryParameter("genre[]", value)
 | 
			
		||||
                            }
 | 
			
		||||
                    }
 | 
			
		||||
                    // if site has project page, default value "hasProjectPage" = false
 | 
			
		||||
                    is ProjectFilter -> {
 | 
			
		||||
                        if (filter.selectedValue() == "project-filter-on") {
 | 
			
		||||
                            url.setPathSegment(0, projectPageString.substring(1))
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    else -> { /* Do Nothing */ }
 | 
			
		||||
            .addPathSegment(mangaUrlDirectory.substring(1))
 | 
			
		||||
            .addQueryParameter("title", query)
 | 
			
		||||
            .addQueryParameter("page", page.toString())
 | 
			
		||||
 | 
			
		||||
        filters.forEach { filter ->
 | 
			
		||||
            when (filter) {
 | 
			
		||||
                is AuthorFilter -> {
 | 
			
		||||
                    url.addQueryParameter("author", filter.state)
 | 
			
		||||
                }
 | 
			
		||||
                is YearFilter -> {
 | 
			
		||||
                    url.addQueryParameter("yearx", filter.state)
 | 
			
		||||
                }
 | 
			
		||||
                is StatusFilter -> {
 | 
			
		||||
                    url.addQueryParameter("status", filter.selectedValue())
 | 
			
		||||
                }
 | 
			
		||||
                is TypeFilter -> {
 | 
			
		||||
                    url.addQueryParameter("type", filter.selectedValue())
 | 
			
		||||
                }
 | 
			
		||||
                is OrderByFilter -> {
 | 
			
		||||
                    url.addQueryParameter("order", filter.selectedValue())
 | 
			
		||||
                }
 | 
			
		||||
                is GenreListFilter -> {
 | 
			
		||||
                    filter.state
 | 
			
		||||
                        .filter { it.state != Filter.TriState.STATE_IGNORE }
 | 
			
		||||
                        .forEach {
 | 
			
		||||
                            val value = if (it.state == Filter.TriState.STATE_EXCLUDE) "-${it.value}" else it.value
 | 
			
		||||
                            url.addQueryParameter("genre[]", value)
 | 
			
		||||
                        }
 | 
			
		||||
                }
 | 
			
		||||
                // if site has project page, default value "hasProjectPage" = false
 | 
			
		||||
                is ProjectFilter -> {
 | 
			
		||||
                    if (filter.selectedValue() == "project-filter-on") {
 | 
			
		||||
                        url.setPathSegment(0, projectPageString.substring(1))
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else -> { /* Do Nothing */ }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return GET(url.toString())
 | 
			
		||||
@ -290,7 +289,7 @@ abstract class MangaThemesia(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Send the view count request to the Madara endpoint.
 | 
			
		||||
     * Send the view count request to the sites endpoint.
 | 
			
		||||
     *
 | 
			
		||||
     * @param document The response document with the wp-manga data
 | 
			
		||||
     */
 | 
			
		||||
@ -378,7 +377,6 @@ abstract class MangaThemesia(
 | 
			
		||||
 | 
			
		||||
    override fun getFilterList(): FilterList {
 | 
			
		||||
        val filters = mutableListOf<Filter<*>>(
 | 
			
		||||
            Filter.Header("NOTE: Ignored if using text search!"),
 | 
			
		||||
            Filter.Separator(),
 | 
			
		||||
            AuthorFilter(),
 | 
			
		||||
            YearFilter(),
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
 | 
			
		||||
 | 
			
		||||
    override val themeClass = "MangaThemesia"
 | 
			
		||||
 | 
			
		||||
    override val baseVersionCode: Int = 20
 | 
			
		||||
    override val baseVersionCode: Int = 21
 | 
			
		||||
 | 
			
		||||
    override val sources = listOf(
 | 
			
		||||
        MultiLang("Asura Scans", "https://www.asurascans.com", listOf("en", "tr"), className = "AsuraScansFactory", pkgName = "asurascans", overrideVersionCode = 16),
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user