Purify SearchDao
This commit is contained in:
1 parent
37ec49ed69
commit
e2d03eb928
2 files changed
+12
-10
No files matched your search
@@ -17,13 +17,4 @@ interface SearchDao {
|
||||
|
||||
@Insert
|
||||
suspend fun insert(search: Search)
|
||||
|
||||
suspend fun addQuery(query: String) {
|
||||
deleteQuery(query)
|
||||
if (query.isBlank()) return
|
||||
val search = Search(System.currentTimeMillis(), query)
|
||||
insert(search)
|
||||
}
|
||||
|
||||
suspend fun suggestions(prefix: String, limit: Int) = (if (prefix.isBlank()) list(limit) else rawSuggestions(prefix, limit)).map { it.query }
|
||||
}
|
||||
@@ -22,6 +22,8 @@ import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhTagDatabase
|
||||
import com.hippo.ehviewer.dao.Search
|
||||
import com.hippo.ehviewer.dao.SearchDao
|
||||
import com.hippo.ehviewer.dao.SearchDatabase
|
||||
import com.hippo.ehviewer.databinding.ItemSimpleList2Binding
|
||||
import com.hippo.ehviewer.databinding.SceneSearchbarBinding
|
||||
@@ -163,6 +165,13 @@ abstract class SearchBarScene : BaseScene(), ToolBarScene {
|
||||
onApplySearch = lambda
|
||||
}
|
||||
|
||||
private suspend fun addQuery(query: String) {
|
||||
mSearchDatabase.deleteQuery(query)
|
||||
if (query.isBlank()) return
|
||||
val search = Search(System.currentTimeMillis(), query)
|
||||
mSearchDatabase.insert(search)
|
||||
}
|
||||
|
||||
fun onApplySearch() {
|
||||
binding.toolbar.setText(binding.searchview.text)
|
||||
binding.searchview.hide()
|
||||
@@ -170,7 +179,7 @@ abstract class SearchBarScene : BaseScene(), ToolBarScene {
|
||||
if (!mAllowEmptySearch && query.isEmpty()) {
|
||||
return
|
||||
}
|
||||
lifecycleScope.launchIO { mSearchDatabase.addQuery(query) }
|
||||
lifecycleScope.launchIO { addQuery(query) }
|
||||
onApplySearch(query)
|
||||
}
|
||||
|
||||
@@ -326,6 +335,8 @@ abstract class SearchBarScene : BaseScene(), ToolBarScene {
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun SearchDao.suggestions(prefix: String, limit: Int) = (if (prefix.isBlank()) list(limit) else rawSuggestions(prefix, limit)).map { it.query }
|
||||
|
||||
private fun mergedSuggestionFlow(): Flow<Suggestion> = flow {
|
||||
binding.searchview.editText.text?.toString()?.let { text ->
|
||||
mSuggestionProvider?.run { providerSuggestions(text)?.forEach { emit(it) } }
|
||||
|
||||
Reference in new issue
Block a user