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
@@ -78,33 +78,9 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
private var booksFlowJob: Job? = null private var booksFlowJob: Job? = null
private var precisionSearchMenuItem: MenuItem? = null private var precisionSearchMenuItem: MenuItem? = null
private var isManualStopSearch = false 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?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
binding.llInputHelp.setBackgroundColor(backgroundColor) binding.llInputHelp.setBackgroundColor(backgroundColor)
viewModel.searchFinishCallback = searchFinishCallback
initRecyclerView() initRecyclerView()
initSearchView() initSearchView()
initOtherView() initOtherView()
@@ -403,6 +379,27 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
viewModel.upAdapterLiveData.observe(this) { viewModel.upAdapterLiveData.observe(this) {
adapter.notifyItemRangeChanged(0, adapter.itemCount, it) 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()
}
}
} }
/** /**
@@ -25,7 +25,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) {
val upAdapterLiveData = MutableLiveData<String>() val upAdapterLiveData = MutableLiveData<String>()
var searchBookLiveData = ConflateLiveData<List<SearchBook>>(1000) var searchBookLiveData = ConflateLiveData<List<SearchBook>>(1000)
val searchScope: SearchScope = SearchScope(AppConfig.searchScope) val searchScope: SearchScope = SearchScope(AppConfig.searchScope)
var searchFinishCallback: ((isEmpty: Boolean) -> Unit)? = null var searchFinishLiveData = MutableLiveData<Boolean>()
var isSearchLiveData = MutableLiveData<Boolean>() var isSearchLiveData = MutableLiveData<Boolean>()
var searchKey: String = "" var searchKey: String = ""
private var searchID = 0L private var searchID = 0L
@@ -45,7 +45,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) {
override fun onSearchFinish(isEmpty: Boolean) { override fun onSearchFinish(isEmpty: Boolean) {
isSearchLiveData.postValue(false) isSearchLiveData.postValue(false)
searchFinishCallback?.invoke(isEmpty) searchFinishLiveData.postValue(isEmpty)
} }
override fun onSearchCancel(exception: Exception?) { override fun onSearchCancel(exception: Exception?) {