Skip to content

Commit cce07ae

Browse files
committed
fix: refresh public link options when user loses permissions
1 parent 9c06201 commit cce07ae

4 files changed

Lines changed: 21 additions & 13 deletions

File tree

owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/links/SpaceLinksAdapter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,10 @@ class SpaceLinksAdapter(
9393
override fun getItemCount(): Int = spaceLinks.size
9494

9595
fun setSpaceLinks(spaceLinks: List<OCLink>, canRemoveLinks: Boolean, canEditLinks: Boolean) {
96+
val userPermissionsChanged = this.canEditLinks != canEditLinks || this.canRemoveLinks != canRemoveLinks
9697
this.canRemoveLinks = canRemoveLinks
9798
this.canEditLinks = canEditLinks
98-
val diffCallback = SpaceLinksDiffUtil(this.spaceLinks, spaceLinks)
99+
val diffCallback = SpaceLinksDiffUtil(this.spaceLinks, spaceLinks, userPermissionsChanged)
99100
val diffResult = DiffUtil.calculateDiff(diffCallback)
100101
this.spaceLinks = spaceLinks
101102
diffResult.dispatchUpdatesTo(this)

owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/links/SpaceLinksDiffUtil.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ import com.owncloud.android.domain.links.model.OCLink
2525

2626
class SpaceLinksDiffUtil(
2727
private val oldList: List<OCLink>,
28-
private val newList: List<OCLink>
28+
private val newList: List<OCLink>,
29+
private val userPermissionsChanged: Boolean
2930
) : DiffUtil.Callback() {
3031
override fun getOldListSize(): Int = oldList.size
3132

@@ -43,6 +44,7 @@ class SpaceLinksDiffUtil(
4344
val newItem = newList[newItemPosition]
4445

4546
return ((oldItem.id == newItem.id) && (oldItem.expirationDateTime == newItem.expirationDateTime) &&
46-
(oldItem.displayName == newItem.displayName) && (oldItem.type == newItem.type) && (oldItem.webUrl == newItem.webUrl))
47+
(oldItem.displayName == newItem.displayName) && (oldItem.type == newItem.type) &&
48+
(oldItem.webUrl == newItem.webUrl) && !userPermissionsChanged)
4749
}
4850
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ class SpaceMembersAdapter(
112112
numberOfManagers: Int
113113
) {
114114

115-
val userPermissionsChanged = this.canEditMembers != canEditMembers
115+
val userPermissionsChanged = this.canEditMembers != canEditMembers || this.canRemoveMembers != canRemoveMembers
116116
val numberOfManagersChanged = this.numberOfManagers != numberOfManagers
117117

118118
this.canRemoveMembers = canRemoveMembers

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

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,11 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
7878
private var roles: List<OCRole> = emptyList()
7979
private var addMemberRoles: List<OCRole> = emptyList()
8080
private var spaceMembers: List<SpaceMember> = emptyList()
81+
private var spaceLinks: List<OCLink> = emptyList()
8182
private var listener: SpaceMemberFragmentListener? = null
8283
private var canRemoveMembersAndLinks = false
8384
private var canEditMembersAndLinks = false
84-
private var canReadMembers = false
85+
private var canReadMembersAndLinks = false
8586
private var numberOfManagers = 1
8687

8788
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
@@ -113,7 +114,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
113114
savedInstanceState?.let {
114115
canRemoveMembersAndLinks = it.getBoolean(CAN_REMOVE_MEMBERS, false)
115116
canEditMembersAndLinks = it.getBoolean(CAN_EDIT_MEMBERS, false)
116-
canReadMembers = it.getBoolean(CAN_READ_MEMBERS, false)
117+
canReadMembersAndLinks = it.getBoolean(CAN_READ_MEMBERS, false)
117118
}
118119

119120
subscribeToViewModels()
@@ -163,7 +164,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
163164
super.onSaveInstanceState(outState)
164165
outState.putBoolean(CAN_REMOVE_MEMBERS, canRemoveMembersAndLinks)
165166
outState.putBoolean(CAN_EDIT_MEMBERS, canEditMembersAndLinks)
166-
outState.putBoolean(CAN_READ_MEMBERS, canReadMembers)
167+
outState.putBoolean(CAN_READ_MEMBERS, canReadMembersAndLinks)
167168
}
168169

169170
override fun onRemoveMember(spaceMember: SpaceMember) {
@@ -253,11 +254,14 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
253254
spaceMember.roles.contains(OCRoleType.toString(OCRoleType.CAN_MANAGE)) }
254255
spaceMembers = it.members
255256
addMemberRoles = it.roles
256-
if (canReadMembers) {
257+
if (canReadMembersAndLinks) {
257258
showSpaceMembers()
258259
val hasLinks = it.links.isNotEmpty()
259260
showOrHideEmptyView(hasLinks)
260-
if (hasLinks) { showSpaceLinks(it.links) }
261+
if (hasLinks) {
262+
spaceLinks = it.links
263+
showSpaceLinks(spaceLinks)
264+
}
261265
}
262266
binding.indeterminateProgressBar.isVisible = false
263267
}
@@ -280,8 +284,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
280284
is UIResult.Success -> {
281285
uiResult.data?.let { spacePermissions ->
282286
checkPermissions(spacePermissions)
283-
if (canReadMembers) {
287+
if (canReadMembersAndLinks) {
284288
showSpaceMembers()
289+
showSpaceLinks(spaceLinks)
285290
}
286291
}
287292
}
@@ -404,12 +409,12 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
404409
val hasCreatePermission = DRIVES_CREATE_PERMISSION in spacePermissions
405410
canRemoveMembersAndLinks = DRIVES_DELETE_PERMISSION in spacePermissions
406411
canEditMembersAndLinks = DRIVES_UPDATE_PERMISSION in spacePermissions
407-
canReadMembers = DRIVES_READ_PERMISSION in spacePermissions
412+
canReadMembersAndLinks = DRIVES_READ_PERMISSION in spacePermissions
408413
binding.apply {
409414
addMemberButton.isVisible = hasCreatePermission
410415
addPublicLinkButton.isVisible = hasCreatePermission
411-
membersListSection.isVisible = canReadMembers
412-
publicLinksSection.isVisible = canReadMembers
416+
membersListSection.isVisible = canReadMembersAndLinks
417+
publicLinksSection.isVisible = canReadMembersAndLinks
413418
}
414419
}
415420

0 commit comments

Comments
 (0)