Trying to load saved-search as much as possible even though filterList might changed

This commit is contained in:
Cuong-Tran 2024-11-09 22:02:58 +07:00
parent 3610f4a6f2
commit d45eb34d1a
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
2 changed files with 15 additions and 5 deletions

View file

@ -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 {

View file

@ -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<Filter<Any?>>().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 <--
}
}