SearchSuggestion*: Switch from livedata to flow
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -27,6 +27,7 @@ import android.view.View
|
|||||||
import android.view.inputmethod.EditorInfo
|
import android.view.inputmethod.EditorInfo
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.aurora.extensions.hideKeyboard
|
import com.aurora.extensions.hideKeyboard
|
||||||
import com.aurora.extensions.showKeyboard
|
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.aurora.store.viewmodel.search.SearchSuggestionViewModel
|
||||||
import com.google.android.material.textfield.TextInputEditText
|
import com.google.android.material.textfield.TextInputEditText
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class SearchSuggestionFragment : BaseFragment<FragmentSearchSuggestionBinding>() {
|
class SearchSuggestionFragment : BaseFragment<FragmentSearchSuggestionBinding>() {
|
||||||
@@ -67,8 +70,10 @@ class SearchSuggestionFragment : BaseFragment<FragmentSearchSuggestionBinding>()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.liveSearchSuggestions.observe(viewLifecycleOwner) {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
updateController(it)
|
viewModel.searchSuggestions.collectLatest {
|
||||||
|
updateController(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setupSearch()
|
setupSearch()
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
package com.aurora.store.viewmodel.search
|
package com.aurora.store.viewmodel.search
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.aurora.gplayapi.SearchSuggestEntry
|
import com.aurora.gplayapi.SearchSuggestEntry
|
||||||
@@ -34,6 +33,8 @@ import dagger.hilt.android.qualifiers.ApplicationContext
|
|||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class SearchSuggestionViewModel @Inject constructor(
|
class SearchSuggestionViewModel @Inject constructor(
|
||||||
@@ -42,7 +43,8 @@ class SearchSuggestionViewModel @Inject constructor(
|
|||||||
private val httpClient: IHttpClient
|
private val httpClient: IHttpClient
|
||||||
) : ViewModel() {
|
) : 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) {
|
private val helper: SearchContract = if (authProvider.isAnonymous) {
|
||||||
WebSearchHelper().using(httpClient)
|
WebSearchHelper().using(httpClient)
|
||||||
@@ -52,11 +54,7 @@ class SearchSuggestionViewModel @Inject constructor(
|
|||||||
|
|
||||||
fun observeStreamBundles(query: String) {
|
fun observeStreamBundles(query: String) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
liveSearchSuggestions.postValue(getSearchSuggestions(query))
|
_searchSuggestions.value = helper.searchSuggestions(query)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getSearchSuggestions(query: String): List<SearchSuggestEntry> {
|
|
||||||
return helper.searchSuggestions(query)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user