Observe auth statuses as LiveData, not Flow

This commit is contained in:
Kirill Kamakin
2021-11-20 15:37:03 +03:00
parent e39b8ae354
commit 0e4016150a
5 changed files with 15 additions and 28 deletions

View File

@@ -5,11 +5,9 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import gq.kirmanak.mealient.databinding.MainActivityBinding import gq.kirmanak.mealient.databinding.MainActivityBinding
import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel
import kotlinx.coroutines.flow.collectLatest
import timber.log.Timber import timber.log.Timber
@AndroidEntryPoint @AndroidEntryPoint
@@ -29,12 +27,10 @@ class MainActivity : AppCompatActivity() {
private fun listenToAuthStatuses() { private fun listenToAuthStatuses() {
Timber.v("listenToAuthStatuses() called") Timber.v("listenToAuthStatuses() called")
lifecycleScope.launchWhenCreated { authViewModel.authenticationStatuses().observe(this) {
authViewModel.authenticationStatuses().collectLatest {
changeAuthStatus(it) changeAuthStatus(it)
} }
} }
}
private fun changeAuthStatus(it: Boolean) { private fun changeAuthStatus(it: Boolean) {
Timber.v("changeAuthStatus() called with: it = $it") Timber.v("changeAuthStatus() called with: it = $it")

View File

@@ -12,7 +12,6 @@ import androidx.navigation.fragment.findNavController
import com.google.android.material.textfield.TextInputLayout import com.google.android.material.textfield.TextInputLayout
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import gq.kirmanak.mealient.databinding.FragmentAuthenticationBinding import gq.kirmanak.mealient.databinding.FragmentAuthenticationBinding
import kotlinx.coroutines.flow.collectLatest
import timber.log.Timber import timber.log.Timber
@AndroidEntryPoint @AndroidEntryPoint
@@ -30,13 +29,11 @@ class AuthenticationFragment : Fragment() {
private fun listenToAuthenticationStatuses() { private fun listenToAuthenticationStatuses() {
Timber.d("listenToAuthenticationStatuses() called") Timber.d("listenToAuthenticationStatuses() called")
lifecycleScope.launchWhenCreated { viewModel.authenticationStatuses().observe(this) {
viewModel.authenticationStatuses().collectLatest {
Timber.d("listenToAuthenticationStatuses: new status = $it") Timber.d("listenToAuthenticationStatuses: new status = $it")
if (it) navigateToRecipes() if (it) navigateToRecipes()
} }
} }
}
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,

View File

@@ -1,11 +1,12 @@
package gq.kirmanak.mealient.ui.auth package gq.kirmanak.mealient.ui.auth
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import gq.kirmanak.mealient.data.auth.AuthRepo import gq.kirmanak.mealient.data.auth.AuthRepo
import gq.kirmanak.mealient.data.recipes.RecipeRepo import gq.kirmanak.mealient.data.recipes.RecipeRepo
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@@ -24,9 +25,9 @@ class AuthenticationViewModel @Inject constructor(
authRepo.authenticate(username, password, baseUrl) authRepo.authenticate(username, password, baseUrl)
} }
fun authenticationStatuses(): Flow<Boolean> { fun authenticationStatuses(): LiveData<Boolean> {
Timber.v("authenticationStatuses() called") Timber.v("authenticationStatuses() called")
return authRepo.authenticationStatuses() return authRepo.authenticationStatuses().asLiveData()
} }
fun logout() { fun logout() {

View File

@@ -16,7 +16,6 @@ import gq.kirmanak.mealient.ui.SwipeRefreshLayoutHelper.listenToRefreshRequests
import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.collectLatest
import timber.log.Timber import timber.log.Timber
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
@@ -56,13 +55,11 @@ class RecipesFragment : Fragment() {
private fun listenToAuthStatuses() { private fun listenToAuthStatuses() {
Timber.v("listenToAuthStatuses() called") Timber.v("listenToAuthStatuses() called")
lifecycleScope.launchWhenCreated { authViewModel.authenticationStatuses().observe(this) {
authViewModel.authenticationStatuses().collectLatest {
Timber.v("listenToAuthStatuses: new auth status = $it") Timber.v("listenToAuthStatuses: new auth status = $it")
if (!it) navigateToAuthFragment() if (!it) navigateToAuthFragment()
} }
} }
}
private fun navigateToAuthFragment() { private fun navigateToAuthFragment() {
Timber.v("navigateToAuthFragment() called") Timber.v("navigateToAuthFragment() called")

View File

@@ -6,14 +6,12 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
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 androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import gq.kirmanak.mealient.databinding.FragmentRecipeInfoBinding import gq.kirmanak.mealient.databinding.FragmentRecipeInfoBinding
import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel
import kotlinx.coroutines.flow.collectLatest
import timber.log.Timber import timber.log.Timber
@AndroidEntryPoint @AndroidEntryPoint
@@ -59,13 +57,11 @@ class RecipeInfoFragment : Fragment() {
private fun listenToAuthStatuses() { private fun listenToAuthStatuses() {
Timber.v("listenToAuthStatuses() called") Timber.v("listenToAuthStatuses() called")
lifecycleScope.launchWhenCreated { authViewModel.authenticationStatuses().observe(this) {
authViewModel.authenticationStatuses().collectLatest {
Timber.v("listenToAuthStatuses: new auth status = $it") Timber.v("listenToAuthStatuses: new auth status = $it")
if (!it) navigateToAuthFragment() if (!it) navigateToAuthFragment()
} }
} }
}
private fun navigateToAuthFragment() { private fun navigateToAuthFragment() {
Timber.v("navigateToAuthFragment() called") Timber.v("navigateToAuthFragment() called")