marinofaggiana 4 years ago
parent
commit
d4e3646f10

+ 1 - 1
Cartfile.resolved

@@ -8,7 +8,7 @@ github "SwiftyJSON/SwiftyJSON" "5.0.0"
 github "WeTransfer/WeScan" "1.2.0"
 github "WenchaoD/FSCalendar" "2.8.0"
 github "dzenbot/DZNEmptyDataSet" "v1.8.1"
-github "getsentry/sentry-cocoa" "5.1.8"
+github "getsentry/sentry-cocoa" "5.1.9"
 github "huri000/QuickLayout" "3.0.0"
 github "huri000/SwiftEntryKit" "1.2.3"
 github "ivanbruel/MarkdownKit" "1.6"

+ 9 - 1
iOSClient/Database/NCManageDatabase.swift

@@ -1997,7 +1997,7 @@ class NCManageDatabase: NSObject {
     }
 
     @discardableResult
-    @objc func updateMetadatasWithPredicate(_ predicate: NSPredicate, metadatas: [tableMetadata]) -> [tableMetadata] {
+    @objc func updateMetadatasWithPredicate(_ predicate: NSPredicate, metadatas: [tableMetadata], withVerifyLocal local: Bool = false) -> [tableMetadata] {
         
         let realm = try! Realm()
         var metadatasUdate : [tableMetadata] = []
@@ -2013,16 +2013,24 @@ class NCManageDatabase: NSObject {
                 }
                 // UPDATE/NEW
                 for metadata in metadatas {
+                    var updated = false
                     if let result = results.first(where: { $0.ocId == metadata.ocId }) {
                         // update
                         if result.status == k_metadataStatusNormal && result.etag != metadata.etag {
                             metadatasUdate.append(metadata)
                             realm.add(metadata, update: .all)
+                            updated = true
                         }
                     } else {
                         // new
                         metadatasUdate.append(metadata)
                         realm.add(metadata, update: .all)
+                        updated = true
+                    }
+                    if local && !updated {
+                        if NCManageDatabase.sharedInstance.getTableLocalFile(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) == nil {
+                            metadatasUdate.append(metadata)
+                        }
                     }
                 }
             }

+ 6 - 2
iOSClient/Networking/NCOperationQueue.swift

@@ -177,6 +177,7 @@ class NCOperationSynchronization: ConcurrentOperation {
             var depth: String = ""
             var serverUrlFileName: String = ""
             var predicate = NSPredicate()
+            var download = false
             if metadata.directory {
                 depth = "infinity"
                 serverUrlFileName = metadata.serverUrl + "/" + metadata.fileName
@@ -186,14 +187,17 @@ class NCOperationSynchronization: ConcurrentOperation {
                 serverUrlFileName = metadata.serverUrl + "/" + metadata.fileName
                 predicate = NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileName == %@", metadata.account, metadata.serverUrl, metadata.fileName)
             }
+            if selector == selectorReadFolderWithDownload {
+                download = true
+            }
             
             NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrlFileName, depth: depth, showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
                 DispatchQueue.global().async {
                     if errorCode == 0 {
                         NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
                             if metadatas.count > 0 {
-                                let updatedMetadatas = NCManageDatabase.sharedInstance.updateMetadatasWithPredicate(predicate, metadatas: metadatas)
-                                if self.selector == selectorReadFolderWithDownload {
+                                let updatedMetadatas = NCManageDatabase.sharedInstance.updateMetadatasWithPredicate(predicate, metadatas: metadatas, withVerifyLocal: download)
+                                if download {
                                     for metadata in updatedMetadatas {
                                         NCNetworking.shared.download(metadata: metadata, selector: selectorDownloadSynchronize) { (_) in }                                        
                                     }