@@ -13,6 +13,7 @@ import com.whyranoid.presentation.base.BaseFragment
13
13
import com.whyranoid.presentation.databinding.FragmentGroupDetailBinding
14
14
import com.whyranoid.presentation.util.repeatWhenUiStarted
15
15
import dagger.hilt.android.AndroidEntryPoint
16
+ import kotlinx.coroutines.flow.collectLatest
16
17
import kotlinx.coroutines.launch
17
18
18
19
@AndroidEntryPoint
@@ -25,12 +26,24 @@ internal class GroupDetailFragment :
25
26
override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
26
27
super .onViewCreated(view, savedInstanceState)
27
28
29
+ initViews()
30
+ observeState()
31
+ }
32
+
33
+ private fun initViews () {
34
+ binding.viewModel = viewModel
28
35
setupMenu()
29
- handleEvent()
30
- setBindingData()
31
36
setNotificationAdapter()
32
37
}
33
38
39
+ private fun observeState () {
40
+ viewLifecycleOwner.repeatWhenUiStarted {
41
+ viewModel.eventFlow.collect { event ->
42
+ handleEvent(event)
43
+ }
44
+ }
45
+ }
46
+
34
47
private fun setupMenu () {
35
48
viewLifecycleOwner.lifecycleScope.launch {
36
49
with (binding.topAppBar) {
@@ -77,76 +90,68 @@ internal class GroupDetailFragment :
77
90
}
78
91
}
79
92
80
- private fun handleEvent () {
81
- viewLifecycleOwner.repeatWhenUiStarted {
82
- viewModel.eventFlow.collect { event ->
83
- when (event) {
84
- Event .RecruitButtonClick -> {
85
- Snackbar .make(
86
- binding.root,
87
- getString(R .string.text_check_recruit),
88
- Snackbar .LENGTH_SHORT
89
- ).setAction(R .string.text_recruit) {
90
- viewModel.onRecruitSnackBarButtonClick()
91
- }.show()
92
- }
93
- is Event .RecruitSnackBarButtonClick -> {
94
- if (event.isSuccess) {
95
- Snackbar .make(
96
- binding.root,
97
- getString(R .string.text_recruit_success),
98
- Snackbar .LENGTH_SHORT
99
- ).show()
100
- } else {
101
- Snackbar .make(
102
- binding.root,
103
- getString(R .string.text_recruit_fail),
104
- Snackbar .LENGTH_SHORT
105
- ).show()
106
- }
107
- }
108
- Event .ExitGroupButtonClick -> {
109
- Snackbar .make(
110
- binding.root,
111
- getString(R .string.text_check_exit_group),
112
- Snackbar .LENGTH_SHORT
113
- ).setAction(getString(R .string.text_exit_group)) {
114
- viewModel.onExitGroupSnackBarButtonClick()
115
- }.show()
116
- }
117
- is Event .ExitGroupSnackBarButtonClick -> {
118
- if (event.isSuccess) {
119
- Snackbar .make(
120
- binding.root,
121
- getString(R .string.text_exit_group_success),
122
- Snackbar .LENGTH_SHORT
123
- ).show()
124
- findNavController().popBackStack()
125
- } else {
126
- Snackbar .make(
127
- binding.root,
128
- getString(R .string.text_exit_group_fail),
129
- Snackbar .LENGTH_SHORT
130
- ).show()
131
- }
132
- }
93
+ private fun handleEvent (event : Event ) {
94
+ when (event) {
95
+ Event .RecruitButtonClick -> {
96
+ Snackbar .make(
97
+ binding.root,
98
+ getString(R .string.text_check_recruit),
99
+ Snackbar .LENGTH_SHORT
100
+ ).setAction(R .string.text_recruit) {
101
+ viewModel.onRecruitSnackBarButtonClick()
102
+ }.show()
103
+ }
104
+ is Event .RecruitSnackBarButtonClick -> {
105
+ if (event.isSuccess) {
106
+ Snackbar .make(
107
+ binding.root,
108
+ getString(R .string.text_recruit_success),
109
+ Snackbar .LENGTH_SHORT
110
+ ).show()
111
+ } else {
112
+ Snackbar .make(
113
+ binding.root,
114
+ getString(R .string.text_recruit_fail),
115
+ Snackbar .LENGTH_SHORT
116
+ ).show()
117
+ }
118
+ }
119
+ Event .ExitGroupButtonClick -> {
120
+ Snackbar .make(
121
+ binding.root,
122
+ getString(R .string.text_check_exit_group),
123
+ Snackbar .LENGTH_SHORT
124
+ ).setAction(getString(R .string.text_exit_group)) {
125
+ viewModel.onExitGroupSnackBarButtonClick()
126
+ }.show()
127
+ }
128
+ is Event .ExitGroupSnackBarButtonClick -> {
129
+ if (event.isSuccess) {
130
+ Snackbar .make(
131
+ binding.root,
132
+ getString(R .string.text_exit_group_success),
133
+ Snackbar .LENGTH_SHORT
134
+ ).show()
135
+ findNavController().popBackStack()
136
+ } else {
137
+ Snackbar .make(
138
+ binding.root,
139
+ getString(R .string.text_exit_group_fail),
140
+ Snackbar .LENGTH_SHORT
141
+ ).show()
133
142
}
134
143
}
135
144
}
136
145
}
137
146
138
- private fun setBindingData () {
139
- binding.viewModel = viewModel
140
- }
141
-
142
147
private fun setNotificationAdapter () {
143
148
viewLifecycleOwner.lifecycleScope.launch {
144
149
val uid = viewModel.getUidUseCase()
145
150
val notificationAdapter = GroupNotificationAdapter (uid)
146
151
147
152
binding.notificationRecyclerView.adapter = notificationAdapter
148
153
viewLifecycleOwner.repeatWhenUiStarted {
149
- viewModel.mergedNotifications.collect { notifications ->
154
+ viewModel.mergedNotifications.collectLatest { notifications ->
150
155
notificationAdapter.submitList(notifications)
151
156
}
152
157
}
0 commit comments