Fix saved search sometimes using a blank query

This commit is contained in:
Jobobby04 2023-03-16 19:07:10 -04:00
parent 8f97dd7fb8
commit 42a93fca5c
3 changed files with 18 additions and 12 deletions

View File

@ -2,6 +2,7 @@ package eu.kanade.domain.source.interactor
import eu.kanade.tachiyomi.source.model.FilterList
import exh.log.xLogE
import exh.util.nullIfBlank
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOn
@ -45,7 +46,7 @@ class GetExhSavedSearch(
return EXHSavedSearch(
id = search.id,
name = search.name,
query = search.query.orEmpty(),
query = search.query?.nullIfBlank(),
filterList = filters?.let { deserializeFilters(it, getFilterList) },
)
}

View File

@ -40,7 +40,6 @@ import eu.kanade.tachiyomi.util.removeCovers
import exh.metadata.metadata.base.RaisedSearchMetadata
import exh.source.getMainSource
import exh.source.mangaDexSourceIds
import exh.util.nullIfBlank
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
@ -166,7 +165,7 @@ open class BrowseSourceScreenModel(
if (savedSearchFilters != null) {
val savedSearch = runBlocking { getExhSavedSearch.awaitOne(savedSearchFilters) { filters } }
if (savedSearch != null) {
search(query = savedSearch.query.nullIfBlank(), filters = savedSearch.filterList)
search(query = savedSearch.query, filters = savedSearch.filterList)
}
} else if (jsonFilters != null) {
runCatching {
@ -181,9 +180,6 @@ open class BrowseSourceScreenModel(
.map { it.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, EXHSavedSearch::name)) }
.onEach { savedSearches ->
mutableState.update { it.copy(savedSearches = savedSearches) }
/*withUIContext {
filterSheet?.setSavedSearches(savedSearches)
}*/
}
.launchIn(coroutineScope)
}
@ -529,6 +525,8 @@ open class BrowseSourceScreenModel(
onToast: (Int) -> Unit,
) {
coroutineScope.launchIO {
if (source !is CatalogueSource) return@launchIO
if (search.filterList == null && state.value.filters.isNotEmpty()) {
withUIContext {
onToast(R.string.save_search_invalid)
@ -536,13 +534,20 @@ open class BrowseSourceScreenModel(
return@launchIO
}
val allDefault = search.filterList != null && search.filterList == (source as? CatalogueSource)?.getFilterList()
val allDefault = search.filterList != null && search.filterList == source.getFilterList()
setDialog(null)
search(
query = search.query,
filters = if (allDefault) null else search.filterList,
)
mutableState.update {
it.copy(
listing = Listing.Search(
query = search.query,
filters = search.filterList
?.takeUnless { allDefault }
?: source.getFilterList(),
),
toolbarQuery = search.query,
)
}
}
}

View File

@ -5,6 +5,6 @@ import eu.kanade.tachiyomi.source.model.FilterList
data class EXHSavedSearch(
val id: Long,
val name: String,
val query: String,
val query: String?,
val filterList: FilterList?,
)