Fix browse search query display and keyboard focus (#8781)
(cherry picked from commit a8230ad574fb5c5dfa22a571862890e414649215) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
This commit is contained in:
parent
562b264048
commit
5586cbeb16
@ -319,6 +319,7 @@ fun SearchToolbar(
|
||||
)
|
||||
LaunchedEffect(searchClickCount) {
|
||||
if (searchQuery == null) return@LaunchedEffect
|
||||
if (searchClickCount == 0 && searchQuery.isNotEmpty()) return@LaunchedEffect
|
||||
try {
|
||||
focusRequester.requestFocus()
|
||||
} catch (_: Throwable) {
|
||||
|
@ -143,6 +143,51 @@ open class BrowseSourceScreenModel(
|
||||
|
||||
val source = sourceManager.get(sourceId) as CatalogueSource
|
||||
|
||||
init {
|
||||
mutableState.update {
|
||||
var query: String? = null
|
||||
var listing = it.listing
|
||||
|
||||
if (listing is Listing.Search) {
|
||||
query = listing.query
|
||||
listing = Listing.Search(query, source.getFilterList())
|
||||
}
|
||||
|
||||
it.copy(
|
||||
listing = listing,
|
||||
filters = source.getFilterList(),
|
||||
toolbarQuery = query,
|
||||
)
|
||||
}
|
||||
|
||||
// SY -->
|
||||
val savedSearchFilters = savedSearch
|
||||
val jsonFilters = filtersJson
|
||||
val filters = state.value.filters
|
||||
if (savedSearchFilters != null) {
|
||||
val savedSearch = runBlocking { getExhSavedSearch.awaitOne(savedSearchFilters) { filters } }
|
||||
if (savedSearch != null) {
|
||||
search(query = savedSearch.query.nullIfBlank(), filters = savedSearch.filterList)
|
||||
}
|
||||
} else if (jsonFilters != null) {
|
||||
runCatching {
|
||||
val filtersJson = Json.decodeFromString<JsonArray>(jsonFilters)
|
||||
filterSerializer.deserialize(filters, filtersJson)
|
||||
search(filters = filters)
|
||||
}
|
||||
}
|
||||
|
||||
getExhSavedSearch.subscribe(source.id, source::getFilterList)
|
||||
.onEach { savedSearches ->
|
||||
mutableState.update { it.copy(savedSearches = savedSearches) }
|
||||
withUIContext {
|
||||
filterSheet?.setSavedSearches(savedSearches)
|
||||
}
|
||||
}
|
||||
.launchIn(coroutineScope)
|
||||
// SY <--
|
||||
}
|
||||
|
||||
/**
|
||||
* Sheet containing filter items.
|
||||
*/
|
||||
@ -177,55 +222,6 @@ open class BrowseSourceScreenModel(
|
||||
}
|
||||
.stateIn(coroutineScope, SharingStarted.Lazily, emptyFlow())
|
||||
|
||||
// SY -->
|
||||
val ehentaiBrowseDisplayMode by unsortedPreferences.enhancedEHentaiView().asState(coroutineScope)
|
||||
|
||||
private val filterSerializer = FilterSerializer()
|
||||
// SY <--
|
||||
|
||||
init {
|
||||
mutableState.update {
|
||||
val initialListing = it.listing
|
||||
val listing = if (initialListing is Listing.Search) {
|
||||
initialListing.copy(filters = source.getFilterList())
|
||||
} else {
|
||||
initialListing
|
||||
}
|
||||
|
||||
it.copy(
|
||||
listing = listing,
|
||||
filters = source.getFilterList(),
|
||||
)
|
||||
}
|
||||
|
||||
// SY -->
|
||||
val savedSearchFilters = savedSearch
|
||||
val jsonFilters = filtersJson
|
||||
val filters = state.value.filters
|
||||
if (savedSearchFilters != null) {
|
||||
val savedSearch = runBlocking { getExhSavedSearch.awaitOne(savedSearchFilters) { filters } }
|
||||
if (savedSearch != null) {
|
||||
search(query = savedSearch.query.nullIfBlank(), filters = savedSearch.filterList)
|
||||
}
|
||||
} else if (jsonFilters != null) {
|
||||
runCatching {
|
||||
val filtersJson = Json.decodeFromString<JsonArray>(jsonFilters)
|
||||
filterSerializer.deserialize(filters, filtersJson)
|
||||
search(filters = filters)
|
||||
}
|
||||
}
|
||||
|
||||
getExhSavedSearch.subscribe(source.id, source::getFilterList)
|
||||
.onEach { savedSearches ->
|
||||
mutableState.update { it.copy(savedSearches = savedSearches) }
|
||||
withUIContext {
|
||||
filterSheet?.setSavedSearches(savedSearches)
|
||||
}
|
||||
}
|
||||
.launchIn(coroutineScope)
|
||||
// SY <--
|
||||
}
|
||||
|
||||
fun getColumnsPreference(orientation: Int): GridCells {
|
||||
val isLandscape = orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||
val columns = if (isLandscape) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user