fix filterlist bugs (#306)

This commit is contained in:
Aria Moradi
2022-03-05 01:13:48 +03:30
committed by GitHub
parent 05513bf8b9
commit 8fb1a0bb1f
3 changed files with 14 additions and 4 deletions

View File

@@ -7,8 +7,12 @@ package suwayomi.tachidesk.manga.controller
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
import com.fasterxml.jackson.databind.exc.MismatchedInputException
import io.javalin.http.Context
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import org.kodein.di.DI
import org.kodein.di.conf.global
import org.kodein.di.instance
import suwayomi.tachidesk.manga.impl.MangaList
import suwayomi.tachidesk.manga.impl.Search
import suwayomi.tachidesk.manga.impl.Search.FilterChange
@@ -70,13 +74,15 @@ object SourceController {
ctx.json(Search.getFilterList(sourceId, reset))
}
private val json by DI.global.instance<Json>()
/** change filters of source with id `sourceId` */
fun setFilters(ctx: Context) {
val sourceId = ctx.pathParam("sourceId").toLong()
val filterChange = try {
ctx.bodyAsClass<List<FilterChange>>()
} catch (e: MismatchedInputException) {
listOf(ctx.bodyAsClass<FilterChange>())
json.decodeFromString<List<FilterChange>>(ctx.body())
} catch (e: Exception) {
listOf(json.decodeFromString<FilterChange>(ctx.body()))
}
ctx.json(Search.setFilter(sourceId, filterChange))

View File

@@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import io.javalin.plugin.json.JsonMapper
import kotlinx.serialization.Serializable
import org.kodein.di.DI
import org.kodein.di.conf.global
import org.kodein.di.instance
@@ -115,6 +116,7 @@ object Search {
private val jsonMapper by DI.global.instance<JsonMapper>()
@Serializable
data class FilterChange(
val position: Int,
val state: String

View File

@@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.App
import eu.kanade.tachiyomi.source.local.LocalSource
import io.javalin.plugin.json.JavalinJackson
import io.javalin.plugin.json.JsonMapper
import kotlinx.serialization.json.Json
import mu.KotlinLogging
import org.kodein.di.DI
import org.kodein.di.bind
@@ -59,6 +60,7 @@ fun applicationSetup() {
bind<ApplicationDirs>() with singleton { applicationDirs }
bind<IUpdater>() with singleton { Updater() }
bind<JsonMapper>() with singleton { JavalinJackson() }
bind<Json>() with singleton { Json { ignoreUnknownKeys = true } }
}
)