marinofaggiana há 4 anos atrás
pai
commit
24293eb363

+ 44 - 0
iOSClient/Database/NCManageDatabase.swift

@@ -1051,6 +1051,28 @@ class NCManageDatabase: NSObject {
         }
     }
     
+    @objc func getCapabilitiesFilesSharingEnabled(account: String) -> Bool {
+
+        let realm = try! Realm()
+        realm.refresh()
+        
+        guard let result = realm.objects(tableCapabilities.self).filter("account == %@", account).first else {
+            return false
+        }
+        guard let jsondata = result.jsondata else {
+            return false
+        }
+        
+        let json = JSON(jsondata)
+        let dataCapabilities = json["ocs"]["data"]["capabilities"]
+
+        if let result = dataCapabilities["files_sharing"]["api_enabled"].bool {
+            return result
+        } else {
+            return false
+        }
+    }
+    
     @objc func getCapabilitiesFilesSharingPublicPasswordEnforced(account: String) -> Bool {
 
         let realm = try! Realm()
@@ -1099,6 +1121,28 @@ class NCManageDatabase: NSObject {
         return nil
     }
     
+    @objc func getCapabilitiesExternalSitesServerEnabled(account: String) -> Bool {
+
+        let realm = try! Realm()
+        realm.refresh()
+        
+        guard let result = realm.objects(tableCapabilities.self).filter("account == %@", account).first else {
+            return false
+        }
+        guard let jsondata = result.jsondata else {
+            return false
+        }
+        
+        let json = JSON(jsondata)
+        let dataCapabilities = json["ocs"]["data"]["capabilities"]
+
+        if dataCapabilities["external"].error == nil {
+            return true
+        } else {
+            return false
+        }
+    }
+        
     #if !EXTENSION
     @objc func addCapabilities(_ capabilities: OCCapabilities, account: String) {
         

+ 28 - 39
iOSClient/Networking/NCService.swift

@@ -150,40 +150,13 @@ class NCService: NSObject {
                 
                 // Setup communication
                 self.appDelegate.settingSetupCommunicationCapabilities(account)
-            }
-        }
-        
-        OCNetworking.sharedManager().getCapabilitiesWithAccount(appDelegate.activeAccount, completion: { (account, capabilities, message, errorCode) in
-            
-            if errorCode == 0 && account == self.appDelegate.activeAccount {
                 
-                // Update capabilities db
-                NCManageDatabase.sharedInstance.addCapabilities(capabilities!, account: account!)
-                                
-                // ------ THEMING -----------------------------------------------------------------------
+                // Theming
                 self.appDelegate.settingThemingColorBrand()
                 
-                // ------ GET OTHER SERVICE -------------------------------------------------------------
-                                
-                // Get External Sites
-                if (capabilities!.isExternalSitesServerEnabled) {
-                    
-                    OCNetworking.sharedManager().getExternalSites(withAccount: account!, completion: { (account, listOfExternalSites, message, errorCode) in
-                        if errorCode == 0 && account == self.appDelegate.activeAccount {
-                            NCManageDatabase.sharedInstance.deleteExternalSites(account: account!)
-                            for externalSites in listOfExternalSites! {
-                                NCManageDatabase.sharedInstance.addExternalSites(externalSites as! OCExternalSites, account: account!)
-                            }
-                        } 
-                    })
-                   
-                } else {
-                    
-                    NCManageDatabase.sharedInstance.deleteExternalSites(account: account!)
-                }
-                
-                // Get Share Server
-                if (capabilities!.isFilesSharingAPIEnabled && self.appDelegate.activeMain != nil) {
+                // File Sharing
+                let isFilesSharingEnabled = NCManageDatabase.sharedInstance.getCapabilitiesFilesSharingEnabled(account: account)
+                if (isFilesSharingEnabled && self.appDelegate.activeMain != nil) {
                     
                     OCNetworking.sharedManager()?.readShare(withAccount: account, completion: { (account, items, message, errorCode) in
                         if errorCode == 0 && account == self.appDelegate.activeAccount {
@@ -198,20 +171,36 @@ class NCService: NSObject {
                     })
                 }
                 
-                // Get Handwerkcloud
-                if (capabilities!.isHandwerkcloudEnabled) {
-                    self.requestHC()
-                }
-                
                 // NCTextObtainEditorDetails
-                if capabilities!.versionMajor >= k_nextcloud_version_18_0 {
+                let serverVersionMajor = NCManageDatabase.sharedInstance.getCapabilitiesServerVersion(account: account, element: "major")
+                if serverVersionMajor >= k_nextcloud_version_18_0 {
                     NCCommunication.sharedInstance.NCTextObtainEditorDetails(serverUrl: self.appDelegate.activeUrl, customUserAgent: nil, addCustomHeaders: nil, account: self.appDelegate.activeAccount) { (account, editors, creators, errorCode, errorMessage) in
                         if errorCode == 0 && account == self.appDelegate.activeAccount {
                             NCManageDatabase.sharedInstance.addDirectEditing(account: account, editors: editors, creators: creators)
                         }
                     }
                 }
-              
+                
+                let isExternalSitesServerEnabled = NCManageDatabase.sharedInstance.getCapabilitiesExternalSitesServerEnabled(account: account)
+                if (isExternalSitesServerEnabled) {
+                    OCNetworking.sharedManager().getExternalSites(withAccount: account, completion: { (account, listOfExternalSites, message, errorCode) in
+                        if errorCode == 0 && account == self.appDelegate.activeAccount {
+                            NCManageDatabase.sharedInstance.deleteExternalSites(account: account!)
+                            for externalSites in listOfExternalSites! {
+                                NCManageDatabase.sharedInstance.addExternalSites(externalSites as! OCExternalSites, account: account!)
+                            }
+                        }
+                    })
+                } else {
+                    NCManageDatabase.sharedInstance.deleteExternalSites(account: account)
+                }
+                
+                // Handwerkcloud
+                let isHandwerkcloudEnabled = NCManageDatabase.sharedInstance.getCapabilitiesHandwerkcloudEnabled(account: account)
+                if (isHandwerkcloudEnabled) {
+                    self.requestHC()
+                }
+                            
             } else if errorCode != 0 {
                 
                 self.appDelegate.settingThemingColorBrand()
@@ -225,7 +214,7 @@ class NCService: NSObject {
                 // Change Theming color
                 self.appDelegate.settingThemingColorBrand()
             }
-        })
+        }
     }
     
     @objc public func middlewarePing() {