Эх сурвалжийг харах

Fix share permission `shareType` check

This will fix only *email share* creation.
However, users should be able to update *email shares* with notes, labels, and also passwords. They should be considered as link shares and be displayed as such in the (upper) link-list of `NCShare`. Compare to web.

Signed-off-by: Henrik Storch <henrik.storch@nextcloud.com>
Henrik Storch 3 жил өмнө
parent
commit
4d1cf5d74e

+ 1 - 1
iOSClient/Share/Advanced/NCShareCells.swift

@@ -213,7 +213,7 @@ struct NCShareConfig {
 
     func config(for indexPath: IndexPath) -> NCShareCellConfig? {
         if indexPath.section == 0, indexPath.row < permissions.count {
-            return  permissions[indexPath.row]
+            return permissions[indexPath.row]
         } else if indexPath.section == 1, indexPath.row < advanced.count {
             return advanced[indexPath.row]
         } else { return nil }

+ 3 - 3
iOSClient/Share/NCShare+Helper.swift

@@ -67,7 +67,7 @@ class NCTableShareOptions: NCTableShareable {
     var expirationDate: NSDate?
     var shareWithDisplayname: String = ""
 
-    private init(shareType: Int, metadata: tableMetadata, password: String? = nil) {
+    private init(shareType: Int, metadata: tableMetadata, password: String?) {
         self.permissions = NCManageDatabase.shared.getCapabilitiesServerInt(account: metadata.account, elements: ["ocs", "data", "capabilities", "files_sharing", "default_permissions"]) & metadata.sharePermissionsCollaborationServices
         self.shareType = shareType
         self.account = metadata.account
@@ -76,8 +76,8 @@ class NCTableShareOptions: NCTableShareable {
         }
     }
 
-    convenience init(sharee: NCCommunicationSharee, metadata: tableMetadata) {
-        self.init(shareType: sharee.shareType, metadata: metadata)
+    convenience init(sharee: NCCommunicationSharee, metadata: tableMetadata, password: String?) {
+        self.init(shareType: sharee.shareType, metadata: metadata, password: password)
         self.shareWith = sharee.shareWith
     }
 

+ 4 - 5
iOSClient/Share/NCShare.swift

@@ -99,7 +99,7 @@ class NCShare: UIViewController, NCShareNetworkingDelegate, NCSharePagingContent
             let advancePermission = UIStoryboard(name: "NCShare", bundle: nil).instantiateViewController(withIdentifier: "NCShareAdvancePermission") as? NCShareAdvancePermission,
             let navigationController = self.navigationController,
             let metadata = self.metadata else { return }
-        self.checkEnforcedPassword { password in
+        self.checkEnforcedPassword(shareType: NCShareCommon.shared.SHARE_TYPE_LINK) { password in
             advancePermission.networking = self.networking
             advancePermission.share = NCTableShareOptions.shareLink(metadata: metadata, password: password)
             advancePermission.metadata = self.metadata
@@ -185,10 +185,10 @@ class NCShare: UIViewController, NCShareNetworkingDelegate, NCSharePagingContent
         networking?.getSharees(searchString: searchString)
     }
 
-    func checkEnforcedPassword(shareType: Int? = nil, completion: @escaping (String?) -> Void) {
+    func checkEnforcedPassword(shareType: Int, completion: @escaping (String?) -> Void) {
         guard let metadata = self.metadata,
               NCManageDatabase.shared.getCapabilitiesServerBool(account: metadata.account, elements: NCElementsJSON.shared.capabilitiesFileSharingPubPasswdEnforced, exists: false),
-              shareType == NCShareCommon.shared.SHARE_TYPE_USER || shareType == NCShareCommon.shared.SHARE_TYPE_EMAIL
+              shareType == NCShareCommon.shared.SHARE_TYPE_LINK || shareType == NCShareCommon.shared.SHARE_TYPE_EMAIL
         else { return completion(nil) }
 
         self.present(UIAlertController.sharePassword(completion: completion), animated: true)
@@ -255,8 +255,7 @@ class NCShare: UIViewController, NCShareNetworkingDelegate, NCSharePagingContent
                 let navigationController = self.navigationController,
                 let metadata = self.metadata else { return }
             self.checkEnforcedPassword(shareType: sharee.shareType) { password in
-                let shareOptions = NCTableShareOptions(sharee: sharee, metadata: metadata)
-                if let password = password { shareOptions.password = password }
+                let shareOptions = NCTableShareOptions(sharee: sharee, metadata: metadata, password: password)
                 advancePermission.share = shareOptions
                 advancePermission.networking = self.networking
                 advancePermission.metadata = metadata