Skip to content

Commit 6cc13b1

Browse files
author
Tiago Araujo de Souza
committed
Added visibilityFlow
1 parent 3f314e2 commit 6cc13b1

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

app/src/main/java/com/monstarlab/arch/extensions/ViewExtensions.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
package com.monstarlab.arch.extensions
22

33
import android.view.View
4+
import androidx.core.view.isVisible
45
import androidx.fragment.app.Fragment
56
import androidx.lifecycle.DefaultLifecycleObserver
67
import androidx.lifecycle.LifecycleOwner
78
import androidx.lifecycle.lifecycleScope
89
import kotlinx.coroutines.channels.awaitClose
910
import kotlinx.coroutines.flow.*
1011

12+
fun Fragment.visibilityFlow(targetFlow: Flow<Boolean>, vararg view: View) {
13+
collectFlow(targetFlow) { loading ->
14+
view.forEach { it.isVisible = loading }
15+
}
16+
}
17+
1118
fun <T> Fragment.collectFlow(targetFlow: Flow<T>, collectBlock: ((T) -> Unit)) {
1219
safeViewCollect {
1320
viewLifecycleOwner.lifecycleScope.launchWhenCreated {

app/src/main/java/com/monstarlab/features/login/LoginFragment.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,20 @@ package com.monstarlab.features.login
22

33
import android.os.Bundle
44
import android.view.View
5+
import androidx.core.view.isVisible
56
import androidx.lifecycle.lifecycleScope
6-
import androidx.lifecycle.viewModelScope
77
import androidx.navigation.fragment.findNavController
88
import androidx.transition.TransitionManager
99
import com.google.android.material.snackbar.Snackbar
1010
import com.monstarlab.R
1111
import com.monstarlab.arch.base.BaseFragment
1212
import com.monstarlab.arch.extensions.clicks
1313
import com.monstarlab.arch.extensions.collectFlow
14-
import com.monstarlab.arch.extensions.combineFlows
1514
import com.monstarlab.arch.extensions.viewBinding
15+
import com.monstarlab.arch.extensions.visibilityFlow
1616
import com.monstarlab.databinding.FragmentLoginBinding
1717
import kotlinx.coroutines.flow.launchIn
1818
import kotlinx.coroutines.flow.onEach
19-
import kotlinx.coroutines.launch
2019

2120
class LoginFragment : BaseFragment(R.layout.fragment_login) {
2221

@@ -28,8 +27,8 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
2827

2928
binding.loginButton.clicks().onEach {
3029
viewModel.login(
31-
binding.loginEmailEditText.text.toString(),
32-
binding.loginPasswordEditText.text.toString()
30+
binding.loginEmailEditText.text.toString(),
31+
binding.loginPasswordEditText.text.toString()
3332
)
3433
}.launchIn(lifecycleScope)
3534

@@ -41,12 +40,13 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
4140
Snackbar.make(view, viewError.message, Snackbar.LENGTH_SHORT).show()
4241
}
4342

43+
visibilityFlow(viewModel.loadingFlow, binding.loginProgressBar)
44+
4445
collectFlow(viewModel.loadingFlow) { loading ->
4546
TransitionManager.beginDelayedTransition(binding.root)
4647
binding.loginEmailEditText.isEnabled = !loading
4748
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
49+
binding.loginButton.isVisible = !loading
5050
}
5151
}
5252
}

app/src/main/java/com/monstarlab/injection/components/AppComponent.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.monstarlab.injection.modules.*
55
import dagger.Component
66
import dagger.android.AndroidInjector
77
import dagger.android.support.AndroidSupportInjectionModule
8-
import dk.nodes.template.injection.modules.*
98
import javax.inject.Singleton
109

1110
@Component(

0 commit comments

Comments
 (0)