marinofaggiana 4 år sedan
förälder
incheckning
bb3933cfcd
3 ändrade filer med 36 tillägg och 12 borttagningar
  1. 1 0
      iOSClient/CCGlobal.h
  2. 29 7
      iOSClient/Favorites/CCFavorites.m
  3. 6 5
      iOSClient/Networking/NCNetworking.swift

+ 1 - 0
iOSClient/CCGlobal.h

@@ -169,6 +169,7 @@
 #define selectorDownloadFile                            @"downloadFile"
 #define selectorDownloadAllFile                         @"downloadAllFile"
 #define selectorReadFile                                @"readFile"
+#define selectorListingFavorite                         @"listingFavorite"
 #define selectorLoadFileView                            @"loadFileView"
 #define selectorLoadFileViewFavorite                    @"loadFileViewFavorite"
 #define selectorLoadFileQuickLook                       @"loadFileQuickLook"

+ 29 - 7
iOSClient/Favorites/CCFavorites.m

@@ -112,15 +112,37 @@
     // Active Main
     appDelegate.activeFavorites = self;
 
-    if (self.serverUrl == nil && appDelegate.account.length > 0) {
-        
-        NSString *selector = selectorReadFile;
-        if (CCUtility.getFavoriteOffline){
-            selector = selectorDownloadFile;
-        }
-        [[NCNetworking shared] listingFavoritescompletionWithSelector:(selector) completion:^(NSString *account, NSArray *metadatas, NSInteger errorCode, NSString *errorDescription) {
+    // test
+    if (appDelegate.account.length == 0) {
+        return;
+    }
+    
+    if (self.serverUrl == nil) {
+        [[NCNetworking shared] listingFavoritescompletionWithSelector:(selectorListingFavorite) completion:^(NSString *account, NSArray *metadatas, NSInteger errorCode, NSString *errorDescription) {
+            for (tableMetadata *metadata in metadatas) {
+                if (!metadata.directory && CCUtility.getFavoriteOffline) {
+                    tableLocalFile *localFile = [[NCManageDatabase sharedInstance] getTableLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
+                    if (localFile == nil || ![localFile.etag isEqualToString:metadata.etag]) {
+                        [[NCOperationQueue shared] downloadWithMetadata:metadata selector:selectorDownloadFile setFavorite:false];
+                    }
+                }
+            }
             [self reloadDatasource];
         }];
+    } else {
+        [[NCNetworking shared] readFolderWithServerUrl:self.serverUrl account:appDelegate.account completion:^(NSString *account, tableMetadata *metadataFolder, NSArray *metadatas, NSArray *metadatasUpdate, NSArray *metadatasLocalUpdate, NSInteger errorCode, NSString *errorDescription) {
+            if (errorCode == 0) {
+                for (tableMetadata *metadata in metadatas) {
+                    if (!metadata.directory && CCUtility.getFavoriteOffline) {
+                        tableLocalFile *localFile = [[NCManageDatabase sharedInstance] getTableLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
+                        if (localFile == nil || ![localFile.etag isEqualToString:metadata.etag]) {
+                            [[NCOperationQueue shared] downloadWithMetadata:metadata selector:selectorDownloadFile setFavorite:false];
+                        }
+                    }
+                }
+                [self reloadDatasource];
+            }
+        }];
     }
 }
 

+ 6 - 5
iOSClient/Networking/NCNetworking.swift

@@ -790,14 +790,15 @@ import Queuer
     
     @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 {
-                        NCOperationQueue.shared.synchronizationMetadata(metadata, selector: selector)
+                    if selector != selectorListingFavorite {
+                        #if !EXTENSION
+                        for metadata in metadatas {
+                            NCOperationQueue.shared.synchronizationMetadata(metadata, selector: selector)
+                        }
+                        #endif
                     }
-                    #endif
                     completion(account, metadatas, errorCode, errorDescription)
                 }
             } else {