Browse Source

capabilities

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 1 year ago
parent
commit
4c0beb389b

+ 0 - 8
iOSClient/Data/NCElementsJSON.swift

@@ -29,14 +29,6 @@ import UIKit
         return instance
     }()
 
-
-    
-    @objc public let capabilitiesRichdocumentsMimetypes: Array = ["ocs", "data", "capabilities", "richdocuments", "mimetypes"]
-
-    @objc public let capabilitiesActivity: Array = ["ocs", "data", "capabilities", "activity", "apiv2"]
-
-    @objc public let capabilitiesNotification: Array = ["ocs", "data", "capabilities", "notifications", "ocs-endpoints"]
-
     @objc public let capabilitiesFilesUndelete: Array = ["ocs", "data", "capabilities", "files", "undelete"]
     @objc public let capabilitiesFilesLockVersion: Array = ["ocs", "data", "capabilities", "files", "locking"] // NC 24
     @objc public let capabilitiesFilesComments: Array = ["ocs", "data", "capabilities", "files", "comments"] // NC 20

+ 17 - 0
iOSClient/Data/NCManageDatabase+Capabilities.swift

@@ -183,5 +183,22 @@ extension NCManageDatabase {
 
         NCGlobal.shared.capabilityExternalSites = json["ocs", "data", "capabilities", "external"].exists()
 
+        NCGlobal.shared.capabilityRichdocumentsMimetypes.removeAll()
+        let mimetypes = json["ocs", "data", "capabilities", "richdocuments", "mimetypes"].arrayValue
+        for mimetype in mimetypes {
+            NCGlobal.shared.capabilityRichdocumentsMimetypes.append(mimetype.stringValue)
+        }
+
+        NCGlobal.shared.capabilityActivity.removeAll()
+        let activities = json["ocs", "data", "capabilities", "activity", "apiv2"].arrayValue
+        for activity in activities {
+            NCGlobal.shared.capabilityActivity.append(activity.stringValue)
+        }
+
+        NCGlobal.shared.capabilityNotification.removeAll()
+        let notifications = json["ocs", "data", "capabilities", "notifications", "ocs-endpoints"].arrayValue
+        for notify in notifications {
+            NCGlobal.shared.capabilityNotification.append(notify.stringValue)
+        }
     }
 }

+ 1 - 2
iOSClient/Main/NCActionCenter.swift

@@ -204,13 +204,12 @@ class NCActionCenter: NSObject, UIDocumentInteractionControllerDelegate, NCSelec
 
                 let shareNavigationController = UIStoryboard(name: "NCShare", bundle: nil).instantiateInitialViewController() as? UINavigationController
                 let shareViewController = shareNavigationController?.topViewController as? NCSharePaging
-                let activity = NCManageDatabase.shared.getCapabilitiesServerArray(account: metadata.account, elements: NCElementsJSON.shared.capabilitiesActivity)
 
                 for value in NCBrandOptions.NCInfoPagingTab.allCases {
                     pages.append(value)
                 }
 
-                if activity == nil, let idx = pages.firstIndex(of: .activity) {
+                if !NCGlobal.shared.capabilityActivity.isEmpty, let idx = pages.firstIndex(of: .activity) {
                     pages.remove(at: idx)
                 }
                 if !metadata.isSharable(), let idx = pages.firstIndex(of: .sharing) {

+ 2 - 2
iOSClient/Menu/AppDelegate+Menu.swift

@@ -233,8 +233,8 @@ extension AppDelegate {
             )
         }
 
-        if let richdocumentsMimetypes = NCManageDatabase.shared.getCapabilitiesServerArray(account: appDelegate.account, elements: NCElementsJSON.shared.capabilitiesRichdocumentsMimetypes) {
-            if richdocumentsMimetypes.count > 0 &&  NextcloudKit.shared.isNetworkReachable() && !isDirectoryE2EE {
+        if !NCGlobal.shared.capabilityRichdocumentsMimetypes.isEmpty {
+            if NextcloudKit.shared.isNetworkReachable() && !isDirectoryE2EE {
                 actions.append(
                     NCMenuAction(
                         title: NSLocalizedString("_create_new_document_", comment: ""), icon: UIImage(named: "create_file_document")!, action: { _ in

+ 6 - 0
iOSClient/NCGlobal.swift

@@ -22,6 +22,7 @@
 //
 
 import UIKit
+import SwiftyJSON
 
 class NCGlobal: NSObject {
     @objc static let shared: NCGlobal = {
@@ -429,4 +430,9 @@ class NCGlobal: NSObject {
     @objc var capabilityE2EEApiVersion: String = ""
 
     var capabilityExternalSites: Bool = false
+
+    var capabilityRichdocumentsMimetypes: [String] = []
+    var capabilityActivity: [String] = []
+    var capabilityNotification: [String] = []
+
 }

+ 3 - 6
iOSClient/Networking/NCService.swift

@@ -192,8 +192,7 @@ class NCService: NSObject {
 
             // Sharing & Comments
             let comments = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFilesComments, exists: false)
-            let activity = NCManageDatabase.shared.getCapabilitiesServerArray(account: account, elements: NCElementsJSON.shared.capabilitiesActivity)
-            if !NCGlobal.shared.capabilityFileSharingApiEnabled && !comments && activity == nil {
+            if !NCGlobal.shared.capabilityFileSharingApiEnabled && !comments && NCGlobal.shared.capabilityActivity.isEmpty {
                 self.appDelegate.disableSharesView = true
             } else {
                 self.appDelegate.disableSharesView = false
@@ -234,10 +233,8 @@ class NCService: NSObject {
             }
 
             // Added UTI for Collabora
-            if let richdocumentsMimetypes = NCManageDatabase.shared.getCapabilitiesServerArray(account: account, elements: NCElementsJSON.shared.capabilitiesRichdocumentsMimetypes) {
-                for mimeType in richdocumentsMimetypes {
-                    NextcloudKit.shared.nkCommonInstance.addInternalTypeIdentifier(typeIdentifier: mimeType, classFile: NKCommon.TypeClassFile.document.rawValue, editor: NCGlobal.shared.editorCollabora, iconName: NKCommon.TypeIconFile.document.rawValue, name: "document")
-                }
+            for mimeType in NCGlobal.shared.capabilityRichdocumentsMimetypes {
+                NextcloudKit.shared.nkCommonInstance.addInternalTypeIdentifier(typeIdentifier: mimeType, classFile: NKCommon.TypeClassFile.document.rawValue, editor: NCGlobal.shared.editorCollabora, iconName: NKCommon.TypeIconFile.document.rawValue, name: "document")
             }
 
             // Added UTI for ONLYOFFICE & Text

+ 3 - 7
iOSClient/Utility/NCUtility.swift

@@ -141,24 +141,20 @@ class NCUtility: NSObject {
             return false
         }
 
-        guard let richdocumentsMimetypes = NCManageDatabase.shared.getCapabilitiesServerArray(account: metadata.account, elements: NCElementsJSON.shared.capabilitiesRichdocumentsMimetypes) else {
-            return false
-        }
-
         // contentype
-        for richdocumentMimetype: String in richdocumentsMimetypes {
+        for richdocumentMimetype: String in NCGlobal.shared.capabilityRichdocumentsMimetypes {
             if richdocumentMimetype.contains(metadata.contentType) || metadata.contentType == "text/plain" {
                 return true
             }
         }
 
         // mimetype
-        if richdocumentsMimetypes.count > 0 && mimeType.components(separatedBy: ".").count > 2 {
+        if NCGlobal.shared.capabilityRichdocumentsMimetypes.count > 0 && mimeType.components(separatedBy: ".").count > 2 {
 
             let mimeTypeArray = mimeType.components(separatedBy: ".")
             let mimeType = mimeTypeArray[mimeTypeArray.count - 2] + "." + mimeTypeArray[mimeTypeArray.count - 1]
 
-            for richdocumentMimetype: String in richdocumentsMimetypes {
+            for richdocumentMimetype: String in NCGlobal.shared.capabilityRichdocumentsMimetypes {
                 if richdocumentMimetype.contains(mimeType) {
                     return true
                 }