@@ -2,6 +2,7 @@ package com.monstarlab.features.login
22
33import android.os.Bundle
44import android.view.View
5+ import androidx.core.view.isVisible
56import androidx.lifecycle.lifecycleScope
67import androidx.lifecycle.loadingFlow
78import androidx.lifecycle.viewErrorFlow
@@ -10,13 +11,13 @@ import androidx.transition.TransitionManager
1011import com.google.android.material.snackbar.Snackbar
1112import com.monstarlab.R
1213import com.monstarlab.arch.base.BaseFragment
13- import com.monstarlab.arch.extensions.clicks
1414import com.monstarlab.arch.extensions.collectFlow
1515import com.monstarlab.arch.extensions.combineFlows
16+ import com.monstarlab.arch.extensions.snackErrorFlow
17+ import com.monstarlab.arch.extensions.onClick
1618import com.monstarlab.arch.extensions.viewBinding
19+ import com.monstarlab.arch.extensions.visibilityFlow
1720import com.monstarlab.databinding.FragmentLoginBinding
18- import kotlinx.coroutines.flow.launchIn
19- import kotlinx.coroutines.flow.onEach
2021
2122class LoginFragment : BaseFragment (R .layout.fragment_login) {
2223
@@ -26,27 +27,25 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
2627 override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
2728 super .onViewCreated(view, savedInstanceState)
2829
29- binding.loginButton.clicks().onEach {
30+ binding.loginButton.onClick {
3031 viewModel.login(
31- binding.loginEmailEditText.text.toString(),
32- binding.loginPasswordEditText.text.toString()
32+ binding.loginEmailEditText.text.toString(),
33+ binding.loginPasswordEditText.text.toString()
3334 )
34- }.launchIn(lifecycleScope)
35+ }
3536
3637 collectFlow(viewModel.loginResultFlow) {
3738 findNavController().navigate(R .id.resourceFragment)
3839 }
3940
40- collectFlow(viewModel.viewErrorFlow) { viewError ->
41- Snackbar .make(view, viewError.message, Snackbar .LENGTH_SHORT ).show()
42- }
41+ snackErrorFlow(viewModel.errorFlow, view)
42+ visibilityFlow(viewModel.loadingFlow, binding.loginProgressBar)
4343
4444 collectFlow(viewModel.loadingFlow) { loading ->
4545 TransitionManager .beginDelayedTransition(binding.root)
4646 binding.loginEmailEditText.isEnabled = ! loading
4747 binding.loginPasswordEditText.isEnabled = ! loading
48- binding.loginButton.visibility = if (loading) View .GONE else View .VISIBLE
49- binding.loginProgressBar.visibility = if (loading) View .VISIBLE else View .GONE
48+ binding.loginButton.isVisible = ! loading
5049 }
5150 }
5251}
0 commit comments