Purify SearchDao

This commit is contained in:
tarsin committed 2023-07-12 09:26:20 +08:00
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) } }