Marino Faggiana 1 year ago
parent
commit
44cd7a5c70

+ 21 - 0
iOSClient/Data/NCManageDatabase+Share.swift

@@ -74,6 +74,27 @@ class tableShareV2: Object {
     }
 }
 
+extension tableShare {
+
+    var isAttributeDownloadEnabled: Bool {
+        if let attributes = attributes, let data = attributes.data(using: .utf8) {
+            do {
+                if let json = try JSONSerialization.jsonObject(with: data) as? [Dictionary<String, Any>] {
+                    for sub in json {
+                        let key = sub["key"] as? String
+                        let enabled = sub["enabled"] as? Bool
+                        let scope = sub["scope"] as? String
+                        if key == "download", enabled == false, scope == "permissions" {
+                            return false
+                        }
+                    }
+                }
+            } catch let error as NSError { print(error) }
+        }
+        return true
+    }
+}
+
 extension NCManageDatabase {
 
     func addShare(account: String, home: String, shares: [NKShare]) {

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

@@ -78,21 +78,7 @@ enum NCUserPermission: CaseIterable, NCPermission {
 
     func isOn(for share: NCTableShareable) -> Bool {
         if self == .download {
-            if let attributes = share.attributes, let data = attributes.data(using: .utf8) {
-                do {
-                    if let json = try JSONSerialization.jsonObject(with: data) as? [Dictionary<String, Any>] {
-                        for sub in json {
-                            let key = sub["key"] as? String
-                            let enabled = sub["enabled"] as? Bool
-                            let scope = sub["scope"] as? String
-                            if key == "download", enabled == false, scope == "permissions" {
-                                return false
-                            }
-                        }
-                    }
-                } catch let error as NSError { print(error) }
-            }
-            return true
+            return share.isAttributeDownloadEnabled
         } else {
             return (share.permissions & permissionBitFlag) != 0
         }

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

@@ -25,7 +25,9 @@ import UIKit
 import NextcloudKit
 
 extension tableShare: NCTableShareable { }
-extension NKShare: NCTableShareable { }
+extension NKShare: NCTableShareable {
+    var isAttributeDownloadEnabled: Bool { return true }
+}
 
 protocol NCTableShareable: AnyObject {
     var shareType: Int { get set }
@@ -40,7 +42,8 @@ protocol NCTableShareable: AnyObject {
     var note: String { get set }
     var expirationDate: NSDate? { get set }
     var shareWithDisplayname: String { get set }
-    var attributes: String? { get set }
+
+    var isAttributeDownloadEnabled: Bool { get }
 }
 
 extension NCTableShareable {
@@ -77,7 +80,7 @@ class NCTableShareOptions: NCTableShareable {
     var expirationDate: NSDate?
     var shareWithDisplayname: String = ""
 
-    var attributes: String?
+    var isAttributeDownloadEnabled: Bool = true
 
     private init(shareType: Int, metadata: tableMetadata, password: String?) {
         if metadata.e2eEncrypted {