NCShare+Helper.swift 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // NCShare+Helper.swift
  3. // Nextcloud
  4. //
  5. // Created by Henrik Storch on 19.03.22.
  6. // Copyright © 2022 Marino Faggiana. All rights reserved.
  7. //
  8. import UIKit
  9. import NCCommunication
  10. extension tableShare: TableShareable { }
  11. protocol TableShareable: AnyObject {
  12. var shareType: Int { get set }
  13. var permissions: Int { get set }
  14. var account: String { get }
  15. var idShare: Int { get set }
  16. var shareWith: String { get set }
  17. // var publicUpload: Bool? = false
  18. var hideDownload: Bool { get set }
  19. var password: String { get set }
  20. var label: String { get set }
  21. var note: String { get set }
  22. var expirationDate: NSDate? { get set }
  23. var shareWithDisplayname: String { get set }
  24. }
  25. extension TableShareable {
  26. var expDateString: String? {
  27. guard let date = expirationDate else { return nil }
  28. let dateFormatter = DateFormatter()
  29. dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:ss"
  30. return dateFormatter.string(from: date as Date)
  31. }
  32. }
  33. class TableShareOptions: TableShareable {
  34. var shareType: Int
  35. var permissions: Int
  36. let account: String
  37. var idShare: Int = 0
  38. var shareWith: String = ""
  39. // var publicUpload: Bool? = false
  40. var hideDownload: Bool = false
  41. var password: String = ""
  42. var label: String = ""
  43. var note: String = ""
  44. var expirationDate: NSDate?
  45. var shareWithDisplayname: String = ""
  46. private init(shareType: Int, metadata: tableMetadata, password: String? = nil) {
  47. self.permissions = NCManageDatabase.shared.getCapabilitiesServerInt(account: metadata.account, elements: ["ocs", "data", "capabilities", "files_sharing", "default_permissions"]) & metadata.sharePermissionsCollaborationServices
  48. self.shareType = shareType
  49. self.account = metadata.account
  50. if let password = password {
  51. self.password = password
  52. }
  53. }
  54. convenience init(sharee: NCCommunicationSharee, metadata: tableMetadata) {
  55. self.init(shareType: sharee.shareType, metadata: metadata)
  56. self.shareWith = sharee.shareWith
  57. }
  58. static func shareLink(metadata: tableMetadata, password: String?) -> TableShareOptions {
  59. return TableShareOptions(shareType: NCShareCommon.shared.SHARE_TYPE_LINK, metadata: metadata, password: password)
  60. }
  61. }
  62. protocol NCShareDetail {
  63. var share: TableShareable! { get }
  64. }
  65. extension NCShareDetail where Self: UIViewController {
  66. func setNavigationTitle() {
  67. title = NSLocalizedString("_share_", comment: "") + " – "
  68. if share.shareType == NCShareCommon.shared.SHARE_TYPE_LINK {
  69. title! += share.label.isEmpty ? NSLocalizedString("_share_link_", comment: "") : share.label
  70. } else {
  71. title! += share.shareWithDisplayname.isEmpty ? share.shareWith : share.shareWithDisplayname
  72. }
  73. }
  74. }