marinofaggiana 4 жил өмнө
parent
commit
1ba2b07cfc

+ 1 - 0
iOSClient/CCGlobal.h

@@ -167,6 +167,7 @@
 
 // Selector
 #define selectorDownloadFile                            @"downloadFile"
+#define selectorDownloadAllFile                         @"downloadAllFile"
 #define selectorReadFile                                @"readFile"
 #define selectorLoadFileView                            @"loadFileView"
 #define selectorLoadFileViewFavorite                    @"loadFileViewFavorite"

+ 7 - 2
iOSClient/Favorites/CCFavorites.m

@@ -113,8 +113,13 @@
     appDelegate.activeFavorites = self;
 
     if (self.serverUrl == nil && appDelegate.account.length > 0) {
-        [[NCNetworking shared] listingFavoritescompletionWithCompletion:^(NSString *account, NSArray* metadatas, NSInteger errorCode, NSString *errorDescription) {
-             [self reloadDatasource];
+        
+        NSString *selector = selectorReadFile;
+        if (CCUtility.getFavoriteOffline){
+            selector = selectorDownloadFile;
+        }
+        [[NCNetworking shared] listingFavoritescompletionWithSelector:(selector) completion:^(NSString *account, NSArray *metadatas, NSInteger errorCode, NSString *errorDescription) {
+            [self reloadDatasource];
         }];
     }
 }

+ 2 - 6
iOSClient/Networking/NCNetworking.swift

@@ -788,18 +788,14 @@ import Queuer
         }
     }
     
-    @objc func listingFavoritescompletion(completion: @escaping (_ account: String, _ metadatas: [tableMetadata]?, _ errorCode: Int, _ errorDescription: String)->()) {
+    @objc func listingFavoritescompletion(selector: String, completion: @escaping (_ account: String, _ metadatas: [tableMetadata]?, _ errorCode: Int, _ errorDescription: String)->()) {
         NCCommunication.shared.listingFavorites(showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, errorCode, errorDescription) in
             
             if errorCode == 0 {
                 NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: false, account: account) { (_, _, metadatas) in
                     #if !EXTENSION
                     for metadata in metadatas {
-                       if CCUtility.getFavoriteOffline() {
-                           NCOperationQueue.shared.synchronizationMetadata(metadata, selector: selectorDownloadFile)
-                       } else {
-                           NCOperationQueue.shared.synchronizationMetadata(metadata, selector: selectorReadFile)
-                       }
+                        NCOperationQueue.shared.synchronizationMetadata(metadata, selector: selector)
                     }
                     #endif
                     completion(account, metadatas, errorCode, errorDescription)

+ 24 - 14
iOSClient/Networking/NCOperationQueue.swift

@@ -193,24 +193,34 @@ class NCOperationSynchronization: ConcurrentOperation {
                     
                         NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
                             
-                            let metadatasResult = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND status == %d", account, serverUrlFileName, k_metadataStatusNormal))
-                            
-                            let metadatasChanged = NCManageDatabase.sharedInstance.updateMetadatas(metadatas, metadatasResult: metadatasResult, addExistsInLocal: self.download, addCompareEtagLocal: true)
-                            
-                            for metadata in metadatasChanged.metadatasUpdate {
+                            if self.selector == selectorDownloadAllFile {
                                 
-                                if metadata.directory {
-                                    
-                                    NCOperationQueue.shared.synchronizationMetadata(metadata, selector: self.selector)
-                                    
-                                } 
-                            }
+                                for metadata in metadatas {
+                                    if metadata.directory {
+                                        NCOperationQueue.shared.synchronizationMetadata(metadata, selector: self.selector)
+                                    } else {
+                                        let localFile = NCManageDatabase.sharedInstance.getTableLocalFile(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+                                        if localFile == nil || localFile?.etag != metadata.etag {
+                                            NCOperationQueue.shared.download(metadata: metadata, selector: self.selector, setFavorite: false)
+                                        }
+                                    }
+                                }
+                                
+                            } else {
                             
-                            for metadata in metadatasChanged.metadatasLocalUpdate {
+                                let metadatasResult = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND status == %d", account, serverUrlFileName, k_metadataStatusNormal))
+                                let metadatasChanged = NCManageDatabase.sharedInstance.updateMetadatas(metadatas, metadatasResult: metadatasResult, addExistsInLocal: self.download, addCompareEtagLocal: true)
+                                
+                                for metadata in metadatasChanged.metadatasUpdate {
+                                    if metadata.directory {
+                                        NCOperationQueue.shared.synchronizationMetadata(metadata, selector: self.selector)
+                                    }
+                                }
                                 
-                                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
                             NCManageDatabase.sharedInstance.addDirectory(encrypted: metadataFolder.e2eEncrypted, favorite: metadataFolder.favorite, ocId: metadataFolder.ocId, fileId: metadataFolder.fileId, etag: metadataFolder.etag, permissions: metadataFolder.permissions, serverUrl: serverUrlFileName, richWorkspace: metadataFolder.richWorkspace, account: metadataFolder.account)
                         }

+ 5 - 1
iOSClient/Networking/NCService.swift

@@ -70,7 +70,11 @@ class NCService: NSObject {
                 self.appDelegate.settingAccount(tableAccount.account, urlBase: tableAccount.urlBase, user: tableAccount.user, userID: tableAccount.userID, password: CCUtility.getPassword(tableAccount.account))
                        
                 // Synchronize favorite ---
-                NCNetworking.shared.listingFavoritescompletion { (_, _, _, _) in }
+                var selector = selectorReadFile
+                if CCUtility.getFavoriteOffline() {
+                    selector = selectorDownloadFile
+                }
+                NCNetworking.shared.listingFavoritescompletion(selector: selector) { (_, _, _, _) in }
                 
                 // Synchronize Offline Directory ---
                 if let directories = NCManageDatabase.sharedInstance.getTablesDirectory(predicate: NSPredicate(format: "account == %@ AND offline == true", tableAccount.account), sorted: "serverUrl", ascending: true) {

+ 1 - 1
iOSClient/Settings/CCSettings.m

@@ -288,7 +288,7 @@
             
             [alertController addAction: [UIAlertAction actionWithTitle:NSLocalizedString(@"_ok_", nil) style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
                 [CCUtility setFavoriteOffline:true];
-                [[NCNetworking shared] listingFavoritescompletionWithCompletion:^(NSString *account, NSArray *metadatas, NSInteger errorCode, NSString *errorDescription) { }];
+                [[NCNetworking shared] listingFavoritescompletionWithSelector:(selectorDownloadAllFile) completion:^(NSString *account, NSArray *metadatas, NSInteger errorCode, NSString *errorDescription) { }];                    
             }]];
             
             [alertController addAction: [UIAlertAction actionWithTitle:NSLocalizedString(@"_cancel_", nil) style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {