marinofaggiana 4 vuotta sitten
vanhempi
commit
3e35e03470

+ 1 - 1
Share/NCSelectDestination.m

@@ -165,7 +165,7 @@
 
 - (void)readFolder
 {
-    [[NCNetworking shared] readFolderWithServerUrl:_serverUrl account:account completion:^(NSString *account, tableMetadata *metadataFolder, NSArray *metadatas, NSArray *metadatasChanged, NSInteger errorCode, NSString *errorDescription) {
+    [[NCNetworking shared] readFolderWithServerUrl:_serverUrl account:account completion:^(NSString *account, tableMetadata *metadataFolder, NSArray *metadatas, NSArray *metadatasUpdate, NSArray *metadatasLocalUpdate, NSInteger errorCode, NSString *errorDescription) {
         
         if (errorCode == 0) {
             self.move.enabled = true;

+ 28 - 18
iOSClient/Database/NCManageDatabase.swift

@@ -1953,11 +1953,13 @@ class NCManageDatabase: NSObject {
     }
 
     @discardableResult
-    @objc func updateMetadatas(_ metadatas: [tableMetadata], metadatasResult: [tableMetadata], addExistsInLocal: Bool, addCompareEtagLocal: Bool) -> [tableMetadata] {
+    func updateMetadatas(_ metadatas: [tableMetadata], metadatasResult: [tableMetadata], addExistsInLocal: Bool, addCompareEtagLocal: Bool) -> (metadatasUpdate: [tableMetadata], metadatasLocalUpdate: [tableMetadata]) {
         
         let realm = try! Realm()
-        var ocIdsUdated : [String] = []
-        var metadatasUdated : [tableMetadata] = []
+        var ocIdsUdate : [String] = []
+        var ocIdsLocalUdate : [String] = []
+        var metadatasUpdate : [tableMetadata] = []
+        var metadatasLocalUpdate : [tableMetadata] = []
         
         do {
             try realm.write {
@@ -1977,44 +1979,52 @@ class NCManageDatabase: NSObject {
                     if let result = metadatasResult.first(where: { $0.ocId == metadata.ocId }) {
                         // update
                         if result.status == k_metadataStatusNormal && result.etag != metadata.etag {
-                            ocIdsUdated.append(metadata.ocId)
+                            ocIdsUdate.append(metadata.ocId)
                             realm.add(metadata, update: .all)
                         }
                     } else {
                         // new
-                        ocIdsUdated.append(metadata.ocId)
+                        ocIdsUdate.append(metadata.ocId)
                         realm.add(metadata, update: .all)
                     }
                     
-                    if !metadata.directory && (addExistsInLocal || addCompareEtagLocal) && !ocIdsUdated.contains(metadata.ocId) {
+                    if metadata.directory && !ocIdsUdate.contains(metadata.ocId) {
+                        let table = realm.objects(tableDirectory.self).filter(NSPredicate(format: "ocId == %@", metadata.ocId)).first
+                        if table?.etag != metadata.etag {
+                            ocIdsUdate.append(metadata.ocId)
+                        }
+                    }
+                    
+                    if !metadata.directory && (addExistsInLocal || addCompareEtagLocal) {
                         let localFile = realm.objects(tableLocalFile.self).filter(NSPredicate(format: "ocId == %@", metadata.ocId)).first
                         if addCompareEtagLocal && localFile != nil && localFile?.etag != metadata.etag {
-                            ocIdsUdated.append(metadata.ocId)
+                            ocIdsLocalUdate.append(metadata.ocId)
                         }
-                        if addExistsInLocal && (localFile == nil || localFile?.etag != metadata.etag) && !ocIdsUdated.contains(metadata.ocId) {
-                            ocIdsUdated.append(metadata.ocId)
+                        if addExistsInLocal && (localFile == nil || localFile?.etag != metadata.etag) && !ocIdsLocalUdate.contains(metadata.ocId) {
+                            ocIdsLocalUdate.append(metadata.ocId)
                         }
                     }
                     
-                    if metadata.directory && !ocIdsUdated.contains(metadata.ocId) {
-                        let table = realm.objects(tableDirectory.self).filter(NSPredicate(format: "ocId == %@", metadata.ocId)).first
-                        if table?.etag != metadata.etag {
-                            ocIdsUdated.append(metadata.ocId)
-                        }
-                    }
+                    
                 }
             }
         } catch let error {
             print("[LOG] Could not write to database: ", error)
         }
         
-        for ocId in ocIdsUdated {
+        for ocId in ocIdsUdate {
+            if let result = realm.objects(tableMetadata.self).filter(NSPredicate(format: "ocId == %@", ocId)).first {
+                metadatasUpdate.append(result.freeze())
+            }
+        }
+        
+        for ocId in ocIdsLocalUdate {
             if let result = realm.objects(tableMetadata.self).filter(NSPredicate(format: "ocId == %@", ocId)).first {
-                metadatasUdated.append(result.freeze())
+                metadatasLocalUpdate.append(result.freeze())
             }
         }
         
-        return metadatasUdated
+        return (metadatasUpdate, metadatasLocalUpdate)
     }
     
     func setMetadataSession(ocId: String, session: String? = nil, sessionError: String? = nil, sessionSelector: String? = nil, sessionTaskIdentifier: Int? = nil, status: Int? = nil, etag: String? = nil, setFavorite: Bool = false) {

+ 2 - 2
iOSClient/Main/CCMain.m

@@ -1123,7 +1123,7 @@
     [refreshControl endRefreshing];
     [self tableViewReloadData];
     
-    [[NCNetworking shared] readFolderWithServerUrl:serverUrl account:appDelegate.account completion:^(NSString *account, tableMetadata *metadataFolder, NSArray *metadatas, NSArray *metadatasChanged, NSInteger errorCode, NSString *errorDescription) {
+    [[NCNetworking shared] readFolderWithServerUrl:serverUrl account:appDelegate.account completion:^(NSString *account, tableMetadata *metadataFolder, NSArray *metadatas, NSArray *metadatasUpdate, NSArray *metadatasLocalUpdate, NSInteger errorCode, NSString *errorDescription) {
         
         if (errorCode == 0 ) {
             
@@ -1131,7 +1131,7 @@
             BOOL isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl e2eEncrypted:_metadataFolder.e2eEncrypted account:appDelegate.account urlBase:_metadataFolder.urlBase];
             [self setTitle];
             
-            for (tableMetadata *metadata in metadatasChanged) {
+            for (tableMetadata *metadata in metadatasLocalUpdate) {
                 if (!metadata.directory) {
                     [[NCNetworking shared] downloadWithMetadata:metadata selector:selectorDownloadFile setFavorite:false completion:^(NSInteger errorCode) { }];
                 }

+ 2 - 2
iOSClient/Media/NCMedia.swift

@@ -731,7 +731,7 @@ extension NCMedia {
                         let metadatasResult = NCManageDatabase.sharedInstance.getMetadatas(predicate: predicateResult)
                         let metadatasChanged = NCManageDatabase.sharedInstance.updateMetadatas(metadatas, metadatasResult: metadatasResult, addExistsInLocal: false, addCompareEtagLocal: false)
                         
-                        if metadatasChanged.count < self.limit {
+                        if metadatasChanged.metadatasUpdate.count < self.limit {
                             
                             if value == -30 {
                                 self.searchOldPhotoVideo(value: -90)
@@ -795,7 +795,7 @@ extension NCMedia {
                         let predicateResult = NSCompoundPredicate.init(andPredicateWithSubpredicates:[predicate, self.predicate!])
                         let metadatasResult = NCManageDatabase.sharedInstance.getMetadatas(predicate: predicateResult)
                         let updateMetadatas = NCManageDatabase.sharedInstance.updateMetadatas(metadatas, metadatasResult: metadatasResult, addExistsInLocal: false, addCompareEtagLocal: false)
-                        if updateMetadatas.count > 0 {
+                        if updateMetadatas.metadatasUpdate.count > 0 {
                             self.reloadDataSource()
                         }
                     }

+ 4 - 4
iOSClient/Networking/NCNetworking.swift

@@ -545,7 +545,7 @@ import Queuer
         
     //MARK: - WebDav Read file, folder
     
-    @objc func readFolder(serverUrl: String, account: String, completion: @escaping (_ account: String, _ metadataFolder: tableMetadata?, _ metadatas: [tableMetadata]?, _ metadatasChanged: [tableMetadata]?, _ errorCode: Int, _ errorDescription: String)->()) {
+    @objc func readFolder(serverUrl: String, account: String, completion: @escaping (_ account: String, _ metadataFolder: tableMetadata?, _ metadatas: [tableMetadata]?, _ metadatasUpdate: [tableMetadata]?, _ metadatasLocalUpdate: [tableMetadata]?, _ errorCode: Int, _ errorDescription: String)->()) {
         
         NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "1", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
             
@@ -568,11 +568,11 @@ import Queuer
                         
                         let metadatasChanged = NCManageDatabase.sharedInstance.updateMetadatas(metadatas, metadatasResult: metadatasResult, addExistsInLocal: false, addCompareEtagLocal: true)
                         
-                        if metadatasChanged.count > 0 {
+                        if metadatasChanged.metadatasUpdate.count > 0 {
                             NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["serverUrl":serverUrl])
                         }
                         DispatchQueue.main.async {
-                            completion(account, metadataFolder, metadatas, metadatasChanged, errorCode, "")
+                            completion(account, metadataFolder, metadatas, metadatasChanged.metadatasUpdate, metadatasChanged.metadatasLocalUpdate, errorCode, "")
                         }
                     }
                 }
@@ -583,7 +583,7 @@ import Queuer
                 NCContentPresenter.shared.messageNotification("_error_", description: errorDescription, delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: errorCode)
                 #endif
                 
-                completion(account, nil, nil, nil, errorCode, errorDescription)
+                completion(account, nil, nil, nil, nil, errorCode, errorDescription)
             }
         }
     }

+ 7 - 5
iOSClient/Networking/NCOperationQueue.swift

@@ -197,16 +197,18 @@ class NCOperationSynchronization: ConcurrentOperation {
                             
                             let metadatasChanged = NCManageDatabase.sharedInstance.updateMetadatas(metadatas, metadatasResult: metadatasResult, addExistsInLocal: self.download, addCompareEtagLocal: true)
                             
-                            for metadata in metadatasChanged {
+                            for metadata in metadatasChanged.metadatasUpdate {
                                 
                                 if metadata.directory {
                                     
                                     NCOperationQueue.shared.synchronizationMetadata(metadata, selector: self.selector)
                                     
-                                } else {
-                                    
-                                    NCOperationQueue.shared.download(metadata: metadata, selector: self.selector, setFavorite: false)
-                                }
+                                } 
+                            }
+                            
+                            for metadata in metadatasChanged.metadatasLocalUpdate {
+                                
+                                NCOperationQueue.shared.download(metadata: metadata, selector: self.selector, setFavorite: false)
                             }
                             
                             // Update etag directory

+ 1 - 1
iOSClient/Select/NCSelect.swift

@@ -709,7 +709,7 @@ extension NCSelect {
         networkInProgress = true
         collectionView.reloadData()
         
-        NCNetworking.shared.readFolder(serverUrl: serverUrl, account: appDelegate.account) { (account, metadataFolder, metadatas, metadatasChanged, errorCode, errorDescription) in
+        NCNetworking.shared.readFolder(serverUrl: serverUrl, account: appDelegate.account) { (_, _, _, _, _, _, _) in
             
             self.networkInProgress = false
             self.loadDatasource(withLoadFolder: false)