Skip to content

Commit caf20a2

Browse files
committed
fix: hide icons when user loses permissions
1 parent 25adaa3 commit caf20a2

3 files changed

Lines changed: 20 additions & 9 deletions

File tree

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import com.owncloud.android.databinding.MemberItemBinding
3131
import com.owncloud.android.domain.roles.model.OCRole
3232
import com.owncloud.android.domain.roles.model.OCRoleType
3333
import com.owncloud.android.domain.spaces.model.SpaceMember
34-
import com.owncloud.android.domain.spaces.model.SpaceMembers
3534
import com.owncloud.android.utils.DisplayUtils
3635
import com.owncloud.android.utils.PreferenceUtils
3736

@@ -97,13 +96,23 @@ class SpaceMembersAdapter(
9796

9897
override fun getItemCount(): Int = members.size
9998

100-
fun setSpaceMembers(spaceMembers: SpaceMembers, roles: List<OCRole>, canRemoveMembers: Boolean, canEditMembers: Boolean, numberOfManagers: Int) {
99+
fun setSpaceMembers(
100+
spaceMembers: List<SpaceMember>,
101+
roles: List<OCRole>,
102+
canRemoveMembers: Boolean,
103+
canEditMembers: Boolean,
104+
numberOfManagers: Int
105+
) {
106+
107+
val userPermissionsChanged = this.canEditMembers != canEditMembers
108+
val numberOfManagersChanged = this.numberOfManagers != numberOfManagers
109+
101110
this.canRemoveMembers = canRemoveMembers
102111
this.canEditMembers = canEditMembers
103112
this.rolesMap = roles.associate { it.id to it.displayName }
104-
val listOfMembersFiltered = spaceMembers.members.sortedWith(compareByDescending<SpaceMember> {
113+
val listOfMembersFiltered = spaceMembers.sortedWith(compareByDescending<SpaceMember> {
105114
member -> roles.indexOfFirst { it.id in member.roles } }.thenBy { member -> member.displayName })
106-
val diffCallback = SpaceMembersDiffUtil(this.members, listOfMembersFiltered, this.numberOfManagers, numberOfManagers)
115+
val diffCallback = SpaceMembersDiffUtil(this.members, listOfMembersFiltered, numberOfManagersChanged, userPermissionsChanged)
107116
val diffResult = DiffUtil.calculateDiff(diffCallback)
108117
this.members = listOfMembersFiltered
109118
this.numberOfManagers = numberOfManagers

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ import com.owncloud.android.domain.spaces.model.SpaceMember
2626
class SpaceMembersDiffUtil(
2727
private val oldList: List<SpaceMember>,
2828
private val newList: List<SpaceMember>,
29-
private val oldNumberOfManagers: Int,
30-
private val newNumberOfManagers: Int
29+
private val numberOfManagersChanged: Boolean,
30+
private val userPermissionsChanged: Boolean
3131
) : DiffUtil.Callback() {
3232
override fun getOldListSize(): Int = oldList.size
3333

@@ -45,6 +45,6 @@ class SpaceMembersDiffUtil(
4545
val newItem = newList[newItemPosition]
4646

4747
return ((oldItem.id == newItem.id) && (oldItem.displayName == newItem.displayName) && (oldItem.roles == newItem.roles)
48-
&& (oldItem.expirationDateTime == newItem.expirationDateTime) && (oldNumberOfManagers == newNumberOfManagers))
48+
&& (oldItem.expirationDateTime == newItem.expirationDateTime) && !numberOfManagersChanged && !userPermissionsChanged)
4949
}
5050
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
6666
private var listener: SpaceMemberFragmentListener? = null
6767
private var canRemoveMembers = false
6868
private var canEditMembers = false
69+
private var numberOfManagers = 1
6970

7071
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
7172
_binding = MembersFragmentBinding.inflate(inflater, container, false)
@@ -172,11 +173,11 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
172173
is UIResult.Success -> {
173174
uiResult.data?.let {
174175
if (roles.isNotEmpty()) {
175-
val numberOfManagers = it.members.count { spaceMember ->
176+
numberOfManagers = it.members.count { spaceMember ->
176177
spaceMember.roles.contains(OCRoleType.toString(OCRoleType.CAN_MANAGE)) }
177-
spaceMembersAdapter.setSpaceMembers(it, roles, canRemoveMembers, canEditMembers, numberOfManagers)
178178
spaceMembers = it.members
179179
addMemberRoles = it.roles
180+
spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
180181
}
181182
}
182183
}
@@ -197,6 +198,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
197198
binding.addMemberButton.isVisible = DRIVES_CREATE_PERMISSION in spacePermissions
198199
canRemoveMembers = DRIVES_DELETE_PERMISSION in spacePermissions
199200
canEditMembers = DRIVES_UPDATE_PERMISSION in spacePermissions
201+
spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
200202
}
201203
}
202204
is UIResult.Loading -> { }

0 commit comments

Comments
 (0)