SearchSuggestion*: Switch from livedata to flow

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-10-08 18:55:01 +05:30
parent d066e070bf
commit 03e34d064a
2 changed files with 12 additions and 9 deletions

View File

@@ -27,6 +27,7 @@ import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.TextView
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import com.aurora.extensions.hideKeyboard
import com.aurora.extensions.showKeyboard
@@ -38,6 +39,8 @@ import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.viewmodel.search.SearchSuggestionViewModel
import com.google.android.material.textfield.TextInputEditText
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
@AndroidEntryPoint
class SearchSuggestionFragment : BaseFragment<FragmentSearchSuggestionBinding>() {
@@ -67,8 +70,10 @@ class SearchSuggestionFragment : BaseFragment<FragmentSearchSuggestionBinding>()
}
}
viewModel.liveSearchSuggestions.observe(viewLifecycleOwner) {
updateController(it)
viewLifecycleOwner.lifecycleScope.launch {
viewModel.searchSuggestions.collectLatest {
updateController(it)
}
}
setupSearch()

View File

@@ -20,7 +20,6 @@
package com.aurora.store.viewmodel.search
import android.content.Context
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.SearchSuggestEntry
@@ -34,6 +33,8 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
@HiltViewModel
class SearchSuggestionViewModel @Inject constructor(
@@ -42,7 +43,8 @@ class SearchSuggestionViewModel @Inject constructor(
private val httpClient: IHttpClient
) : ViewModel() {
val liveSearchSuggestions: MutableLiveData<List<SearchSuggestEntry>> = MutableLiveData()
private val _searchSuggestions = MutableStateFlow<List<SearchSuggestEntry>>(emptyList())
val searchSuggestions = _searchSuggestions.asStateFlow()
private val helper: SearchContract = if (authProvider.isAnonymous) {
WebSearchHelper().using(httpClient)
@@ -52,11 +54,7 @@ class SearchSuggestionViewModel @Inject constructor(
fun observeStreamBundles(query: String) {
viewModelScope.launch(Dispatchers.IO) {
liveSearchSuggestions.postValue(getSearchSuggestions(query))
_searchSuggestions.value = helper.searchSuggestions(query)
}
}
private fun getSearchSuggestions(query: String): List<SearchSuggestEntry> {
return helper.searchSuggestions(query)
}
}