@@ -2,6 +2,7 @@ package com.monstarlab.features.login
2
2
3
3
import android.os.Bundle
4
4
import android.view.View
5
+ import androidx.core.view.isVisible
5
6
import androidx.lifecycle.lifecycleScope
6
7
import androidx.lifecycle.loadingFlow
7
8
import androidx.lifecycle.viewErrorFlow
@@ -10,13 +11,13 @@ import androidx.transition.TransitionManager
10
11
import com.google.android.material.snackbar.Snackbar
11
12
import com.monstarlab.R
12
13
import com.monstarlab.arch.base.BaseFragment
13
- import com.monstarlab.arch.extensions.clicks
14
14
import com.monstarlab.arch.extensions.collectFlow
15
15
import com.monstarlab.arch.extensions.combineFlows
16
+ import com.monstarlab.arch.extensions.snackErrorFlow
17
+ import com.monstarlab.arch.extensions.onClick
16
18
import com.monstarlab.arch.extensions.viewBinding
19
+ import com.monstarlab.arch.extensions.visibilityFlow
17
20
import com.monstarlab.databinding.FragmentLoginBinding
18
- import kotlinx.coroutines.flow.launchIn
19
- import kotlinx.coroutines.flow.onEach
20
21
21
22
class LoginFragment : BaseFragment (R .layout.fragment_login) {
22
23
@@ -26,27 +27,25 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
26
27
override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
27
28
super .onViewCreated(view, savedInstanceState)
28
29
29
- binding.loginButton.clicks().onEach {
30
+ binding.loginButton.onClick {
30
31
viewModel.login(
31
- binding.loginEmailEditText.text.toString(),
32
- binding.loginPasswordEditText.text.toString()
32
+ binding.loginEmailEditText.text.toString(),
33
+ binding.loginPasswordEditText.text.toString()
33
34
)
34
- }.launchIn(lifecycleScope)
35
+ }
35
36
36
37
collectFlow(viewModel.loginResultFlow) {
37
38
findNavController().navigate(R .id.resourceFragment)
38
39
}
39
40
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)
43
43
44
44
collectFlow(viewModel.loadingFlow) { loading ->
45
45
TransitionManager .beginDelayedTransition(binding.root)
46
46
binding.loginEmailEditText.isEnabled = ! loading
47
47
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
50
49
}
51
50
}
52
51
}
0 commit comments