NCShare+NCCellDelegate.swift 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //
  2. // NCShare+NCCellDelegate.swift
  3. // Nextcloud
  4. //
  5. // Created by Henrik Storch on 03.01.22.
  6. // Copyright © 2022 Marino Faggiana. All rights reserved.
  7. //
  8. import UIKit
  9. // MARK: - NCCell Delegates
  10. extension NCShare: NCShareLinkCellDelegate, NCShareUserCellDelegate {
  11. func copyInternalLink(sender: Any) {
  12. guard let metadata = self.metadata, let appDelegate = appDelegate else { return }
  13. let serverUrlFileName = metadata.serverUrl + "/" + metadata.fileName
  14. NCNetworking.shared.readFile(serverUrlFileName: serverUrlFileName, account: metadata.account) { _, metadata, errorCode, errorDescription in
  15. if errorCode == 0, let metadata = metadata {
  16. let internalLink = appDelegate.urlBase + "/index.php/f/" + metadata.fileId
  17. NCShareCommon.shared.copyLink(link: internalLink, viewController: self, sender: sender)
  18. } else {
  19. NCContentPresenter.shared.messageNotification("_share_", description: errorDescription, delay: NCGlobal.shared.dismissAfterSecond, type: NCContentPresenter.messageType.error, errorCode: errorCode)
  20. }
  21. }
  22. }
  23. func tapCopy(with tableShare: tableShare?, sender: Any) {
  24. guard let tableShare = tableShare else {
  25. return copyInternalLink(sender: sender)
  26. }
  27. NCShareCommon.shared.copyLink(link: tableShare.url, viewController: self, sender: sender)
  28. }
  29. func tapMenu(with tableShare: tableShare?, sender: Any) {
  30. guard let metadata = self.metadata else { return }
  31. let isFilesSharingPublicPasswordEnforced = NCManageDatabase.shared.getCapabilitiesServerBool(account: metadata.account, elements: NCElementsJSON.shared.capabilitiesFileSharingPubPasswdEnforced, exists: false)
  32. if let tableShare = tableShare {
  33. // open share menu
  34. if tableShare.shareType == 3 {
  35. let views = NCShareCommon.shared.openViewMenuShareLink(shareViewController: self, tableShare: tableShare, metadata: metadata)
  36. shareLinkMenuView = views.shareLinkMenuView
  37. shareMenuViewWindow = views.viewWindow
  38. let tap = UITapGestureRecognizer(target: self, action: #selector(tapLinkMenuViewWindow))
  39. tap.delegate = self
  40. shareMenuViewWindow?.addGestureRecognizer(tap)
  41. } else {
  42. let views = NCShareCommon.shared.openViewMenuUser(shareViewController: self, tableShare: tableShare, metadata: metadata)
  43. shareUserMenuView = views.shareUserMenuView
  44. shareMenuViewWindow = views.viewWindow
  45. let tap = UITapGestureRecognizer(target: self, action: #selector(tapLinkMenuViewWindow))
  46. tap.delegate = self
  47. shareMenuViewWindow?.addGestureRecognizer(tap)
  48. }
  49. } else if isFilesSharingPublicPasswordEnforced {
  50. // create share with pw
  51. let alertController = UIAlertController(title: NSLocalizedString("_enforce_password_protection_", comment: ""), message: "", preferredStyle: .alert)
  52. alertController.addTextField { textField in
  53. textField.isSecureTextEntry = true
  54. }
  55. alertController.addAction(UIAlertAction(title: NSLocalizedString("_cancel_", comment: ""), style: .default) { _ in })
  56. let okAction = UIAlertAction(title: NSLocalizedString("_ok_", comment: ""), style: .default) { _ in
  57. let password = alertController.textFields?.first?.text
  58. self.networking?.createShareLink(password: password ?? "")
  59. }
  60. alertController.addAction(okAction)
  61. self.present(alertController, animated: true, completion: nil)
  62. } else {
  63. // create sahre without pw
  64. networking?.createShareLink(password: "")
  65. }
  66. }
  67. func showProfile(with tableShare: tableShare?, sender: Any) {
  68. guard let tableShare = tableShare else { return }
  69. showProfileMenu(userId: tableShare.shareWith)
  70. }
  71. func quickStatus(with tableShare: tableShare?, sender: Any) {
  72. guard let tableShare = tableShare,
  73. let metadata = metadata,
  74. tableShare.shareType != NCGlobal.shared.permissionDefaultFileRemoteShareNoSupportShareOption else { return }
  75. let quickStatusMenu = NCShareQuickStatusMenu()
  76. quickStatusMenu.toggleMenu(viewController: self, directory: metadata.directory, tableShare: tableShare)
  77. }
  78. }