Skip to content

Commit f941caf

Browse files
authored
Merge pull request #16 from Tgo1014/feature/snack
Added flow for showing snack bar automatically
2 parents 4497394 + 0fa3641 commit f941caf

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-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
@@ -6,9 +6,17 @@ import androidx.fragment.app.Fragment
66
import androidx.lifecycle.DefaultLifecycleObserver
77
import androidx.lifecycle.LifecycleOwner
88
import androidx.lifecycle.lifecycleScope
9+
import com.google.android.material.snackbar.Snackbar
10+
import com.monstarlab.core.sharedui.errorhandling.ViewError
911
import kotlinx.coroutines.channels.awaitClose
1012
import kotlinx.coroutines.flow.*
1113

14+
fun Fragment.snackErrorFlow(targetFlow: SharedFlow<ViewError>, root: View, length: Int = Snackbar.LENGTH_SHORT) {
15+
collectFlow(targetFlow) { viewError ->
16+
Snackbar.make(root, viewError.message, length).show()
17+
}
18+
}
19+
1220
fun Fragment.visibilityFlow(targetFlow: Flow<Boolean>, vararg view: View) {
1321
collectFlow(targetFlow) { loading ->
1422
view.forEach { it.isVisible = loading }

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ 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.collectFlow
13+
import com.monstarlab.arch.extensions.combineFlows
14+
import com.monstarlab.arch.extensions.snackErrorFlow
1315
import com.monstarlab.arch.extensions.onClick
1416
import com.monstarlab.arch.extensions.viewBinding
1517
import com.monstarlab.arch.extensions.visibilityFlow
@@ -34,9 +36,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
3436
findNavController().navigate(R.id.resourceFragment)
3537
}
3638

37-
collectFlow(viewModel.errorFlow) { viewError ->
38-
Snackbar.make(view, viewError.message, Snackbar.LENGTH_SHORT).show()
39-
}
39+
snackErrorFlow(viewModel.errorFlow, view)
4040

4141
visibilityFlow(viewModel.loadingFlow, binding.loginProgressBar)
4242

0 commit comments

Comments
 (0)