Marino Faggiana 8 роки тому
батько
коміт
2b0ab560a0

+ 1 - 1
iOSClient/FileSystem/CCCoreData.h

@@ -146,7 +146,7 @@
 + (NSString *)getDirectoryIDFromServerUrl:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
 + (NSString *)getServerUrlFromDirectoryID:(NSString *)directoryID activeAccount:(NSString *)activeAccount;
 
-+ (void)clearDateReadDirectory:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
++ (void)clearDateReadAccount:(NSString *)activeAccount serverUrl:(NSString *)serverUrl directoryID:(NSString *)directoryID;
 + (void)clearAllDateReadDirectory;
 
 + (BOOL)isDirectoryOutOfDate:(int)numAddDay directoryID:(NSString *)directoryID activeAccount:(NSString *)activeAccount;

+ 9 - 2
iOSClient/FileSystem/CCCoreData.m

@@ -1065,11 +1065,18 @@
     else return nil;
 }
 
-+ (void)clearDateReadDirectory:(NSString *)serverUrl activeAccount:(NSString *)activeAccount
++ (void)clearDateReadAccount:(NSString *)activeAccount serverUrl:(NSString *)serverUrl directoryID:(NSString *)directoryID
 {
     [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {
         
-        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(serverUrl == %@) AND (account == %@)", serverUrl, activeAccount];
+        NSPredicate *predicate;
+        
+        if ([serverUrl length] > 0)
+             predicate = [NSPredicate predicateWithFormat:@"(serverUrl == %@) AND (account == %@)", serverUrl, activeAccount];
+        
+        if ([directoryID length] > 0)
+            predicate = [NSPredicate predicateWithFormat:@"(directoryID == %@) AND (account == %@)", directoryID, activeAccount];
+        
         TableDirectory *record = [TableDirectory MR_findFirstWithPredicate:predicate inContext:localContext];
         
         if (record) {

+ 2 - 2
iOSClient/Main/CCMain.m

@@ -1882,7 +1882,7 @@
         
         if (forced) {
             
-            [CCCoreData clearDateReadDirectory:serverUrl activeAccount:app.activeAccount];
+            [CCCoreData clearDateReadAccount:app.activeAccount serverUrl:serverUrl directoryID:nil];
             
             _searchFileName = @"";                          // forced reload searchg
         }
@@ -4470,7 +4470,7 @@
                                         [CCCoreData setCameraUploadFolderName:_metadata.fileName activeAccount:app.activeAccount];
                                         [CCCoreData setCameraUploadFolderPath:serverUrl activeUrl:app.activeUrl activeAccount:app.activeAccount];
                                         
-                                        [CCCoreData clearDateReadDirectory:oldPath activeAccount:app.activeAccount];
+                                        [CCCoreData clearDateReadAccount:app.activeAccount serverUrl:oldPath directoryID:nil];
                                         
                                         if (app.activeAccount.length > 0 && app.activePhotosCameraUpload)
                                             [app.activePhotosCameraUpload reloadDatasourceForced];

+ 1 - 1
iOSClient/Offline/CCSynchronize.m

@@ -518,7 +518,7 @@
             if (![oldDirectoryID isEqualToString:metadata.directoryID]) {
                 serverUrl = [CCCoreData getServerUrlFromDirectoryID:metadata.directoryID activeAccount:app.activeAccount];
                 oldDirectoryID = metadata.directoryID;
-                [CCCoreData clearDateReadDirectory:serverUrl activeAccount:app.activeAccount];
+                [CCCoreData clearDateReadAccount:app.activeAccount serverUrl:serverUrl directoryID:nil];
             }
             
             [CCCoreData addMetadata:metadata activeAccount:app.activeAccount activeUrl:serverUrl context:nil];

+ 2 - 2
iOSClient/PhotosCameraUpload/CCPhotosCameraUpload.m

@@ -1255,8 +1255,8 @@
         
         [communication createFolder:folderPathName onCommunication:communication withForbiddenCharactersSupported:app.hasServerForbiddenCharactersSupport successRequest:^(NSHTTPURLResponse *response, NSString *redirectedServer) {
             
-            [CCCoreData clearDateReadDirectory:[CCUtility deletingLastPathComponentFromServerUrl:folderPathName] activeAccount:app.activeAccount];
-            
+            [CCCoreData clearDateReadAccount:app.activeAccount serverUrl:[CCUtility deletingLastPathComponentFromServerUrl:folderPathName] directoryID:nil];
+                        
             dispatch_semaphore_signal(semaphore);
             
         } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *redirectedServer) {

+ 14 - 0
iOSClient/Settings/CCSettings.m

@@ -25,6 +25,7 @@
 #import "AppDelegate.h"
 #import "CCMain.h"
 #import "OCCapabilities.h"
+#import "CCSynchronize.h"
 
 #define alertViewEsci 1
 #define alertViewAzzeraCache 2
@@ -520,7 +521,20 @@
     if ([rowDescriptor.tag isEqualToString:@"favoritefoldersoffline"]) {
         
         if ([[rowDescriptor.value valueData] boolValue] == YES) {
+            
             [CCUtility setFavoriteFoldersOffline:true];
+            
+            NSArray *recordsTableMetadata = [CCCoreData  getTableMetadataWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (favorite == 1)", app.activeAccount] context:nil];
+            NSMutableSet *directoriesID = [NSMutableSet new];
+            
+            for (TableMetadata *record in recordsTableMetadata)
+                [directoriesID addObject:record.directoryID];
+            
+            for (NSString *directoryID in directoriesID)
+                [CCCoreData clearDateReadAccount:app.activeAccount serverUrl:nil directoryID:directoryID];
+            
+            [[CCSynchronize sharedSynchronize] readListingFavorites];
+            
         } else {
             [CCUtility setFavoriteFoldersOffline:false];
         }