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) {
|
LaunchedEffect(searchClickCount) {
|
||||||
if (searchQuery == null) return@LaunchedEffect
|
if (searchQuery == null) return@LaunchedEffect
|
||||||
|
if (searchClickCount == 0 && searchQuery.isNotEmpty()) return@LaunchedEffect
|
||||||
try {
|
try {
|
||||||
focusRequester.requestFocus()
|
focusRequester.requestFocus()
|
||||||
} catch (_: Throwable) {
|
} catch (_: Throwable) {
|
||||||
|
@ -143,6 +143,51 @@ open class BrowseSourceScreenModel(
|
|||||||
|
|
||||||
val source = sourceManager.get(sourceId) as CatalogueSource
|
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.
|
* Sheet containing filter items.
|
||||||
*/
|
*/
|
||||||
@ -177,55 +222,6 @@ open class BrowseSourceScreenModel(
|
|||||||
}
|
}
|
||||||
.stateIn(coroutineScope, SharingStarted.Lazily, emptyFlow())
|
.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 {
|
fun getColumnsPreference(orientation: Int): GridCells {
|
||||||
val isLandscape = orientation == Configuration.ORIENTATION_LANDSCAPE
|
val isLandscape = orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||||
val columns = if (isLandscape) {
|
val columns = if (isLandscape) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user