NCShareQuickStatusMenu.swift 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // NCShareQuickStatusMenu.swift
  3. // Nextcloud
  4. //
  5. // Created by TSI-mc on 30/06/21.
  6. // Copyright © 2021 Marino Faggiana. All rights reserved.
  7. //
  8. import UIKit
  9. extension NCShare {
  10. func toggleMenu(isDirectory: Bool, tableShare: tableShare) {
  11. var actions = [NCMenuAction]()
  12. actions.append(
  13. NCMenuAction(
  14. title: NSLocalizedString("_share_read_only_", comment: ""),
  15. icon: UIImage(),
  16. selected: tableShare.permissions == (NCGlobal.shared.permissionReadShare + NCGlobal.shared.permissionShareShare) || tableShare.permissions == NCGlobal.shared.permissionReadShare,
  17. on: false,
  18. action: { _ in
  19. let canShare = CCUtility.isPermission(toCanShare: tableShare.permissions)
  20. let permissions = CCUtility.getPermissionsValue(byCanEdit: false, andCanCreate: false, andCanChange: false, andCanDelete: false, andCanShare: canShare, andIsFolder: isDirectory)
  21. self.updateSharePermissions(share: tableShare, permissions: permissions)
  22. }
  23. )
  24. )
  25. actions.append(
  26. NCMenuAction(
  27. title: isDirectory ? NSLocalizedString("_share_allow_upload_", comment: "") : NSLocalizedString("_share_editing_", comment: ""),
  28. icon: UIImage(),
  29. selected: hasUploadPermission(tableShare: tableShare),
  30. on: false,
  31. action: { _ in
  32. let canShare = CCUtility.isPermission(toCanShare: tableShare.permissions)
  33. let permissions = CCUtility.getPermissionsValue(byCanEdit: true, andCanCreate: true, andCanChange: true, andCanDelete: true, andCanShare: canShare, andIsFolder: isDirectory)
  34. self.updateSharePermissions(share: tableShare, permissions: permissions)
  35. }
  36. )
  37. )
  38. self.presentMenu(with: actions)
  39. }
  40. fileprivate func hasUploadPermission(tableShare: tableShare) -> Bool {
  41. let uploadPermissions = [
  42. NCGlobal.shared.permissionMaxFileShare,
  43. NCGlobal.shared.permissionMaxFolderShare,
  44. NCGlobal.shared.permissionDefaultFileRemoteShareNoSupportShareOption,
  45. NCGlobal.shared.permissionDefaultFolderRemoteShareNoSupportShareOption]
  46. return uploadPermissions.contains(tableShare.permissions)
  47. }
  48. func updateSharePermissions(share: tableShare, permissions: Int) {
  49. let updatedShare = tableShare(value: share)
  50. updatedShare.permissions = permissions
  51. networking?.updateShare(option: updatedShare)
  52. }
  53. }