This commit is contained in:
kunfei 2023-08-02 09:48:39 +08:00
parent 8c88ded53d
commit 8ff5b2abf9
2 changed files with 23 additions and 26 deletions

View File

@ -78,33 +78,9 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
private var booksFlowJob: Job? = null
private var precisionSearchMenuItem: MenuItem? = null
private var isManualStopSearch = false
private val searchFinishCallback: (isEmpty: Boolean) -> Unit = searchFinish@{ isEmpty ->
if (!isEmpty || viewModel.searchScope.isAll()) return@searchFinish
lifecycleScope.launch {
alert("搜索结果为空") {
val precisionSearch = appCtx.getPrefBoolean(PreferKey.precisionSearch)
if (precisionSearch) {
setMessage("${viewModel.searchScope.display}分组搜索结果为空,是否关闭精准搜索?")
yesButton {
appCtx.putPrefBoolean(PreferKey.precisionSearch, false)
precisionSearchMenuItem?.isChecked = false
viewModel.searchKey = ""
viewModel.search(searchView.query.toString())
}
} else {
setMessage("${viewModel.searchScope.display}分组搜索结果为空,是否切换到全部分组?")
yesButton {
viewModel.searchScope.update("")
}
}
noButton()
}
}
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
binding.llInputHelp.setBackgroundColor(backgroundColor)
viewModel.searchFinishCallback = searchFinishCallback
initRecyclerView()
initSearchView()
initOtherView()
@ -403,6 +379,27 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
viewModel.upAdapterLiveData.observe(this) {
adapter.notifyItemRangeChanged(0, adapter.itemCount, it)
}
viewModel.searchFinishLiveData.observe(this) { isEmpty ->
if (!isEmpty || viewModel.searchScope.isAll()) return@observe
alert("搜索结果为空") {
val precisionSearch = appCtx.getPrefBoolean(PreferKey.precisionSearch)
if (precisionSearch) {
setMessage("${viewModel.searchScope.display}分组搜索结果为空,是否关闭精准搜索?")
yesButton {
appCtx.putPrefBoolean(PreferKey.precisionSearch, false)
precisionSearchMenuItem?.isChecked = false
viewModel.searchKey = ""
viewModel.search(searchView.query.toString())
}
} else {
setMessage("${viewModel.searchScope.display}分组搜索结果为空,是否切换到全部分组?")
yesButton {
viewModel.searchScope.update("")
}
}
noButton()
}
}
}
/**

View File

@ -25,7 +25,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) {
val upAdapterLiveData = MutableLiveData<String>()
var searchBookLiveData = ConflateLiveData<List<SearchBook>>(1000)
val searchScope: SearchScope = SearchScope(AppConfig.searchScope)
var searchFinishCallback: ((isEmpty: Boolean) -> Unit)? = null
var searchFinishLiveData = MutableLiveData<Boolean>()
var isSearchLiveData = MutableLiveData<Boolean>()
var searchKey: String = ""
private var searchID = 0L
@ -45,7 +45,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) {
override fun onSearchFinish(isEmpty: Boolean) {
isSearchLiveData.postValue(false)
searchFinishCallback?.invoke(isEmpty)
searchFinishLiveData.postValue(isEmpty)
}
override fun onSearchCancel(exception: Exception?) {