mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-12-23 00:01:54 +01:00
Fix library search query being lost when returning (closes #3473)
This commit is contained in:
parent
ec56c27071
commit
f762598c5c
@ -38,10 +38,7 @@ class LibraryCategoryAdapter(view: LibraryCategoryView) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun performFilter() {
|
fun performFilter() {
|
||||||
var s = getFilter(String::class.java)
|
val s = getFilter(String::class.java) ?: ""
|
||||||
if (s == null) {
|
|
||||||
s = ""
|
|
||||||
}
|
|
||||||
updateDataSet(mangas.filter { it.filter(s) })
|
updateDataSet(mangas.filter { it.filter(s) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -168,7 +168,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
|||||||
*
|
*
|
||||||
* @param event the event received.
|
* @param event the event received.
|
||||||
*/
|
*/
|
||||||
fun onNextLibraryManga(event: LibraryMangaEvent) {
|
private fun onNextLibraryManga(event: LibraryMangaEvent) {
|
||||||
// Get the manga list for this category.
|
// Get the manga list for this category.
|
||||||
val mangaForCategory = event.getMangaForCategory(category).orEmpty()
|
val mangaForCategory = event.getMangaForCategory(category).orEmpty()
|
||||||
|
|
||||||
|
@ -38,8 +38,9 @@ import eu.kanade.tachiyomi.ui.manga.MangaController
|
|||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
import eu.kanade.tachiyomi.util.system.toast
|
import eu.kanade.tachiyomi.util.system.toast
|
||||||
import kotlinx.android.synthetic.main.main_activity.tabs
|
import kotlinx.android.synthetic.main.main_activity.tabs
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
|
||||||
import kotlinx.coroutines.flow.drop
|
import kotlinx.coroutines.flow.drop
|
||||||
|
import kotlinx.coroutines.flow.dropWhile
|
||||||
|
import kotlinx.coroutines.flow.filter
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import reactivecircus.flowbinding.android.view.clicks
|
import reactivecircus.flowbinding.android.view.clicks
|
||||||
@ -72,7 +73,7 @@ class LibraryController(
|
|||||||
/**
|
/**
|
||||||
* Library search query.
|
* Library search query.
|
||||||
*/
|
*/
|
||||||
private var query: String? = ""
|
private var query: String = ""
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Currently selected mangas.
|
* Currently selected mangas.
|
||||||
@ -367,19 +368,20 @@ class LibraryController(
|
|||||||
searchView.maxWidth = Int.MAX_VALUE
|
searchView.maxWidth = Int.MAX_VALUE
|
||||||
searchItem.fixExpand(onExpand = { invalidateMenuOnExpand() })
|
searchItem.fixExpand(onExpand = { invalidateMenuOnExpand() })
|
||||||
|
|
||||||
if (!query.isNullOrEmpty()) {
|
if (query.isNotEmpty()) {
|
||||||
searchItem.expandActionView()
|
searchItem.expandActionView()
|
||||||
searchView.setQuery(query, true)
|
searchView.setQuery(query, true)
|
||||||
searchView.clearFocus()
|
searchView.clearFocus()
|
||||||
|
|
||||||
// If we re-enter the controller with a prior search still active
|
performSearch()
|
||||||
view?.post {
|
|
||||||
performSearch()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
searchView.queryTextChanges()
|
searchView.queryTextChanges()
|
||||||
.distinctUntilChanged()
|
// Ignore events if this controller isn't at the top to avoid query being reset
|
||||||
|
.filter { router.backstack.lastOrNull()?.controller() == this }
|
||||||
|
// If we re-enter the controller with a prior search still active, but searchview
|
||||||
|
// content sometimes appears empty.
|
||||||
|
.dropWhile { query.isNotEmpty() && query != it.toString() }
|
||||||
.onEach {
|
.onEach {
|
||||||
query = it.toString()
|
query = it.toString()
|
||||||
performSearch()
|
performSearch()
|
||||||
@ -390,17 +392,14 @@ class LibraryController(
|
|||||||
menu.findItem(R.id.action_filter).icon.mutate()
|
menu.findItem(R.id.action_filter).icon.mutate()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun search(query: String?) {
|
fun search(query: String) {
|
||||||
// Delay to let contents load first for searches from manga info
|
this.query = query
|
||||||
view?.post {
|
performSearch()
|
||||||
this.query = query
|
|
||||||
performSearch()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun performSearch() {
|
private fun performSearch() {
|
||||||
searchRelay.call(query)
|
searchRelay.call(query)
|
||||||
if (!query.isNullOrEmpty()) {
|
if (query.isNotEmpty()) {
|
||||||
binding.btnGlobalSearch.isVisible = true
|
binding.btnGlobalSearch.isVisible = true
|
||||||
binding.btnGlobalSearch.text =
|
binding.btnGlobalSearch.text =
|
||||||
resources?.getString(R.string.action_global_search_query, query)
|
resources?.getString(R.string.action_global_search_query, query)
|
||||||
|
Loading…
Reference in New Issue
Block a user