marinofaggiana 4 лет назад
Родитель
Сommit
a7d781d336

+ 4 - 4
File Provider Extension/FileProviderEnumerator.swift

@@ -222,8 +222,8 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
             if errorCode == 0 {
                 DispatchQueue.global().async {
                     NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
-                        let filter = "account == " + account + " AND serverUrl == " + serverUrl
-                        NCManageDatabase.sharedInstance.updateMetadatasWithFilter(filter, metadatas: metadatas)
+                        let predicate = NSPredicate(format: "account == %@ AND serverUrl == %@", account, serverUrl)
+                        NCManageDatabase.sharedInstance.updateMetadatasWithPredicate(predicate, metadatas: metadatas)
                         for metadata in metadatasFolder {
                             let serverUrl = metadata.serverUrl + "/" + metadata.fileNameView
                             NCManageDatabase.sharedInstance.addDirectory(encrypted: metadata.e2eEncrypted, favorite: metadata.favorite, ocId: metadata.ocId, fileId: metadata.fileId, etag: nil, permissions: metadata.permissions, serverUrl: serverUrl, richWorkspace: metadata.richWorkspace, account: metadata.account)
@@ -262,8 +262,8 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
                     if errorCode == 0 {
                         DispatchQueue.global().async {
                             NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: false, account: account) { (metadataFolder, metadatasFolder, metadatas) in
-                                let filter = "account == " + account + " AND serverUrl == " + serverUrl
-                                NCManageDatabase.sharedInstance.updateMetadatasWithFilter(filter, metadatas: metadatas)
+                                let predicate = NSPredicate(format: "account == %@ AND serverUrl == %@", account, serverUrl)
+                                NCManageDatabase.sharedInstance.updateMetadatasWithPredicate(predicate, metadatas: metadatas)
                                 for metadata in metadatasFolder {
                                     let serverUrl = metadata.serverUrl + "/" + metadata.fileNameView
                                     NCManageDatabase.sharedInstance.addDirectory(encrypted: metadata.e2eEncrypted, favorite: metadata.favorite, ocId: metadata.ocId, fileId: metadata.fileId, etag: nil, permissions: metadata.permissions, serverUrl: serverUrl, richWorkspace: nil, account: metadata.account)

+ 2 - 2
iOSClient/Database/NCManageDatabase.swift

@@ -1997,14 +1997,14 @@ class NCManageDatabase: NSObject {
     }
 
     @discardableResult
-    @objc func updateMetadatasWithFilter(_ filter: String, metadatas: [tableMetadata]) -> [tableMetadata] {
+    @objc func updateMetadatasWithPredicate(_ predicate: NSPredicate, metadatas: [tableMetadata]) -> [tableMetadata] {
         
         let realm = try! Realm()
         var metadatasChangeEtag : [tableMetadata] = []
         
         do {
             try realm.write {
-                let results = realm.objects(tableMetadata.self).filter(filter)
+                let results = realm.objects(tableMetadata.self).filter(predicate)
                 // DELETE
                 for result in results {
                     if metadatas.firstIndex(where: { $0.ocId == result.ocId }) == nil {

+ 2 - 2
iOSClient/Networking/NCNetworking.swift

@@ -586,8 +586,8 @@ import Alamofire
                     }
                     
                     DispatchQueue.global().async {
-                        let filter = "account == " + account + " AND serverUrl == " + serverUrl
-                        let metadatasChanged = NCManageDatabase.sharedInstance.updateMetadatasWithFilter(filter, metadatas: metadatas)
+                        let predicate = NSPredicate(format: "account == %@ AND serverUrl == %@", account, serverUrl)
+                        let metadatasChanged = NCManageDatabase.sharedInstance.updateMetadatasWithPredicate(predicate, metadatas: metadatas)
                         DispatchQueue.main.async {
                             let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", account, serverUrl))
                             let metadataFolder = NCManageDatabase.sharedInstance.addMetadata(metadataFolder)

+ 5 - 4
iOSClient/Networking/NCOperationQueue.swift

@@ -176,22 +176,23 @@ class NCOperationSynchronization: ConcurrentOperation {
         } else {
             var depth: String = ""
             var serverUrlFileName: String = ""
-            var filter: String = ""
+            var predicate = NSPredicate()
             if metadata.directory {
                 depth = "infinity"
                 serverUrlFileName = metadata.serverUrl + "/" + metadata.fileName
-                filter = "account == " + metadata.account + " AND serverUrl BEGINSWITH " + metadata.serverUrl
+                predicate = NSPredicate(format: "account == %@ AND serverUrl == %@", metadata.account, metadata.serverUrl)
             } else {
                 depth = "0"
                 serverUrlFileName = metadata.serverUrl + "/" + metadata.fileName
-                filter = "account == " + metadata.account + " AND serverUrl == " + metadata.serverUrl
+                predicate = NSPredicate(format: "account == %@ AND serverUrl == %@", metadata.account, metadata.serverUrl)
             }
             
             NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrlFileName, depth: depth, showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
                 if errorCode == 0 {
                     NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: false, account: account) { (metadataFolder, metadatasFolder, metadatas) in
                         if metadatas.count > 0 {
-                            let updatedMetadata = NCManageDatabase.sharedInstance.updateMetadatasWithFilter(filter, metadatas: metadatas)
+                            let updatedMetadata = NCManageDatabase.sharedInstance.updateMetadatasWithPredicate(predicate, metadatas: metadatas)
+                            print("")
                         }
                     }
                 } else if errorCode == 404 {