Skip to content

Commit 45a6555

Browse files
author
Tiago Araujo de Souza
committed
Added flow for showing snack bar automatically
1 parent 3f314e2 commit 45a6555

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,17 @@ import androidx.fragment.app.Fragment
55
import androidx.lifecycle.DefaultLifecycleObserver
66
import androidx.lifecycle.LifecycleOwner
77
import androidx.lifecycle.lifecycleScope
8+
import com.google.android.material.snackbar.Snackbar
9+
import com.monstarlab.core.sharedui.errorhandling.ViewError
810
import kotlinx.coroutines.channels.awaitClose
911
import kotlinx.coroutines.flow.*
1012

13+
fun Fragment.snackErrorFlow(targetFlow: SharedFlow<ViewError>, root: View, length: Int = Snackbar.LENGTH_SHORT) {
14+
collectFlow(targetFlow) { viewError ->
15+
Snackbar.make(root, viewError.message, length).show()
16+
}
17+
}
18+
1119
fun <T> Fragment.collectFlow(targetFlow: Flow<T>, collectBlock: ((T) -> Unit)) {
1220
safeViewCollect {
1321
viewLifecycleOwner.lifecycleScope.launchWhenCreated {

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.monstarlab.arch.base.BaseFragment
1212
import com.monstarlab.arch.extensions.clicks
1313
import com.monstarlab.arch.extensions.collectFlow
1414
import com.monstarlab.arch.extensions.combineFlows
15+
import com.monstarlab.arch.extensions.snackErrorFlow
1516
import com.monstarlab.arch.extensions.viewBinding
1617
import com.monstarlab.databinding.FragmentLoginBinding
1718
import kotlinx.coroutines.flow.launchIn
@@ -37,9 +38,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
3738
findNavController().navigate(R.id.resourceFragment)
3839
}
3940

40-
collectFlow(viewModel.errorFlow) { viewError ->
41-
Snackbar.make(view, viewError.message, Snackbar.LENGTH_SHORT).show()
42-
}
41+
snackErrorFlow(viewModel.errorFlow, view)
4342

4443
collectFlow(viewModel.loadingFlow) { loading ->
4544
TransitionManager.beginDelayedTransition(binding.root)

0 commit comments

Comments
 (0)