diff --git a/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt b/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt index 1db829e36..1cc4fb5b1 100644 --- a/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt @@ -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() { @@ -67,8 +70,10 @@ class SearchSuggestionFragment : BaseFragment() } } - viewModel.liveSearchSuggestions.observe(viewLifecycleOwner) { - updateController(it) + viewLifecycleOwner.lifecycleScope.launch { + viewModel.searchSuggestions.collectLatest { + updateController(it) + } } setupSearch() diff --git a/app/src/main/java/com/aurora/store/viewmodel/search/SearchSuggestionViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/search/SearchSuggestionViewModel.kt index 0dc0e0754..47306d689 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/search/SearchSuggestionViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/search/SearchSuggestionViewModel.kt @@ -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> = MutableLiveData() + private val _searchSuggestions = MutableStateFlow>(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 { - return helper.searchSuggestions(query) - } }