Skip to content

Commit 01230a9

Browse files
fix: add pull to refresh in space members list
1 parent 44a9902 commit 01230a9

2 files changed

Lines changed: 44 additions & 8 deletions

File tree

owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/members/SpaceMembersFragment.kt

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import android.view.ViewGroup
2929
import androidx.core.view.isVisible
3030
import androidx.fragment.app.Fragment
3131
import androidx.recyclerview.widget.LinearLayoutManager
32+
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
3233
import com.owncloud.android.R
3334
import com.owncloud.android.databinding.MembersFragmentBinding
3435
import 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+
}

owncloudApp/src/main/res/layout/members_fragment.xml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,18 @@
1616
along with this program. If not, see <http://www.gnu.org/licenses/>.
1717
-->
1818

19-
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
19+
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
2020
xmlns:tools="http://schemas.android.com/tools"
2121
xmlns:app="http://schemas.android.com/apk/res-auto"
22-
android:id="@+id/shareScroll"
22+
android:id="@+id/swipe_refresh_members"
2323
android:layout_width="match_parent"
24-
android:layout_height="match_parent"
25-
tools:context=".presentation.spaces.members.SpaceMembersActivity">
24+
android:layout_height="match_parent">
25+
26+
<androidx.core.widget.NestedScrollView
27+
android:id="@+id/shareScroll"
28+
android:layout_width="match_parent"
29+
android:layout_height="match_parent"
30+
tools:context=".presentation.spaces.members.SpaceMembersActivity">
2631

2732
<LinearLayout
2833
android:id="@+id/members_section"
@@ -138,4 +143,6 @@
138143

139144
</LinearLayout>
140145

141-
</androidx.core.widget.NestedScrollView>
146+
</androidx.core.widget.NestedScrollView>
147+
148+
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

0 commit comments

Comments
 (0)