Skip to content
Merged
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
1 change: 1 addition & 0 deletions changelog/unreleased/4783
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ This new section shows information like public link names, types and expiration
https://github.com/owncloud/android/issues/4752
https://github.com/owncloud/android/pull/4783
https://github.com/owncloud/android/pull/4834
https://github.com/owncloud/android/pull/4845
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,10 @@ class SpaceLinksAdapter(
override fun getItemCount(): Int = spaceLinks.size

fun setSpaceLinks(spaceLinks: List<OCLink>, canRemoveLinks: Boolean, canEditLinks: Boolean) {
val hasUserPermissionsChanged = this.canEditLinks != canEditLinks || this.canRemoveLinks != canRemoveLinks
this.canRemoveLinks = canRemoveLinks
this.canEditLinks = canEditLinks
val diffCallback = SpaceLinksDiffUtil(this.spaceLinks, spaceLinks)
val diffCallback = SpaceLinksDiffUtil(this.spaceLinks, spaceLinks, hasUserPermissionsChanged)
val diffResult = DiffUtil.calculateDiff(diffCallback)
this.spaceLinks = spaceLinks
diffResult.dispatchUpdatesTo(this)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ import com.owncloud.android.domain.links.model.OCLink

class SpaceLinksDiffUtil(
private val oldList: List<OCLink>,
private val newList: List<OCLink>
private val newList: List<OCLink>,
private val hasUserPermissionsChanged: Boolean
) : DiffUtil.Callback() {
override fun getOldListSize(): Int = oldList.size

Expand All @@ -43,6 +44,7 @@ class SpaceLinksDiffUtil(
val newItem = newList[newItemPosition]

return ((oldItem.id == newItem.id) && (oldItem.expirationDateTime == newItem.expirationDateTime) &&
(oldItem.displayName == newItem.displayName) && (oldItem.type == newItem.type) && (oldItem.webUrl == newItem.webUrl))
(oldItem.displayName == newItem.displayName) && (oldItem.type == newItem.type) &&
(oldItem.webUrl == newItem.webUrl) && !hasUserPermissionsChanged)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,15 @@ class SpaceMembersAdapter(
numberOfManagers: Int
) {

val userPermissionsChanged = this.canEditMembers != canEditMembers
val hasUserPermissionsChanged = this.canEditMembers != canEditMembers || this.canRemoveMembers != canRemoveMembers
val numberOfManagersChanged = this.numberOfManagers != numberOfManagers

this.canRemoveMembers = canRemoveMembers
this.canEditMembers = canEditMembers
this.rolesMap = roles.associate { it.id to it.displayName }
val listOfMembersFiltered = spaceMembers.sortedWith(compareByDescending<SpaceMember> {
member -> roles.indexOfFirst { it.id in member.roles } }.thenBy { member -> member.displayName })
val diffCallback = SpaceMembersDiffUtil(this.members, listOfMembersFiltered, numberOfManagersChanged, userPermissionsChanged)
val diffCallback = SpaceMembersDiffUtil(this.members, listOfMembersFiltered, numberOfManagersChanged, hasUserPermissionsChanged)
val diffResult = DiffUtil.calculateDiff(diffCallback)
this.members = listOfMembersFiltered
this.numberOfManagers = numberOfManagers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,11 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
private var roles: List<OCRole> = emptyList()
private var addMemberRoles: List<OCRole> = emptyList()
private var spaceMembers: List<SpaceMember> = emptyList()
private var spaceLinks: List<OCLink> = emptyList()
private var listener: SpaceMemberFragmentListener? = null
private var canRemoveMembersAndLinks = false
private var canEditMembersAndLinks = false
private var canReadMembers = false
private var canReadMembersAndLinks = false
private var numberOfManagers = 1

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
Expand Down Expand Up @@ -113,7 +114,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
savedInstanceState?.let {
canRemoveMembersAndLinks = it.getBoolean(CAN_REMOVE_MEMBERS, false)
canEditMembersAndLinks = it.getBoolean(CAN_EDIT_MEMBERS, false)
canReadMembers = it.getBoolean(CAN_READ_MEMBERS, false)
canReadMembersAndLinks = it.getBoolean(CAN_READ_MEMBERS, false)
}

subscribeToViewModels()
Expand Down Expand Up @@ -163,7 +164,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
super.onSaveInstanceState(outState)
outState.putBoolean(CAN_REMOVE_MEMBERS, canRemoveMembersAndLinks)
outState.putBoolean(CAN_EDIT_MEMBERS, canEditMembersAndLinks)
outState.putBoolean(CAN_READ_MEMBERS, canReadMembers)
outState.putBoolean(CAN_READ_MEMBERS, canReadMembersAndLinks)
}

override fun onRemoveMember(spaceMember: SpaceMember) {
Expand Down Expand Up @@ -253,11 +254,14 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
spaceMember.roles.contains(OCRoleType.toString(OCRoleType.CAN_MANAGE)) }
spaceMembers = it.members
addMemberRoles = it.roles
if (canReadMembers) {
if (canReadMembersAndLinks) {
showSpaceMembers()
val hasLinks = it.links.isNotEmpty()
showOrHideEmptyView(hasLinks)
if (hasLinks) { showSpaceLinks(it.links) }
if (hasLinks) {
spaceLinks = it.links
showSpaceLinks()
}
}
binding.indeterminateProgressBar.isVisible = false
}
Expand All @@ -280,8 +284,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
is UIResult.Success -> {
uiResult.data?.let { spacePermissions ->
checkPermissions(spacePermissions)
if (canReadMembers) {
if (canReadMembersAndLinks) {
showSpaceMembers()
showSpaceLinks()
}
}
}
Expand Down Expand Up @@ -404,12 +409,12 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
val hasCreatePermission = DRIVES_CREATE_PERMISSION in spacePermissions
canRemoveMembersAndLinks = DRIVES_DELETE_PERMISSION in spacePermissions
canEditMembersAndLinks = DRIVES_UPDATE_PERMISSION in spacePermissions
canReadMembers = DRIVES_READ_PERMISSION in spacePermissions
canReadMembersAndLinks = DRIVES_READ_PERMISSION in spacePermissions
binding.apply {
addMemberButton.isVisible = hasCreatePermission
addPublicLinkButton.isVisible = hasCreatePermission
membersListSection.isVisible = canReadMembers
publicLinksSection.isVisible = canReadMembers
membersListSection.isVisible = canReadMembersAndLinks
publicLinksSection.isVisible = canReadMembersAndLinks
}
}

Expand All @@ -430,7 +435,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
)
}

private fun showSpaceLinks(spaceLinks: List<OCLink>) {
private fun showSpaceLinks() {
val formatter = SimpleDateFormat(DisplayUtils.DATE_FORMAT_ISO, Locale.ROOT).apply {
timeZone = TimeZone.getTimeZone("UTC")
}
Expand Down
Loading