@@ -79,6 +79,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
7979 private var listener: SpaceMemberFragmentListener ? = null
8080 private var canRemoveMembers = false
8181 private var canEditMembers = false
82+ private var canReadMembers = false
8283 private var numberOfManagers = 1
8384
8485 override fun onCreateView (inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ): View {
@@ -105,6 +106,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
105106 savedInstanceState?.let {
106107 canRemoveMembers = it.getBoolean(CAN_REMOVE_MEMBERS , false )
107108 canEditMembers = it.getBoolean(CAN_EDIT_MEMBERS , false )
109+ canReadMembers = it.getBoolean(CAN_READ_MEMBERS , false )
108110 }
109111
110112 subscribeToViewModels()
@@ -150,6 +152,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
150152 super .onSaveInstanceState(outState)
151153 outState.putBoolean(CAN_REMOVE_MEMBERS , canRemoveMembers)
152154 outState.putBoolean(CAN_EDIT_MEMBERS , canEditMembers)
155+ outState.putBoolean(CAN_READ_MEMBERS , canReadMembers)
153156 }
154157
155158 override fun onRemoveMember (spaceMember : SpaceMember ) {
@@ -217,7 +220,8 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
217220 spaceMember.roles.contains(OCRoleType .toString(OCRoleType .CAN_MANAGE )) }
218221 spaceMembers = it.members
219222 addMemberRoles = it.roles
220- spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
223+ val membersForList = if (canReadMembers) spaceMembers else emptyList()
224+ spaceMembersAdapter.setSpaceMembers(membersForList, roles, canRemoveMembers, canEditMembers, numberOfManagers)
221225 val hasLinks = it.links.isNotEmpty()
222226 showOrHideEmptyView(hasLinks)
223227 if (hasLinks) { showSpaceLinks(it.links) }
@@ -242,7 +246,6 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
242246 is UIResult .Success -> {
243247 uiResult.data?.let { spacePermissions ->
244248 checkPermissions(spacePermissions)
245- spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
246249 }
247250 }
248251 is UIResult .Loading -> { }
@@ -316,13 +319,18 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
316319 }
317320
318321 private fun checkPermissions (spacePermissions : List <String >) {
322+ val hasCreatePermission = DRIVES_CREATE_PERMISSION in spacePermissions
323+ canRemoveMembers = DRIVES_DELETE_PERMISSION in spacePermissions
324+ canEditMembers = DRIVES_UPDATE_PERMISSION in spacePermissions
325+ canReadMembers = DRIVES_READ_PERMISSION in spacePermissions
319326 binding.apply {
320- val hasCreatePermission = DRIVES_CREATE_PERMISSION in spacePermissions
321327 addMemberButton.isVisible = hasCreatePermission
322- addPublicLinkButton.isVisible = hasCreatePermission
328+ addPublicLinkButton.isVisible = hasCreatePermission && canReadMembers
329+ membersListSection.isVisible = canReadMembers
330+ publicLinksSection.isVisible = canReadMembers
323331 }
324- canRemoveMembers = DRIVES_DELETE_PERMISSION in spacePermissions
325- canEditMembers = DRIVES_UPDATE_PERMISSION in spacePermissions
332+ val membersForList = if (canReadMembers) spaceMembers else emptyList()
333+ spaceMembersAdapter.setSpaceMembers(membersForList, roles, canRemoveMembers, canEditMembers, numberOfManagers)
326334 }
327335
328336 private fun showOrHideEmptyView (hasLinks : Boolean ) {
@@ -358,8 +366,10 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
358366 private const val DRIVES_CREATE_PERMISSION = " libre.graph/driveItem/permissions/create"
359367 private const val DRIVES_DELETE_PERMISSION = " libre.graph/driveItem/permissions/delete"
360368 private const val DRIVES_UPDATE_PERMISSION = " libre.graph/driveItem/permissions/update"
369+ private const val DRIVES_READ_PERMISSION = " libre.graph/driveItem/permissions/read"
361370 private const val CAN_REMOVE_MEMBERS = " CAN_REMOVE_MEMBERS"
362371 private const val CAN_EDIT_MEMBERS = " CAN_EDIT_MEMBERS"
372+ private const val CAN_READ_MEMBERS = " CAN_READ_MEMBERS"
363373
364374 fun newInstance (
365375 accountName : String ,
0 commit comments