Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions changelog/unreleased/4728
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ This new option opens a new view that shows information like member names, roles
https://github.com/owncloud/android/issues/4612
https://github.com/owncloud/android/issues/4763
https://github.com/owncloud/android/issues/4772
https://github.com/owncloud/android/issues/4782
https://github.com/owncloud/android/pull/4728
https://github.com/owncloud/android/pull/4765
https://github.com/owncloud/android/pull/4779
https://github.com/owncloud/android/pull/4784
https://github.com/owncloud/android/pull/4809
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
private var listener: SpaceMemberFragmentListener? = null
private var canRemoveMembers = false
private var canEditMembers = false
private var canReadMembers = false
private var numberOfManagers = 1

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

subscribeToViewModels()

Expand Down Expand Up @@ -138,6 +141,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
super.onSaveInstanceState(outState)
outState.putBoolean(CAN_REMOVE_MEMBERS, canRemoveMembers)
outState.putBoolean(CAN_EDIT_MEMBERS, canEditMembers)
outState.putBoolean(CAN_READ_MEMBERS, canReadMembers)
}

override fun onRemoveMember(spaceMember: SpaceMember) {
Expand Down Expand Up @@ -166,6 +170,15 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
}

private fun subscribeToViewModels() {
observeRoles()
observeSpaceMembers()
observeSpacePermissions()
observeAddMemberResult()
observeRemoveMemberResult()
observeEditMemberResult()
}

private fun observeRoles() {
collectLatestLifecycleFlow(spaceMembersViewModel.roles) { event ->
event?.let {
when (val uiResult = event.peekContent()) {
Expand All @@ -182,7 +195,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
}
}
}
}

private fun observeSpaceMembers() {
collectLatestLifecycleFlow(spaceMembersViewModel.spaceMembers) { event ->
event?.let {
when (val uiResult = event.peekContent()) {
Expand All @@ -193,7 +208,8 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
spaceMember.roles.contains(OCRoleType.toString(OCRoleType.CAN_MANAGE)) }
spaceMembers = it.members
addMemberRoles = it.roles
spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
val membersForList = if (canReadMembers) spaceMembers else emptyList()
spaceMembersAdapter.setSpaceMembers(membersForList, roles, canRemoveMembers, canEditMembers, numberOfManagers)
val hasLinks = it.links.isNotEmpty()
showOrHideEmptyView(hasLinks)
if (hasLinks) { showSpaceLinks(it.links) }
Expand All @@ -209,7 +225,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
}
}
}
}

private fun observeSpacePermissions() {
collectLatestLifecycleFlow(spaceMembersViewModel.spacePermissions) { event ->
event?.let {
when (val uiResult = event.peekContent()) {
Expand All @@ -218,7 +236,10 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
binding.addMemberButton.isVisible = DRIVES_CREATE_PERMISSION in spacePermissions
canRemoveMembers = DRIVES_DELETE_PERMISSION in spacePermissions
canEditMembers = DRIVES_UPDATE_PERMISSION in spacePermissions
spaceMembersAdapter.setSpaceMembers(spaceMembers, roles, canRemoveMembers, canEditMembers, numberOfManagers)
canReadMembers = DRIVES_READ_PERMISSION in spacePermissions
binding.membersRecyclerView.isVisible = canReadMembers
val membersForList = if (canReadMembers) spaceMembers else emptyList()
spaceMembersAdapter.setSpaceMembers(membersForList, roles, canRemoveMembers, canEditMembers, numberOfManagers)
}
}
is UIResult.Loading -> { }
Expand All @@ -228,7 +249,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
}
}
}
}

private fun observeAddMemberResult() {
collectLatestLifecycleFlow(spaceMembersViewModel.addMemberResultFlow) { event ->
event?.peekContent()?.let { uiResult ->
when (uiResult) {
Expand All @@ -241,7 +264,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
}
}
}
}

private fun observeRemoveMemberResult() {
collectLatestLifecycleFlow(spaceMembersViewModel.removeMemberResultFlow) { uiResult ->
when (uiResult) {
is UIResult.Loading -> { }
Expand All @@ -255,7 +280,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
}
}
}
}

private fun observeEditMemberResult() {
collectLatestLifecycleFlow(spaceMembersViewModel.editMemberResultFlow) { event ->
event?.peekContent()?.let { uiResult ->
when (uiResult) {
Expand Down Expand Up @@ -302,8 +329,10 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
private const val DRIVES_CREATE_PERMISSION = "libre.graph/driveItem/permissions/create"
private const val DRIVES_DELETE_PERMISSION = "libre.graph/driveItem/permissions/delete"
private const val DRIVES_UPDATE_PERMISSION = "libre.graph/driveItem/permissions/update"
private const val DRIVES_READ_PERMISSION = "libre.graph/driveItem/permissions/read"
private const val CAN_REMOVE_MEMBERS = "CAN_REMOVE_MEMBERS"
private const val CAN_EDIT_MEMBERS = "CAN_EDIT_MEMBERS"
private const val CAN_READ_MEMBERS = "CAN_READ_MEMBERS"

fun newInstance(
accountName: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,7 @@ class FilterSpaceMenuOptionsUseCase(

val editImagePermission = hasSpacePermission(spacePermissionsResult, DRIVES_MANAGE_PERMISSION)

val membersPermission = hasSpacePermission(spacePermissionsResult, DRIVES_READ_PERMISSION)

if (membersPermission) {
optionsToShow.add(SpaceMenuOption.MEMBERS)
}
optionsToShow.add(SpaceMenuOption.MEMBERS)

if (editPermission || (isSpaceManager && currentSpace.isDisabled)) {
optionsToShow.add(SpaceMenuOption.EDIT)
Expand Down Expand Up @@ -87,7 +83,6 @@ class FilterSpaceMenuOptionsUseCase(
companion object {
private const val DRIVES_MANAGE_PERMISSION = "libre.graph/driveItem/permissions/update"
private const val DRIVES_DELETE_PERMISSION = "libre.graph/driveItem/permissions/delete"
private const val DRIVES_READ_PERMISSION = "libre.graph/driveItem/permissions/read"
private const val DRIVES_MANAGER_ROLE = "manager"
}
}