From 42a93fca5c531bf6035942c2d5f2b8cfe6db2f85 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Thu, 16 Mar 2023 19:07:10 -0400 Subject: [PATCH] Fix saved search sometimes using a blank query --- .../source/interactor/GetExhSavedSearch.kt | 3 ++- .../source/browse/BrowseSourceScreenModel.kt | 25 +++++++++++-------- .../domain/source/model/EXHSavedSearch.kt | 2 +- 3 files changed, 18 insertions(+), 12 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 13784ebc3..70ae73b23 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 @@ -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) }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt index bad31e10b..74218d226 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt @@ -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, + ) + } } } diff --git a/domain/src/main/java/tachiyomi/domain/source/model/EXHSavedSearch.kt b/domain/src/main/java/tachiyomi/domain/source/model/EXHSavedSearch.kt index 11e3d85e4..d4b695dea 100644 --- a/domain/src/main/java/tachiyomi/domain/source/model/EXHSavedSearch.kt +++ b/domain/src/main/java/tachiyomi/domain/source/model/EXHSavedSearch.kt @@ -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?, )