@@ -29,6 +29,7 @@ import android.view.ViewGroup
2929import androidx.core.view.isVisible
3030import androidx.fragment.app.Fragment
3131import androidx.recyclerview.widget.LinearLayoutManager
32+ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
3233import com.owncloud.android.R
3334import com.owncloud.android.databinding.MembersFragmentBinding
3435import com.owncloud.android.domain.links.model.OCLink
@@ -102,6 +103,10 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
102103
103104 subscribeToViewModels()
104105
106+ binding.swipeRefreshMembers.setOnRefreshListener {
107+ spaceMembersViewModel.getSpaceMembers()
108+ }
109+
105110 binding.addMemberButton.setOnClickListener {
106111 spaceMembersViewModel.resetViewModel()
107112 listener?.addMember(
@@ -166,6 +171,15 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
166171 }
167172
168173 private fun subscribeToViewModels () {
174+ observeRoles()
175+ observeSpaceMembers()
176+ observeSpacePermissions()
177+ observeAddMemberResult()
178+ observeRemoveMemberResult()
179+ observeEditMemberResult()
180+ }
181+
182+ private fun observeRoles () {
169183 collectLatestLifecycleFlow(spaceMembersViewModel.roles) { event ->
170184 event?.let {
171185 when (val uiResult = event.peekContent()) {
@@ -182,34 +196,43 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
182196 }
183197 }
184198 }
199+ }
185200
201+ private fun observeSpaceMembers () {
186202 collectLatestLifecycleFlow(spaceMembersViewModel.spaceMembers) { event ->
187203 event?.let {
188204 when (val uiResult = event.peekContent()) {
189205 is UIResult .Success -> {
190206 uiResult.data?.let {
191207 if (roles.isNotEmpty()) {
192208 numberOfManagers = it.members.count { spaceMember ->
193- spaceMember.roles.contains(OCRoleType .toString(OCRoleType .CAN_MANAGE )) }
209+ spaceMember.roles.contains(OCRoleType .toString(OCRoleType .CAN_MANAGE ))
210+ }
194211 spaceMembers = it.members
195212 addMemberRoles = it.roles
196213 spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
197214 val hasLinks = it.links.isNotEmpty()
198215 showOrHideEmptyView(hasLinks)
199216 if (hasLinks) { showSpaceLinks(it.links) }
200217 binding.indeterminateProgressBar.isVisible = false
218+ binding.swipeRefreshMembers.isRefreshing = false
201219 }
202220 }
203221 }
204- is UIResult .Loading -> { binding.indeterminateProgressBar.isVisible = true }
222+ is UIResult .Loading -> {
223+ binding.indeterminateProgressBar.isVisible = true
224+ binding.swipeRefreshMembers.isRefreshing = true
225+ }
205226 is UIResult .Error -> {
206227 requireActivity().finish()
207228 Timber .e(uiResult.error, " Failed to retrieve space members for space: ${currentSpace.id} (${currentSpace.id} )" )
208229 }
209230 }
210231 }
211232 }
233+ }
212234
235+ private fun observeSpacePermissions () {
213236 collectLatestLifecycleFlow(spaceMembersViewModel.spacePermissions) { event ->
214237 event?.let {
215238 when (val uiResult = event.peekContent()) {
@@ -228,7 +251,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
228251 }
229252 }
230253 }
254+ }
231255
256+ private fun observeAddMemberResult () {
232257 collectLatestLifecycleFlow(spaceMembersViewModel.addMemberResultFlow) { event ->
233258 event?.peekContent()?.let { uiResult ->
234259 when (uiResult) {
@@ -241,7 +266,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
241266 }
242267 }
243268 }
269+ }
244270
271+ private fun observeRemoveMemberResult () {
245272 collectLatestLifecycleFlow(spaceMembersViewModel.removeMemberResultFlow) { uiResult ->
246273 when (uiResult) {
247274 is UIResult .Loading -> { }
@@ -255,7 +282,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
255282 }
256283 }
257284 }
285+ }
258286
287+ private fun observeEditMemberResult () {
259288 collectLatestLifecycleFlow(spaceMembersViewModel.editMemberResultFlow) { event ->
260289 event?.peekContent()?.let { uiResult ->
261290 when (uiResult) {
@@ -320,4 +349,4 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
320349 }
321350 }
322351 }
323- }
352+ }
0 commit comments