Fix MangaRock filters (closes #984)
This commit is contained in:
		
							parent
							
								
									fc3a2bf425
								
							
						
					
					
						commit
						e3cdc833b7
					
				@ -5,12 +5,13 @@ ext {
 | 
			
		||||
    appName = 'Tachiyomi: Manga Rock'
 | 
			
		||||
    pkgNameSuffix = 'en.mangarock'
 | 
			
		||||
    extClass = '.MangaRock'
 | 
			
		||||
    extVersionCode = 6
 | 
			
		||||
    extVersionCode = 7
 | 
			
		||||
    libVersion = '1.0'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    compileOnly 'com.google.code.gson:gson:2.8.2'
 | 
			
		||||
    compileOnly 'com.google.code.gson:gson:2.8.5'
 | 
			
		||||
    compileOnly 'com.github.salomonbrys.kotson:kotson:2.5.0'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
apply from: "$rootDir/common.gradle"
 | 
			
		||||
 | 
			
		||||
@ -1,13 +1,24 @@
 | 
			
		||||
package eu.kanade.tachiyomi.extension.en.mangarock
 | 
			
		||||
 | 
			
		||||
import com.google.gson.GsonBuilder
 | 
			
		||||
import com.github.salomonbrys.kotson.jsonObject
 | 
			
		||||
import com.github.salomonbrys.kotson.set
 | 
			
		||||
import eu.kanade.tachiyomi.network.GET
 | 
			
		||||
import eu.kanade.tachiyomi.network.POST
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.*
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.Filter
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.FilterList
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.MangasPage
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.Page
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.SChapter
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.SManga
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.HttpSource
 | 
			
		||||
import okhttp3.*
 | 
			
		||||
import okhttp3.MediaType
 | 
			
		||||
import okhttp3.OkHttpClient
 | 
			
		||||
import okhttp3.Request
 | 
			
		||||
import okhttp3.RequestBody
 | 
			
		||||
import okhttp3.Response
 | 
			
		||||
import okhttp3.ResponseBody
 | 
			
		||||
import org.json.JSONObject
 | 
			
		||||
import java.util.*
 | 
			
		||||
import java.util.ArrayList
 | 
			
		||||
import kotlin.experimental.and
 | 
			
		||||
import kotlin.experimental.xor
 | 
			
		||||
 | 
			
		||||
@ -59,14 +70,13 @@ class MangaRock : HttpSource() {
 | 
			
		||||
 | 
			
		||||
    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
 | 
			
		||||
        val jsonType = MediaType.parse("application/jsonType; charset=utf-8")
 | 
			
		||||
        val gson = GsonBuilder().create()
 | 
			
		||||
 | 
			
		||||
        // Filter
 | 
			
		||||
        if (query.isBlank()) {
 | 
			
		||||
            var status = ""
 | 
			
		||||
            var rank = ""
 | 
			
		||||
            var orderBy = ""
 | 
			
		||||
            var genres = ""
 | 
			
		||||
            val genres = jsonObject()
 | 
			
		||||
            filters.forEach { filter ->
 | 
			
		||||
                when (filter) {
 | 
			
		||||
                    is StatusFilter -> {
 | 
			
		||||
@ -83,22 +93,27 @@ class MangaRock : HttpSource() {
 | 
			
		||||
                        orderBy = filter.toUriPart()
 | 
			
		||||
                    }
 | 
			
		||||
                    is GenreList -> {
 | 
			
		||||
                        genres = filter.state
 | 
			
		||||
                                .filter { genre -> genre.state != Filter.TriState.STATE_IGNORE }
 | 
			
		||||
                                .map { genre ->
 | 
			
		||||
                                    "\"${genre.id}\": ${if (genre.state == Filter.TriState.STATE_INCLUDE) "true" else "false"}"
 | 
			
		||||
                                }
 | 
			
		||||
                                .joinToString(",")
 | 
			
		||||
                        filter.state
 | 
			
		||||
                                .filter { it.state != Filter.TriState.STATE_IGNORE }
 | 
			
		||||
                                .forEach { genres[it.id] = it.state == Filter.TriState.STATE_INCLUDE }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            val body = RequestBody.create(jsonType, gson.toJson(mapOf("status" to status, "genres" to genres, "rank" to rank, "order" to orderBy)))
 | 
			
		||||
            val body = RequestBody.create(jsonType, jsonObject(
 | 
			
		||||
                    "status" to status,
 | 
			
		||||
                    "genres" to genres,
 | 
			
		||||
                    "rank" to rank,
 | 
			
		||||
                    "order" to orderBy
 | 
			
		||||
            ).toString())
 | 
			
		||||
            return POST("$baseUrl/mrs_filter", headers, body)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Regular search
 | 
			
		||||
        val body = RequestBody.create(jsonType, gson.toJson(mapOf("type" to "series", "keywords" to query)))
 | 
			
		||||
        val body = RequestBody.create(jsonType, jsonObject(
 | 
			
		||||
                "type" to "series",
 | 
			
		||||
                "keywords" to query
 | 
			
		||||
        ).toString())
 | 
			
		||||
        return POST("$baseUrl/mrs_search", headers, body)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user