Răsfoiți Sursa

table directory

Marino Faggiana 8 ani în urmă
părinte
comite
008b0e3dfa

+ 2 - 2
Picker/DocumentPickerViewController.swift

@@ -771,7 +771,7 @@ extension DocumentPickerViewController: UITableViewDataSource {
             passcode = ""
         }
         
-        let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectoryWithPreficate(NSPredicate(format: "serverUrl = %@", lockServerUrl!))
+        let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate:NSPredicate(format: "serverUrl = %@", lockServerUrl!))
         if tableDirectory != nil {
             if metadata!.directory &&  (tableDirectory?.lock)! && (passcode?.characters.count)! > 0 {
                 cell.StatusImageView.image = UIImage(named: "passcode")
@@ -839,7 +839,7 @@ extension DocumentPickerViewController: UITableViewDataSource {
                 passcode = ""
             }
             
-            let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectoryWithPreficate(NSPredicate(format: "serverUrl = %@", serverUrlPush!))
+            let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate:NSPredicate(format: "serverUrl = %@", serverUrlPush!))
 
             if tableDirectory != nil {
                 

+ 32 - 5
iOSClient/AppDelegate.m

@@ -1062,6 +1062,7 @@
 {
     // ServerUrl active
     NSString *serverUrl = self.activeMain.serverUrl;
+    BOOL isBlockZone = false;
     
     // fermiamo la data della sessione
     self.sessionePasscodeLock = nil;
@@ -1071,8 +1072,20 @@
     // se non c'è attivo un account esci con NON attivare la richiesta password
     if ([self.activeAccount length] == 0) return NO;
     // se non è attivo il OnlyLockDir esci con NON attivare la richiesta password
-    if ([CCUtility getOnlyLockDir] && ![CCCoreData isBlockZone:serverUrl activeAccount:self.activeAccount]) return NO;
-        
+    for (;;) {
+    
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl == %@", serverUrl]];
+        if (directory.lock) {
+            isBlockZone = true;
+            break;
+        } else {
+            serverUrl = [CCUtility deletingLastPathComponentFromServerUrl:serverUrl];
+            if (serverUrl == self.activeUrl)
+                break;
+        }
+    }
+    if ([CCUtility getOnlyLockDir] && !isBlockZone) return NO;
+    
     return YES;
 }
 
@@ -1113,10 +1126,24 @@
         [aViewController dismissViewControllerAnimated:YES completion:nil];
         
         // start session Passcode Lock
+        BOOL isBlockZone = false;
         NSString *serverUrl = self.activeMain.serverUrl;
-        if ([CCCoreData isBlockZone:serverUrl activeAccount:self.activeAccount])
+        
+        for (;;) {
+            
+            tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl == %@", serverUrl]];
+            if (directory.lock) {
+                isBlockZone = true;
+                break;
+            } else {
+                serverUrl = [CCUtility deletingLastPathComponentFromServerUrl:serverUrl];
+                if (serverUrl == self.activeUrl)
+                    break;
+            }
+        }
+        if (isBlockZone)
             self.sessionePasscodeLock = [NSDate date];
-    }
+     }
 }
 
 - (void)passcodeViewController:(CCBKPasscode *)aViewController authenticatePasscode:(NSString *)aPasscode resultHandler:(void (^)(BOOL))aResultHandler
@@ -1614,7 +1641,7 @@
         [CCCoreData setGeoInformationLocalNull];
     }
     
-    if (([actualVersion compare:@"2.17" options:NSNumericSearch] == NSOrderedAscending)) {        
+    if (([actualVersion compare:@"2.17" options:NSNumericSearch] == NSOrderedAscending)) {
     }
     
     if (([actualVersion compare:@"2.17.3" options:NSNumericSearch] == NSOrderedAscending)) {

+ 0 - 4
iOSClient/Favorites/CCSynchronize.h

@@ -35,13 +35,9 @@
 @property (nonatomic, strong) NSMutableOrderedSet *foldersInSynchronized;
 
 - (void)readListingFavorites;
-- (void)readOffline;
-
 - (void)addFavoriteFolder:(NSString *)serverUrl;
-- (void)addOfflineFolder:(NSString *)serverUrl;
 
 - (void)verifyChangeMedatas:(NSArray *)allRecordMetadatas serverUrl:(NSString *)serverUrl account:(NSString *)account withDownload:(BOOL)withDownload;
-
 - (void)readFolderServerUrl:(NSString *)serverUrl directoryID:(NSString *)directoryID selector:(NSString *)selector;
 
 @end

+ 4 - 62
iOSClient/Favorites/CCSynchronize.m

@@ -162,64 +162,6 @@
 {
 }
 
-#pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Read Offline =====
-#pragma --------------------------------------------------------------------------------------------
-
-- (void)readOffline
-{
-    // test
-    if (app.activeAccount.length == 0)
-        return;
-    
-    // verify is offline procedure is in progress selectorDownloadSynchronize
-    if ([[app verifyExistsInQueuesDownloadSelector:selectorDownloadSynchronize] count] > 0)
-        return;
-    
-    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
-        
-        NSString *father = @"";
-        NSArray *directories = [CCCoreData getOfflineDirectoryActiveAccount:app.activeAccount];
-
-        for (TableDirectory *directory in directories) {
-        
-            if (![directory.serverUrl containsString:father]) {
-             
-                father = directory.serverUrl;
-                [self readFolderServerUrl:directory.serverUrl directoryID:directory.directoryID selector:selectorReadFolder];
-            }
-        }
-        
-        NSArray *metadatas = [CCCoreData getOfflineLocalFileActiveAccount:app.activeAccount directoryUser:app.directoryUser];
-        
-        for (tableMetadata *metadata in metadatas) {
-            
-            [self readFile:metadata withDownload:YES];
-        }
-    });
-}
-
-//
-// Add Folder offline
-//
-- (void)addOfflineFolder:(NSString *)serverUrl
-{
-    NSString *directoryID = [[NCManageDatabase sharedInstance] getDirectoryID:serverUrl];
-    
-    // Set offline directory
-    [CCCoreData setOfflineDirectoryServerUrl:serverUrl offline:YES activeAccount:app.activeAccount];
-    
-    CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
-    
-    metadataNet.action = actionReadFolder;
-    metadataNet.directoryID = directoryID;
-    metadataNet.priority = NSOperationQueuePriorityNormal;
-    metadataNet.selector = selectorReadFolder;
-    metadataNet.serverUrl = serverUrl;
-    
-    [app addNetworkingOperationQueue:app.netQueue delegate:self metadataNet:metadataNet];    
-}
-
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== Read Folder =====
 #pragma --------------------------------------------------------------------------------------------
@@ -247,7 +189,7 @@
     // Folder not present, remove it
     if (errorCode == 404 && [recordAccount.account isEqualToString:metadataNet.account]) {
         
-        [CCCoreData deleteDirectoryAndSubDirectory:metadataNet.serverUrl activeAccount:app.activeAccount];
+        [[NCManageDatabase sharedInstance] deleteDirectoryAndSubDirectory:metadataNet.serverUrl];
         [app.activeMain reloadDatasource:metadataNet.serverUrl fileID:nil selector:nil];
     }
 }
@@ -325,7 +267,7 @@
               
                 // Load if different fileID
                 
-                TableDirectory *tableDirectory = [CCCoreData getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"(account == %@) AND (serverUrl == %@)", metadataNet.account, serverUrl]];
+                tableDirectory *tableDirectory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", metadataNet.account, serverUrl]];
                 
                 if (![tableDirectory.rev isEqualToString:metadata.rev]) {
                     
@@ -403,7 +345,7 @@
         [CCCoreData deleteLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (fileID == %@)", metadataNet.account, metadataNet.fileID]];
         [[NCManageDatabase sharedInstance] deleteMetadata:[NSPredicate predicateWithFormat:@"fileID == %@", metadataNet.account, metadataNet.fileID]];
         
-        NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
+        NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadataNet.directoryID];
         [app.activeMain reloadDatasource:serverUrl fileID:nil selector:nil];
     }
 }
@@ -505,7 +447,7 @@
         if (![oldDirectoryID isEqualToString:metadata.directoryID]) {
             serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
             oldDirectoryID = metadata.directoryID;
-            [CCCoreData clearDateReadAccount:app.activeAccount serverUrl:serverUrl directoryID:nil];
+            [[NCManageDatabase sharedInstance] clearDateRead:serverUrl directoryID:nil];
         }
             
         [[NCManageDatabase sharedInstance] addMetadata:metadata activeUrl:serverUrl];

+ 0 - 3
iOSClient/FileSystem/CCCoreData.h

@@ -137,9 +137,6 @@
 
 + (NSMutableArray *)getAllCertificatesLocationOldDB;
 
-// ===== Offline =====
-
-+ (NSArray *)getHomeOfflineActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser fieldOrder:(NSString *)fieldOrder ascending:(BOOL)ascending;
 
 // ===== File System =====
 

+ 68 - 1
iOSClient/FileSystem/NCManageDatabase.swift

@@ -1673,7 +1673,7 @@ class NCManageDatabase: NSObject {
         }
     }
 
-    func getTableDirectoryWithPreficate(_ predicate: NSPredicate) -> tableDirectory? {
+    func getTableDirectory(predicate: NSPredicate) -> tableDirectory? {
         
         let tableAccount = self.getAccountActive()
         if tableAccount == nil {
@@ -1693,6 +1693,36 @@ class NCManageDatabase: NSObject {
             return nil
         }
     }
+    
+    func getTablesDirectory(predicate: NSPredicate, sorted: String?, ascending: Bool) -> [tableDirectory]? {
+        
+        let tableAccount = self.getAccountActive()
+        if tableAccount == nil {
+            return nil
+        }
+        
+        let realm = try! Realm()
+        let results : Results<tableDirectory>
+        
+        if sorted == nil {
+            
+            results = realm.objects(tableDirectory.self).filter(predicate)
+            
+        } else {
+            
+            results = realm.objects(tableDirectory.self).filter(predicate).sorted(byKeyPath: sorted!, ascending: ascending)
+        }
+        
+        if (results.count > 0) {
+            
+            return Array(results)
+            
+        } else {
+            
+            return nil
+        }
+    }
+
 
     func getDirectoryID(_ serverUrl: String) -> String {
         
@@ -1746,6 +1776,25 @@ class NCManageDatabase: NSObject {
         }
     }
     
+    func setClearAllDateReadDirectory() {
+        
+        let tableAccount = self.getAccountActive()
+        if tableAccount == nil {
+            return
+        }
+        
+        let realm = try! Realm()
+        let results = realm.objects(tableDirectory.self)//.filter("account = %@", tableAccount!.account)
+        
+        try! realm.write {
+            
+            for result in results {
+                result.dateReadDirectory = nil;
+                result.rev = ""
+            }
+        }
+    }
+
     func setDirectoryLock(serverUrl: String, lock: Bool) -> Bool {
         
         var update = false
@@ -1771,6 +1820,24 @@ class NCManageDatabase: NSObject {
         
         return update
     }
+    
+    func setAllDirectoryUnLock() {
+        
+        let tableAccount = self.getAccountActive()
+        if tableAccount == nil {
+            return
+        }
+        
+        let realm = try! Realm()
+        let results = realm.objects(tableDirectory.self).filter("account = %@", tableAccount!.account)
+        
+        try! realm.write {
+            
+            for result in results {
+                result.lock = false;
+            }
+        }
+    }
 
     func copyTableDirectory(_ table: tableDirectory) -> tableDirectory {
         

+ 0 - 102
iOSClient/Local storage/CCLocalStorage.m

@@ -256,105 +256,6 @@
     [self presentViewController:alertController animated:YES completion:nil];
 }
 
--(void)cellButtonDownWasTapped:(id)sender
-{
-    CGPoint touchPoint = [sender convertPoint:CGPointZero toView:self.tableView];
-    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:touchPoint];
-    tableMetadata *metadata = [tableMetadata new];
-    UIImage *iconHeader;
-        
-    NSString *cameraFolderName = [[NCManageDatabase sharedInstance] getAccountCameraUploadFolderName];
-    NSString *cameraFolderPath = [[NCManageDatabase sharedInstance] getAccountCameraUploadFolderPath:app.activeUrl];
-
-    metadata = [CCUtility insertFileSystemInMetadata:[dataSource objectAtIndex:indexPath.row] directory:_serverUrl activeAccount:app.activeAccount cameraFolderName:cameraFolderName cameraFolderPath:cameraFolderPath];
-        
-    
-    AHKActionSheet *actionSheet = [[AHKActionSheet alloc] initWithView:self.view title:nil];
-    
-    actionSheet.animationDuration = 0.2;
-    
-    actionSheet.blurRadius = 0.0f;
-    actionSheet.blurTintColor = [UIColor colorWithWhite:0.0f alpha:0.50f];
-    
-    actionSheet.buttonHeight = 50.0;
-    actionSheet.cancelButtonHeight = 50.0f;
-    actionSheet.separatorHeight = 5.0f;
-    
-    actionSheet.automaticallyTintButtonImages = @(NO);
-    
-    actionSheet.encryptedButtonTextAttributes = @{ NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[NCBrandColor sharedInstance].cryptocloud };
-    actionSheet.buttonTextAttributes = @{ NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[UIColor blackColor] };
-    actionSheet.cancelButtonTextAttributes = @{ NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[NCBrandColor sharedInstance].brand };
-    actionSheet.disableButtonTextAttributes = @{ NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[UIColor blackColor] };
-    
-    actionSheet.separatorColor = [NCBrandColor sharedInstance].seperator;
-    actionSheet.cancelButtonTitle = NSLocalizedString(@"_cancel_",nil);
-    
-    // assegnamo l'immagine anteprima se esiste, altrimenti metti quella standars
-    if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@.ico", app.directoryUser, metadata.fileID]])
-        iconHeader = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.ico", app.directoryUser, metadata.fileID]];
-    else
-        iconHeader = [UIImage imageNamed:metadata.iconName];
-    
-    [actionSheet addButtonWithTitle: metadata.fileNamePrint
-                              image: iconHeader
-                    backgroundColor: [NCBrandColor sharedInstance].tabBar
-                             height: 50.0
-                               type: AHKActionSheetButtonTypeDisabled
-                            handler: nil
-    ];
-
-    // Remove file/folder offline
-    if (_serverUrl == nil) {
-        
-        [actionSheet addButtonWithTitle:NSLocalizedString(@"_remove_offline_", nil) image:[UIImage imageNamed:@"actionSheetOffline"] backgroundColor:[UIColor whiteColor] height: 50.0 type:AHKActionSheetButtonTypeDefault handler:^(AHKActionSheet *as) {
-                                    
-            if (metadata.directory) {
-                                        
-                // remove tag offline for all folder/subfolder/file
-                NSString *relativeRoot = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
-                NSString *dirServerUrl = [CCUtility stringAppendServerUrl:relativeRoot addFileName:metadata.fileNameData];
-                //NSArray *directories = [CCCoreData getOfflineDirectoryActiveAccount:app.activeAccount];
-                                        
-                for (TableDirectory *directory in directories)
-                    if ([directory.serverUrl containsString:dirServerUrl]) {
-                        
-                        //[CCCoreData setOfflineDirectoryServerUrl:directory.serverUrl offline:NO activeAccount:app.activeAccount];
-                        //[CCCoreData removeOfflineAllFileFromServerUrl:directory.serverUrl activeAccount:app.activeAccount];
-                        
-                        //[[NCManageDatabase sharedInstance] removeOfflineAllFileFromServerUrl:directory.serverUrl];
-                    }
-                                        
-            } else {
-                                        
-                [CCCoreData setOfflineLocalEtag:metadata.fileID offline:NO activeAccount:app.activeAccount];
-            }
-                                    
-            [self.tableView setEditing:NO animated:YES];
-                                    
-            [self reloadDatasource];
-        }];
-    }
-    
-    // NO Directory - NO Template
-    if (metadata.directory == NO && [metadata.type isEqualToString:k_metadataType_template] == NO) {
-        
-        [actionSheet addButtonWithTitle:NSLocalizedString(@"_open_in_", nil) image:[UIImage imageNamed:@"actionSheetOpenIn"] backgroundColor:[UIColor whiteColor] height: 50.0 type:AHKActionSheetButtonTypeDefault handler:^(AHKActionSheet *as) {
-            
-            [self.tableView setEditing:NO animated:YES];
-            [self openWith:metadata];
-        }];
-    }
-    
-    [actionSheet addButtonWithTitle:NSLocalizedString(@"_delete_", nil) image:[UIImage imageNamed:@"delete"] backgroundColor:[UIColor whiteColor] height: 50.0 type:AHKActionSheetButtonTypeDestructive handler:^(AHKActionSheet *as) {
-        
-        [self requestDeleteMetadata:metadata indexPath:indexPath];
-    }];
-
-    
-    [actionSheet show];
-}
-
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ==== Table ====
 #pragma --------------------------------------------------------------------------------------------
@@ -435,9 +336,6 @@
         }
     }
     
-    // ButtonDown Tapped
-    [cell.buttonDown addTarget:self action:@selector(cellButtonDownWasTapped:) forControlEvents:UIControlEventTouchUpInside];
-    
     // encrypted color
     if (metadata.cryptated) {
         cell.labelTitle.textColor = [NCBrandColor sharedInstance].cryptocloud;

+ 9 - 22
iOSClient/Main/CCMain.m

@@ -37,7 +37,6 @@
 #define alertCreateFolder 1
 #define alertCreateFolderCrypto 2
 #define alertRename 3
-#define alertOfflineFolder 4
 
 @interface CCMain () <CCActionsDeleteDelegate, CCActionsRenameDelegate, CCActionsSearchDelegate, CCActionsDownloadThumbnailDelegate, CCActionsSettingFavoriteDelegate>
 {
@@ -483,16 +482,6 @@
             [self renameFile:_metadata fileName:[alertView textFieldAtIndex:0].text];
         }
     }
-    if (alertView.tag == alertOfflineFolder && buttonIndex == 1) {
-        
-        NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:_metadata.directoryID];
-
-        NSString *dir = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
-        
-        [[CCSynchronize sharedSynchronize] addOfflineFolder:dir];
-        
-        [self performSelector:@selector(reloadDatasource) withObject:nil];
-    }
 }
 
 // accept only number char > 0
@@ -516,8 +505,7 @@
      4> return YES or NO Based on the length
      */
     
-    if (alertView.tag == alertOfflineFolder) return YES;
-    else return ([[[alertView textFieldAtIndex:0] text] length]>0)?YES:NO;
+    return ([[[alertView textFieldAtIndex:0] text] length]>0)?YES:NO;
 }
 
 #pragma --------------------------------------------------------------------------------------------
@@ -1933,8 +1921,7 @@
         
         return;
     }
-    
-    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", serverUrl]];
+    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl = %@", serverUrl]];
     NSString *directoryID = directory.directoryID;
     
     // Is Directory Out Of Date ?
@@ -4051,7 +4038,7 @@
     
     // se è richiesta la disattivazione si chiede la password
     
-    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
+    tableDirectory *directory =  [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
     if (directory.lock) {
         
         CCBKPasscode *viewController = [[CCBKPasscode alloc] initWithNibName:nil bundle:nil];
@@ -4133,7 +4120,7 @@
     if (_metadata.directory) {
         // calcolo lockServerUrl
         NSString *lockServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
-        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
         
         if (directory.lock)
             titoloLock = [NSString stringWithFormat:NSLocalizedString(@"_remove_passcode_", nil)];
@@ -4174,7 +4161,7 @@
         NSString *dirServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
 
         // Directory bloccata ?
-        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", dirServerUrl]];
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl = %@", dirServerUrl]];
         if (directory.lock && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil) lockDirectory = YES;
         
         NSString *cameraUploadFolderName = [[NCManageDatabase sharedInstance] getAccountCameraUploadFolderName];
@@ -4546,7 +4533,7 @@
     
     // Directory locked ?
     NSString *lockServerUrl = [CCUtility stringAppendServerUrl:[[NCManageDatabase sharedInstance] getServerUrl:_metadata.directoryID] addFileName:_metadata.fileNameData];
-    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
+    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
     
     if (directory.lock && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil)
         lockDirectory = YES;
@@ -4661,7 +4648,7 @@
     _directoryOrder = [CCUtility getOrderSettings];
     
     // Controllo data lettura Data Source
-    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl == %@", serverUrl]];
+    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl == %@", serverUrl]];
     NSDate *dateDateRecordDirectory = directory.dateReadDirectory;
     
     if ([dateDateRecordDirectory compare:_dateReadDataSource] == NSOrderedDescending || dateDateRecordDirectory == nil || _dateReadDataSource == nil) {
@@ -5089,7 +5076,7 @@
     
     // Directory con passcode lock attivato
     NSString *lockServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileNameData];
-    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
+    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
     
     if (metadata.directory && (directory.lock && [[CCUtility getBlockCode] length]))
         cell.statusImageView.image = [UIImage imageNamed:@"passcode"];
@@ -5607,7 +5594,7 @@
         
         NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:_metadata.directoryID];
         NSString *lockServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
-        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
 
         // SE siamo in presenza di una directory bloccata E è attivo il block E la sessione password Lock è senza data ALLORA chiediamo la password per procedere
         if (directory.lock && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil && controlPasscode) {

+ 1 - 1
iOSClient/Move/CCMove.m

@@ -472,7 +472,7 @@
         NSString *lockServerUrl = [CCUtility stringAppendServerUrl:_serverUrl addFileName:metadata.fileNameData];
         
         // Se siamo in presenza di una directory bloccata E è attivo il block E la sessione PASSWORD Lock è senza data ALLORA chiediamo la password per procedere
-        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
         
         if (directory.lock && [[CCUtility getBlockCode] length] && controlPasscode) {
             

+ 2 - 2
iOSClient/Settings/CCManageCryptoCloud.m

@@ -172,7 +172,7 @@
                     app.isCryptoCloudMode = YES;
                         
                     // force reload all directory for all users
-                    [CCCoreData clearAllDateReadDirectory];
+                    [[NCManageDatabase sharedInstance] setClearAllDateReadDirectory];
                     
                     // 3D Touch
                     [app configDynamicShortcutItems];
@@ -201,7 +201,7 @@
             [app configDynamicShortcutItems];
 
             // force reload all directory for all users and all metadata cryptated
-            [CCCoreData clearAllDateReadDirectory];
+            [[NCManageDatabase sharedInstance] setClearAllDateReadDirectory];
             [[NCManageDatabase sharedInstance] deleteMetadata:[NSPredicate predicateWithFormat:@"(cryptated == 1)"]];
             
             UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"_info_", nil) message:NSLocalizedString(@"_alert_deactivation_crypto_cloud_", nil) delegate:nil cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"_ok_", nil), nil];

+ 11 - 7
iOSClient/Settings/CCSettings.m

@@ -405,12 +405,16 @@
         
             NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
             serverUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileNamePrint];
-        
-            NSArray *TableDirectories = [CCCoreData getDirectoryIDsFromBeginsWithServerUrl:serverUrl activeAccount:app.activeAccount];
-        
-            for (TableDirectory *tableDirecory in TableDirectories)
-                [CCCoreData clearDateReadAccount:app.activeAccount serverUrl:nil directoryID:tableDirecory.directoryID];
+
+            NSString *serverUrlBeginWith = serverUrl;
+            
+            if (![serverUrl hasSuffix:@"/"])
+                serverUrlBeginWith = [serverUrl stringByAppendingString:@"/"];
+
+            NSArray *directories = [[NCManageDatabase sharedInstance] getTablesDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND (serverUrl = %@ OR serverUrl BEGINSWITH %@)", app.activeAccount, serverUrl, serverUrlBeginWith] sorted:@"serverUrl" ascending:true];
             
+            for (tableDirectory *directory in directories)
+                [[NCManageDatabase sharedInstance] clearDateRead:nil directoryID:directory.directoryID];
         } 
     }
     
@@ -529,7 +533,7 @@
             if (aViewController.fromType == CCBKPasscodeFromSettingsPasscode) {
                 
                 [CCUtility setBlockCode:@""];
-                [CCCoreData setAllDirectoryUnLockForAccount:app.activeAccount];
+                [[NCManageDatabase sharedInstance] setAllDirectoryUnLock];
                 [app.activeMain.tableView reloadData];
             }
             
@@ -542,7 +546,7 @@
                 
                 // disable passcode
                 [CCUtility setBlockCode:@""];
-                [CCCoreData setAllDirectoryUnLockForAccount:app.activeAccount];
+                [[NCManageDatabase sharedInstance] setAllDirectoryUnLock];
                 [app.activeMain.tableView reloadData];
                 
                 [CCUtility setSimplyBlockCode:![CCUtility getSimplyBlockCode]];