Skip to content

Commit 20238f9

Browse files
author
root
committed
fix: show members menu without permissions/read
1 parent ff6802d commit 20238f9

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
7272
private var listener: SpaceMemberFragmentListener? = null
7373
private var canRemoveMembers = false
7474
private var canEditMembers = false
75+
private var canReadMembers = false
7576
private var numberOfManagers = 1
7677

7778
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
@@ -98,7 +99,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
9899
savedInstanceState?.let {
99100
canRemoveMembers = it.getBoolean(CAN_REMOVE_MEMBERS, false)
100101
canEditMembers = it.getBoolean(CAN_EDIT_MEMBERS, false)
102+
canReadMembers = it.getBoolean(CAN_READ_MEMBERS, false)
101103
}
104+
binding.membersRecyclerView.isVisible = canReadMembers
102105

103106
subscribeToViewModels()
104107

@@ -138,6 +141,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
138141
super.onSaveInstanceState(outState)
139142
outState.putBoolean(CAN_REMOVE_MEMBERS, canRemoveMembers)
140143
outState.putBoolean(CAN_EDIT_MEMBERS, canEditMembers)
144+
outState.putBoolean(CAN_READ_MEMBERS, canReadMembers)
141145
}
142146

143147
override fun onRemoveMember(spaceMember: SpaceMember) {
@@ -193,7 +197,8 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
193197
spaceMember.roles.contains(OCRoleType.toString(OCRoleType.CAN_MANAGE)) }
194198
spaceMembers = it.members
195199
addMemberRoles = it.roles
196-
spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
200+
val membersForList = if (canReadMembers) spaceMembers else emptyList()
201+
spaceMembersAdapter.setSpaceMembers(membersForList, roles, canRemoveMembers, canEditMembers, numberOfManagers)
197202
val hasLinks = it.links.isNotEmpty()
198203
showOrHideEmptyView(hasLinks)
199204
if (hasLinks) { showSpaceLinks(it.links) }
@@ -218,7 +223,10 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
218223
binding.addMemberButton.isVisible = DRIVES_CREATE_PERMISSION in spacePermissions
219224
canRemoveMembers = DRIVES_DELETE_PERMISSION in spacePermissions
220225
canEditMembers = DRIVES_UPDATE_PERMISSION in spacePermissions
221-
spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
226+
canReadMembers = DRIVES_READ_PERMISSION in spacePermissions
227+
binding.membersRecyclerView.isVisible = canReadMembers
228+
val membersForList = if (canReadMembers) spaceMembers else emptyList()
229+
spaceMembersAdapter.setSpaceMembers(membersForList, roles, canRemoveMembers, canEditMembers, numberOfManagers)
222230
}
223231
}
224232
is UIResult.Loading -> { }
@@ -302,8 +310,10 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
302310
private const val DRIVES_CREATE_PERMISSION = "libre.graph/driveItem/permissions/create"
303311
private const val DRIVES_DELETE_PERMISSION = "libre.graph/driveItem/permissions/delete"
304312
private const val DRIVES_UPDATE_PERMISSION = "libre.graph/driveItem/permissions/update"
313+
private const val DRIVES_READ_PERMISSION = "libre.graph/driveItem/permissions/read"
305314
private const val CAN_REMOVE_MEMBERS = "CAN_REMOVE_MEMBERS"
306315
private const val CAN_EDIT_MEMBERS = "CAN_EDIT_MEMBERS"
316+
private const val CAN_READ_MEMBERS = "CAN_READ_MEMBERS"
307317

308318
fun newInstance(
309319
accountName: String,

owncloudDomain/src/main/java/com/owncloud/android/domain/spaces/usecases/FilterSpaceMenuOptionsUseCase.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,9 @@ class FilterSpaceMenuOptionsUseCase(
4545

4646
val editImagePermission = hasSpacePermission(spacePermissionsResult, DRIVES_MANAGE_PERMISSION)
4747

48-
val membersPermission = hasSpacePermission(spacePermissionsResult, DRIVES_READ_PERMISSION)
49-
50-
if (membersPermission) {
51-
optionsToShow.add(SpaceMenuOption.MEMBERS)
52-
}
48+
// Members screen also hosts space public links (permalink). Always offer the menu entry;
49+
// `libre.graph/driveItem/permissions/read` is applied inside SpaceMembersFragment for the member list.
50+
optionsToShow.add(SpaceMenuOption.MEMBERS)
5351

5452
if (editPermission || (isSpaceManager && currentSpace.isDisabled)) {
5553
optionsToShow.add(SpaceMenuOption.EDIT)
@@ -87,7 +85,6 @@ class FilterSpaceMenuOptionsUseCase(
8785
companion object {
8886
private const val DRIVES_MANAGE_PERMISSION = "libre.graph/driveItem/permissions/update"
8987
private const val DRIVES_DELETE_PERMISSION = "libre.graph/driveItem/permissions/delete"
90-
private const val DRIVES_READ_PERMISSION = "libre.graph/driveItem/permissions/read"
9188
private const val DRIVES_MANAGER_ROLE = "manager"
9289
}
9390
}

0 commit comments

Comments
 (0)