From d45eb34d1a6ee5e0eb912917e9ab42c9a85e952f Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Sat, 9 Nov 2024 22:02:58 +0700 Subject: [PATCH] Trying to load saved-search as much as possible even though filterList might changed --- .../domain/source/interactor/GetExhSavedSearch.kt | 7 +++---- .../ts/api/http/serializer/FilterSerializer.kt | 13 ++++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/GetExhSavedSearch.kt b/app/src/main/java/eu/kanade/domain/source/interactor/GetExhSavedSearch.kt index 2ab03779f..0b69d61b8 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/GetExhSavedSearch.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/GetExhSavedSearch.kt @@ -7,7 +7,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map -import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonArray import tachiyomi.core.common.util.lang.withIOContext @@ -43,13 +42,14 @@ class GetExhSavedSearch( } private fun loadSearch(search: SavedSearch, getFilterList: () -> FilterList): EXHSavedSearch { + val originalFilters = getFilterList() val filters = getFilters(search.filtersJson) return EXHSavedSearch( id = search.id, name = search.name, query = search.query?.nullIfBlank(), - filterList = filters?.let { deserializeFilters(it, getFilterList) }, + filterList = filters?.let { deserializeFilters(it, originalFilters) }, ) } @@ -61,9 +61,8 @@ class GetExhSavedSearch( }.getOrNull() } - private fun deserializeFilters(filters: JsonArray, getFilterList: () -> FilterList): FilterList? { + private fun deserializeFilters(filters: JsonArray, originalFilters: FilterList): FilterList? { return runCatching { - val originalFilters = getFilterList() filterSerializer.deserialize(originalFilters, filters) originalFilters }.onFailure { diff --git a/source-api/src/commonMain/kotlin/xyz/nulldev/ts/api/http/serializer/FilterSerializer.kt b/source-api/src/commonMain/kotlin/xyz/nulldev/ts/api/http/serializer/FilterSerializer.kt index f8d15666d..13a88ccac 100644 --- a/source-api/src/commonMain/kotlin/xyz/nulldev/ts/api/http/serializer/FilterSerializer.kt +++ b/source-api/src/commonMain/kotlin/xyz/nulldev/ts/api/http/serializer/FilterSerializer.kt @@ -15,6 +15,9 @@ import kotlinx.serialization.json.jsonPrimitive import kotlinx.serialization.json.long import kotlinx.serialization.json.put import kotlinx.serialization.json.putJsonObject +import logcat.LogPriority +import logcat.asLog +import tachiyomi.core.common.util.system.logcat import kotlin.reflect.KMutableProperty1 import kotlin.reflect.full.isSubclassOf @@ -69,7 +72,15 @@ class FilterSerializer { fun deserialize(filters: FilterList, json: JsonArray) { filters.filterIsInstance>().zip(json).forEach { (filter, obj) -> - deserialize(filter, obj.jsonObject) + // KMK --> + try { + // KMK <-- + deserialize(filter, obj.jsonObject) + // KMK --> + } catch (e: Exception) { + logcat(LogPriority.ERROR) { e.asLog() } + } + // KMK <-- } }