@@ -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,7 +106,10 @@ 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 }
111+ binding.membersListSection.isVisible = canReadMembers
112+ binding.publicLinksSection.isVisible = canReadMembers
109113
110114 subscribeToViewModels()
111115
@@ -150,6 +154,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
150154 super .onSaveInstanceState(outState)
151155 outState.putBoolean(CAN_REMOVE_MEMBERS , canRemoveMembers)
152156 outState.putBoolean(CAN_EDIT_MEMBERS , canEditMembers)
157+ outState.putBoolean(CAN_READ_MEMBERS , canReadMembers)
153158 }
154159
155160 override fun onRemoveMember (spaceMember : SpaceMember ) {
@@ -217,7 +222,8 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
217222 spaceMember.roles.contains(OCRoleType .toString(OCRoleType .CAN_MANAGE )) }
218223 spaceMembers = it.members
219224 addMemberRoles = it.roles
220- spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
225+ val membersForList = if (canReadMembers) spaceMembers else emptyList()
226+ spaceMembersAdapter.setSpaceMembers(membersForList, roles, canRemoveMembers, canEditMembers, numberOfManagers)
221227 val hasLinks = it.links.isNotEmpty()
222228 showOrHideEmptyView(hasLinks)
223229 if (hasLinks) { showSpaceLinks(it.links) }
@@ -242,7 +248,6 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
242248 is UIResult .Success -> {
243249 uiResult.data?.let { spacePermissions ->
244250 checkPermissions(spacePermissions)
245- spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
246251 }
247252 }
248253 is UIResult .Loading -> { }
@@ -316,13 +321,18 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
316321 }
317322
318323 private fun checkPermissions (spacePermissions : List <String >) {
324+ val hasCreatePermission = DRIVES_CREATE_PERMISSION in spacePermissions
325+ canRemoveMembers = DRIVES_DELETE_PERMISSION in spacePermissions
326+ canEditMembers = DRIVES_UPDATE_PERMISSION in spacePermissions
327+ canReadMembers = DRIVES_READ_PERMISSION in spacePermissions
319328 binding.apply {
320- val hasCreatePermission = DRIVES_CREATE_PERMISSION in spacePermissions
321329 addMemberButton.isVisible = hasCreatePermission
322- addPublicLinkButton.isVisible = hasCreatePermission
330+ addPublicLinkButton.isVisible = hasCreatePermission && canReadMembers
331+ membersListSection.isVisible = canReadMembers
332+ publicLinksSection.isVisible = canReadMembers
323333 }
324- canRemoveMembers = DRIVES_DELETE_PERMISSION in spacePermissions
325- canEditMembers = DRIVES_UPDATE_PERMISSION in spacePermissions
334+ val membersForList = if (canReadMembers) spaceMembers else emptyList()
335+ spaceMembersAdapter.setSpaceMembers(membersForList, roles, canRemoveMembers, canEditMembers, numberOfManagers)
326336 }
327337
328338 private fun showOrHideEmptyView (hasLinks : Boolean ) {
@@ -358,8 +368,10 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
358368 private const val DRIVES_CREATE_PERMISSION = " libre.graph/driveItem/permissions/create"
359369 private const val DRIVES_DELETE_PERMISSION = " libre.graph/driveItem/permissions/delete"
360370 private const val DRIVES_UPDATE_PERMISSION = " libre.graph/driveItem/permissions/update"
371+ private const val DRIVES_READ_PERMISSION = " libre.graph/driveItem/permissions/read"
361372 private const val CAN_REMOVE_MEMBERS = " CAN_REMOVE_MEMBERS"
362373 private const val CAN_EDIT_MEMBERS = " CAN_EDIT_MEMBERS"
374+ private const val CAN_READ_MEMBERS = " CAN_READ_MEMBERS"
363375
364376 fun newInstance (
365377 accountName : String ,
0 commit comments