Skip to content

Commit 4497394

Browse files
authored
Merge pull request #17 from Tgo1014/feature/visibility
Added visibilityFlow
2 parents 1692810 + 33b9afd commit 4497394

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
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: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package com.monstarlab.features.login
22

33
import android.os.Bundle
44
import android.view.View
5+
import androidx.core.view.isVisible
6+
import androidx.lifecycle.lifecycleScope
57
import androidx.navigation.fragment.findNavController
68
import androidx.transition.TransitionManager
79
import com.google.android.material.snackbar.Snackbar
@@ -10,6 +12,7 @@ import com.monstarlab.arch.base.BaseFragment
1012
import com.monstarlab.arch.extensions.collectFlow
1113
import com.monstarlab.arch.extensions.onClick
1214
import com.monstarlab.arch.extensions.viewBinding
15+
import com.monstarlab.arch.extensions.visibilityFlow
1316
import com.monstarlab.databinding.FragmentLoginBinding
1417

1518
class LoginFragment : BaseFragment(R.layout.fragment_login) {
@@ -35,12 +38,13 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
3538
Snackbar.make(view, viewError.message, Snackbar.LENGTH_SHORT).show()
3639
}
3740

41+
visibilityFlow(viewModel.loadingFlow, binding.loginProgressBar)
42+
3843
collectFlow(viewModel.loadingFlow) { loading ->
3944
TransitionManager.beginDelayedTransition(binding.root)
4045
binding.loginEmailEditText.isEnabled = !loading
4146
binding.loginPasswordEditText.isEnabled = !loading
42-
binding.loginButton.visibility = if(loading) View.GONE else View.VISIBLE
43-
binding.loginProgressBar.visibility = if(loading) View.VISIBLE else View.GONE
47+
binding.loginButton.isVisible = !loading
4448
}
4549
}
4650
}

0 commit comments

Comments
 (0)