marinofaggiana 4 年之前
父节点
当前提交
c58730ceb4

+ 0 - 6
Nextcloud.xcodeproj/project.pbxproj

@@ -244,7 +244,6 @@
 		F7AE00F8230E81CB007ACF8A /* NCBrowserWeb.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7AE00F7230E81CB007ACF8A /* NCBrowserWeb.swift */; };
 		F7AE00FA230E81EB007ACF8A /* NCBrowserWeb.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7AE00F9230E81EB007ACF8A /* NCBrowserWeb.storyboard */; };
 		F7AF7633246BEDFE00B86E3C /* TOPasscodeViewController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AF7632246BEDFE00B86E3C /* TOPasscodeViewController.framework */; };
-		F7B0C0CD1EE7E7750033AC24 /* CCSynchronize.m in Sources */ = {isa = PBXBuildFile; fileRef = F7B0C0CC1EE7E7750033AC24 /* CCSynchronize.m */; };
 		F7B0C1751EE839A30033AC24 /* NCAutoUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = F7B0C1741EE839A30033AC24 /* NCAutoUpload.m */; };
 		F7B174C822FAC0A8000B7579 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F7B174C722FAC0A8000B7579 /* AppDelegate.m */; };
 		F7B2DEF01F976854007CF4D2 /* NYMnemonic.m in Sources */ = {isa = PBXBuildFile; fileRef = F7B2DEEF1F976785007CF4D2 /* NYMnemonic.m */; };
@@ -620,8 +619,6 @@
 		F7AE00F7230E81CB007ACF8A /* NCBrowserWeb.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCBrowserWeb.swift; sourceTree = "<group>"; };
 		F7AE00F9230E81EB007ACF8A /* NCBrowserWeb.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCBrowserWeb.storyboard; sourceTree = "<group>"; };
 		F7AF7632246BEDFE00B86E3C /* TOPasscodeViewController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TOPasscodeViewController.framework; path = Carthage/Build/iOS/TOPasscodeViewController.framework; sourceTree = "<group>"; };
-		F7B0C0CB1EE7E7750033AC24 /* CCSynchronize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSynchronize.h; sourceTree = "<group>"; };
-		F7B0C0CC1EE7E7750033AC24 /* CCSynchronize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSynchronize.m; sourceTree = "<group>"; };
 		F7B0C1731EE839A30033AC24 /* NCAutoUpload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NCAutoUpload.h; sourceTree = "<group>"; };
 		F7B0C1741EE839A30033AC24 /* NCAutoUpload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NCAutoUpload.m; sourceTree = "<group>"; };
 		F7B174C722FAC0A8000B7579 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -1160,8 +1157,6 @@
 		F7B0C0CA1EE7E7750033AC24 /* Synchronize */ = {
 			isa = PBXGroup;
 			children = (
-				F7B0C0CB1EE7E7750033AC24 /* CCSynchronize.h */,
-				F7B0C0CC1EE7E7750033AC24 /* CCSynchronize.m */,
 			);
 			path = Synchronize;
 			sourceTree = "<group>";
@@ -1984,7 +1979,6 @@
 				F7E9C41B20F4CA870040CF18 /* CCTransfers.m in Sources */,
 				37C83A0F24532BA600618A3B /* CCMain+Swift.swift in Sources */,
 				F77B0DF51D118A16002130FE /* CCUtility.m in Sources */,
-				F7B0C0CD1EE7E7750033AC24 /* CCSynchronize.m in Sources */,
 				F710D1FE24057E5E00A6033D /* NCActionSheetHeader.swift in Sources */,
 				F790110E21415BF600D7B136 /* NCViewerRichdocument.swift in Sources */,
 				370D26AD248A3BB800121797 /* CCCellMainTransfer.swift in Sources */,

+ 1 - 1
Share/NCSelectDestination.m

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

+ 0 - 1
iOSClient/AppDelegate.m

@@ -23,7 +23,6 @@
 
 #import "AppDelegate.h"
 #import "CCGraphics.h"
-#import "CCSynchronize.h"
 #import "CCMain.h"
 #import "NCBridgeSwift.h"
 #import "NCAutoUpload.h"

+ 8 - 9
iOSClient/Favorites/CCFavorites.m

@@ -23,7 +23,6 @@
 
 #import "CCFavorites.h"
 #import "AppDelegate.h"
-#import "CCSynchronize.h"
 
 #import "NCBridgeSwift.h"
 
@@ -193,15 +192,15 @@
                     NSString *serverUrlSon = [CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileName];
                     if (![serverUrlSon containsString:father]) {
                         if (metadata.directory) {
-                            if ([CCUtility getFavoriteOffline])
-                                [[CCSynchronize sharedSynchronize] readFolder:[CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileName] selector:selectorReadFolderWithDownload account:account];
-                            else
-                                [[CCSynchronize sharedSynchronize] readFolder:[CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileName] selector:selectorReadFolder account:account];
+//                            if ([CCUtility getFavoriteOffline])
+//                                [[CCSynchronize sharedSynchronize] readFolder:[CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileName] selector:selectorReadFolderWithDownload account:account];
+//                            else
+//                                [[CCSynchronize sharedSynchronize] readFolder:[CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileName] selector:selectorReadFolder account:account];
                         } else {
-                            if ([CCUtility getFavoriteOffline])
-                                [[CCSynchronize sharedSynchronize] readFile:metadata.ocId fileName:metadata.fileName serverUrl:serverUrl selector:selectorReadFileWithDownload account:account];
-                            else
-                                [[CCSynchronize sharedSynchronize] readFile:metadata.ocId fileName:metadata.fileName serverUrl:serverUrl selector:selectorReadFile account:account];
+//                            if ([CCUtility getFavoriteOffline])
+//                                [[CCSynchronize sharedSynchronize] readFile:metadata.ocId fileName:metadata.fileName serverUrl:serverUrl selector:selectorReadFileWithDownload account:account];
+//                            else
+//                                [[CCSynchronize sharedSynchronize] readFile:metadata.ocId fileName:metadata.fileName serverUrl:serverUrl selector:selectorReadFile account:account];
                         }
                         father = serverUrlSon;
                     }

+ 5 - 6
iOSClient/Main/CCMain.m

@@ -23,7 +23,6 @@
 
 #import "CCMain.h"
 #import "AppDelegate.h"
-#import "CCSynchronize.h"
 #import "NCAutoUpload.h"
 #import "NCBridgeSwift.h"
 #import "PKDownloadButton.h"
@@ -532,7 +531,7 @@
             else
                 selector = selectorReadFolder;
                        
-            [[CCSynchronize sharedSynchronize] readFolder:[CCUtility stringAppendServerUrl:self.serverUrl addFileName:metadata.fileName] selector:selector account:appDelegate.activeAccount];
+//            [[CCSynchronize sharedSynchronize] readFolder:[CCUtility stringAppendServerUrl:self.serverUrl addFileName:metadata.fileName] selector:selector account:appDelegate.activeAccount];
         }
                    
         if (!metadata.directory && favorite && [CCUtility getFavoriteOffline]) {
@@ -968,11 +967,11 @@
             
             if (metadata.directory) {
                 
-                [[CCSynchronize sharedSynchronize] readFolder:[CCUtility stringAppendServerUrl:metadata.serverUrl addFileName:metadata.fileName] selector:selectorReadFolderWithDownload account:appDelegate.activeAccount];
+//                [[CCSynchronize sharedSynchronize] readFolder:[CCUtility stringAppendServerUrl:metadata.serverUrl addFileName:metadata.fileName] selector:selectorReadFolderWithDownload account:appDelegate.activeAccount];
                     
             } else {
                 
-                [[CCSynchronize sharedSynchronize] readFile:metadata.ocId fileName:metadata.fileName serverUrl:metadata.serverUrl selector:selectorReadFileWithDownload account:appDelegate.activeAccount];
+//                [[CCSynchronize sharedSynchronize] readFile:metadata.ocId fileName:metadata.fileName serverUrl:metadata.serverUrl selector:selectorReadFileWithDownload account:appDelegate.activeAccount];
             }
         }
         
@@ -1117,7 +1116,7 @@
     [refreshControl endRefreshing];
     [self tableViewReloadData];
     
-    [[NCNetworking shared] readFolderWithServerUrl:serverUrl account:appDelegate.activeAccount completion:^(NSString *account, tableMetadata *metadataFolder, NSArray *metadatas, NSInteger errorCode, NSString *errorDescription) {
+    [[NCNetworking shared] readFolderWithServerUrl:serverUrl account:appDelegate.activeAccount completion:^(NSString *account, tableMetadata *metadataFolder, NSArray *metadatas, NSArray *metadatasChanged, NSInteger errorCode, NSString *errorDescription) {
         
         if (errorCode == 0 ) {
             
@@ -1127,7 +1126,7 @@
             
             // File is changed ??
             dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
-                [[CCSynchronize sharedSynchronize] verifyChangeMedatas:metadatas serverUrl:serverUrl account:account withDownload:NO];
+//                [[CCSynchronize sharedSynchronize] verifyChangeMedatas:metadatas serverUrl:serverUrl account:account withDownload:NO];
             });
             
             // E2EE Is encrypted folder get metadata

+ 1 - 1
iOSClient/Main/Menu/CCMain+Menu.swift

@@ -323,7 +323,7 @@ extension CCMain {
                             let serverUrl = CCUtility.stringAppendServerUrl(metadata.serverUrl, addFileName: metadata.fileName)!
                             NCManageDatabase.sharedInstance.setDirectory(serverUrl: serverUrl, offline: !isOffline, account: appDelegate.activeAccount)
                             if (!isOffline) {
-                                CCSynchronize.shared()?.readFolder(serverUrl, selector: selectorReadFolderWithDownload, account: appDelegate.activeAccount)
+                                //CCSynchronize.shared()?.readFolder(serverUrl, selector: selectorReadFolderWithDownload, account: appDelegate.activeAccount)
                             }
                             NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["ocId":metadata.ocId, "serverUrl":metadata.serverUrl])
                         }

+ 4 - 4
iOSClient/Networking/NCNetworking.swift

@@ -571,7 +571,7 @@ import Alamofire
     
     //MARK: - WebDav Read file, folder
     
-    @objc func readFolder(serverUrl: String, account: String, completion: @escaping (_ account: String, _ metadataFolder: tableMetadata?, _ metadatas: [tableMetadata]?, _ errorCode: Int, _ errorDescription: String)->()) {
+    @objc func readFolder(serverUrl: String, account: String, completion: @escaping (_ account: String, _ metadataFolder: tableMetadata?, _ metadatas: [tableMetadata]?, _ metadatasChanged: [tableMetadata]?, _ errorCode: Int, _ errorDescription: String)->()) {
         
         NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "1", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
             
@@ -586,12 +586,12 @@ import Alamofire
                     }
                     
                     DispatchQueue.global().async {
-                        NCManageDatabase.sharedInstance.updateMetadatasServerUrl(serverUrl, account: account, metadatas: metadatas)
+                        let metadatasChanged = NCManageDatabase.sharedInstance.updateMetadatasServerUrl(serverUrl, account: account, metadatas: metadatas)
                         DispatchQueue.main.async {
                             let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", account, serverUrl))
                             let metadataFolder = NCManageDatabase.sharedInstance.addMetadata(metadataFolder)
 
-                            completion(account, metadataFolder, metadatas, errorCode, "")
+                            completion(account, metadataFolder, metadatas, metadatasChanged, errorCode, "")
                             NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["serverUrl":serverUrl])
                         }
                     }
@@ -603,7 +603,7 @@ import Alamofire
                 NCContentPresenter.shared.messageNotification("_error_", description: errorDescription, delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: errorCode)
                 #endif
                 
-                completion(account, nil, nil, errorCode, errorDescription)
+                completion(account, nil, nil, nil, errorCode, errorDescription)
             }
         }
     }

+ 1 - 1
iOSClient/Networking/NCOperationQueue.swift

@@ -180,7 +180,7 @@ class NCOperationReadFolderSync: ConcurrentOperation {
                 if errorCode == 0 {
                     NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
                         if metadatas.count > 0 {
-                            CCSynchronize.shared()?.readFolder(withAccount: account, serverUrl: self.serverUrl, metadataFolder: metadataFolder, metadatas: metadatas, selector: self.selector)
+                            //CCSynchronize.shared()?.readFolder(withAccount: account, serverUrl: self.serverUrl, metadataFolder: metadataFolder, metadatas: metadatas, selector: self.selector)
                         }
                     }
                 } else if errorCode == 404 {

+ 2 - 2
iOSClient/Networking/NCService.swift

@@ -73,7 +73,7 @@ class NCService: NSObject {
                 let directories = NCManageDatabase.sharedInstance.getTablesDirectory(predicate: NSPredicate(format: "account == %@ AND offline == true", tableAccount.account), sorted: "serverUrl", ascending: true)
                 if (directories != nil) {
                     for directory: tableDirectory in directories! {
-                        CCSynchronize.shared()?.readFolder(directory.serverUrl, selector: selectorReadFolderWithDownload, account: tableAccount.account)
+                        //CCSynchronize.shared()?.readFolder(directory.serverUrl, selector: selectorReadFolderWithDownload, account: tableAccount.account)
                     }
                 }
                 
@@ -83,7 +83,7 @@ class NCService: NSObject {
                         guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", file.ocId)) else {
                             continue
                         }
-                        CCSynchronize.shared()?.readFile(metadata.ocId, fileName: metadata.fileName, serverUrl: metadata.serverUrl, selector: selectorReadFileWithDownload, account: tableAccount.account)
+                        //CCSynchronize.shared()?.readFile(metadata.ocId, fileName: metadata.fileName, serverUrl: metadata.serverUrl, selector: selectorReadFileWithDownload, account: tableAccount.account)
                     }
                 }
                         

+ 0 - 1
iOSClient/Nextcloud-Bridging-Header.h

@@ -8,5 +8,4 @@
 #import "NCAutoUpload.h"
 #import "NCEndToEndEncryption.h"
 #import "NYMnemonic.h"
-#import "CCSynchronize.h"
 #import "PKStopDownloadButton.h"

+ 1 - 1
iOSClient/Select/NCSelect.swift

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

+ 0 - 1
iOSClient/Settings/CCSettings.m

@@ -24,7 +24,6 @@
 #import "CCSettings.h"
 #import "AppDelegate.h"
 #import "CCMain.h"
-#import "CCSynchronize.h"
 #import "CCAdvanced.h"
 #import "CCManageAccount.h"
 #import "NCManageEndToEndEncryption.h"

+ 0 - 41
iOSClient/Synchronize/CCSynchronize.h

@@ -1,41 +0,0 @@
-//
-//  CCSynchronize.h
-//  Nextcloud
-//
-//  Created by Marino Faggiana on 19/10/16.
-//  Copyright (c) 2016 Marino Faggiana. All rights reserved.
-//
-//  Author Marino Faggiana <marino.faggiana@nextcloud.com>
-//
-//  This program is free software: you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation, either version 3 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "CCHud.h"
-
-@class tableMetadata;
-
-@interface CCSynchronize : NSObject
-
-+ (CCSynchronize *)sharedSynchronize;
-
-- (void)readFolder:(NSString *)serverUrl selector:(NSString *)selector account:(NSString *)account;
-- (void)readFile:(NSString *)ocId fileName:(NSString *)fileName serverUrl:(NSString *)serverUrl selector:(NSString *)selector account:(NSString *)account;
-
-- (void)readFolderWithAccount:(NSString *)account serverUrl:(NSString *)serverUrl metadataFolder:(tableMetadata *)metadataFolder metadatas:(NSArray *)metadatas selector:(NSString *)selector;
-
-- (void)verifyChangeMedatas:(NSArray *)allRecordMetadatas serverUrl:(NSString *)serverUrl account:(NSString *)account withDownload:(BOOL)withDownload;
-
-@end

+ 0 - 259
iOSClient/Synchronize/CCSynchronize.m

@@ -1,259 +0,0 @@
-//
-//  CCSynchronize.m
-//  Nextcloud
-//
-//  Created by Marino Faggiana on 19/10/16.
-//  Copyright (c) 2016 Marino Faggiana. All rights reserved.
-//
-//  Author Marino Faggiana <marino.faggiana@nextcloud.com>
-//
-//  This program is free software: you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation, either version 3 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-//
-
-#import "CCSynchronize.h"
-#import "AppDelegate.h"
-#import "CCMain.h"
-#import "NCBridgeSwift.h"
-
-@interface CCSynchronize ()
-{
-}
-@end
-
-@implementation CCSynchronize
-
-+ (CCSynchronize *)sharedSynchronize {
-    
-    static CCSynchronize *sharedSynchronize;
-    
-    @synchronized(self)
-    {
-        if (!sharedSynchronize) {
-            sharedSynchronize = [CCSynchronize new];
-        }
-        return sharedSynchronize;
-    }
-}
-
-#pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Read Folder =====
-#pragma --------------------------------------------------------------------------------------------
-
-// serverUrl    : start
-// selector     : selectorReadFolder, selectorReadFolderWithDownload
-//
-
-- (void)readFolder:(NSString *)serverUrl selector:(NSString *)selector account:(NSString *)account
-{
-    [[NCOperationQueue shared] readFolderSyncWithServerUrl:serverUrl selector:selector account:account];
-}
-
-- (void)readFolderWithAccount:(NSString *)account serverUrl:(NSString *)serverUrl metadataFolder:(tableMetadata *)metadataFolder metadatas:(NSArray *)metadatas selector:(NSString *)selector
-{
-    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
-
-    // Add metadata and update etag Directory
-    [[NCManageDatabase sharedInstance] addMetadata:metadataFolder];
-    [[NCManageDatabase sharedInstance] setDirectoryWithServerUrl:serverUrl serverUrlTo:nil etag:metadataFolder.etag ocId:metadataFolder.ocId fileId:metadataFolder.fileId encrypted:metadataFolder.e2eEncrypted richWorkspace:nil account:appDelegate.activeAccount];
-    
-    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
-        
-        NSMutableArray *metadatasForVerifyChange = [NSMutableArray new];
-        NSMutableArray *addMetadatas = [NSMutableArray new];
-        
-        NSArray *recordsInSessions = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND serverUrl == %@ AND session != ''", account, serverUrl] page:0 limit:0 sorted:@"fileName" ascending:NO freeze:NO];
-        
-        // ----- Test : (DELETE) -----
-        
-        NSMutableArray *metadatasNotPresents = [NSMutableArray new];
-        
-        NSArray *tableMetadatas = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND serverUrl == %@ AND session == ''", account, serverUrl] page:0 limit:0 sorted:@"fileName" ascending:NO freeze:NO];
-        
-        for (tableMetadata *record in tableMetadatas) {
-            
-            BOOL ocIdFound = NO;
-            
-            for (tableMetadata *metadata in metadatas) {
-                
-                if ([record.ocId isEqualToString:metadata.ocId]) {
-                    ocIdFound = YES;
-                    break;
-                }
-            }
-            
-            if (!ocIdFound)
-                [metadatasNotPresents addObject:record];
-        }
-        
-        // delete metadata not present
-        for (tableMetadata *metadata in metadatasNotPresents) {
-            
-            [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryProviderStorageOcId:metadata.ocId] error:nil];
-            
-            if (metadata.directory && serverUrl) {
-                
-                NSString *dirForDelete = [CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileName];
-                
-                [[NCManageDatabase sharedInstance] deleteDirectoryAndSubDirectoryWithServerUrl:dirForDelete account:account];
-            }
-            
-            [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
-            [[NCManageDatabase sharedInstance] deleteLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
-        }
-        
-        // ----- Test : (MODIFY) -----
-        
-        for (tableMetadata *metadata in metadatas) {
-            
-            // RECURSIVE DIRECTORY MODE
-            if (metadata.directory) {
-                
-                // Verify if do not exists this Metadata
-                tableMetadata *result = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
-                
-                if (!result)
-                    [[NCManageDatabase sharedInstance] addMetadata:metadata];
-                
-                [self readFolder:[CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileName] selector:selector account:account];
-                
-            } else {
-                
-                if ([selector isEqualToString:selectorReadFolderWithDownload]) {
-                    
-                    // It's in session
-                    BOOL recordInSession = NO;
-                    for (tableMetadata *record in recordsInSessions) {
-                        if ([record.ocId isEqualToString:metadata.ocId]) {
-                            recordInSession = YES;
-                            break;
-                        }
-                    }
-                    
-                    if (recordInSession)
-                        continue;
-                    
-                    // Ohhhh INSERT
-                    [metadatasForVerifyChange addObject:metadata];
-                }
-                
-                if ([selector isEqualToString:selectorReadFolder]) {
-                    
-                    // Verify if do not exists this Metadata
-                    tableMetadata *result = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
-                    
-                    if (!result)
-                        [addMetadatas addObject:metadata];
-                }
-            }
-        }
-        
-        if ([addMetadatas count] > 0)
-            [[NCManageDatabase sharedInstance] addMetadatas:addMetadatas];
-        
-        if ([metadatasForVerifyChange count] > 0)
-            [self verifyChangeMedatas:metadatasForVerifyChange serverUrl:serverUrl account:account withDownload:YES];
-    });
-}
-
-#pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Read File for Folder & Read File=====
-#pragma --------------------------------------------------------------------------------------------
-
-- (void)readFile:(NSString *)ocId fileName:(NSString *)fileName serverUrl:(NSString *)serverUrl selector:(NSString *)selector account:(NSString *)account
-{
-    NSString *serverUrlFileName = [NSString stringWithFormat:@"%@/%@", serverUrl, fileName];
-
-    [[NCNetworking shared] readFileWithServerUrlFileName:serverUrlFileName account:account completion:^(NSString *account, tableMetadata *metadata, NSInteger errorCode, NSString *errorDescription) {
-        
-        if (errorCode == 0 && [account isEqualToString:account]) {
-            
-            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
-                
-                BOOL withDownload = NO;
-                
-                if ([selector isEqualToString:selectorReadFileWithDownload])
-                    withDownload = YES;
-                
-                //Add/Update Metadata
-                tableMetadata *addMetadata = [[NCManageDatabase sharedInstance] addMetadata:metadata];
-                if (addMetadata)
-                    [self verifyChangeMedatas:[[NSArray alloc] initWithObjects:addMetadata, nil] serverUrl:serverUrl account:account withDownload:withDownload];
-            });
-            
-        } else if (errorCode == 404) {
-                
-            [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", ocId]];
-            [[NCManageDatabase sharedInstance] deleteLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", ocId]];
-        }
-    }];
-}
-
-#pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Verify Metadatas =====
-#pragma --------------------------------------------------------------------------------------------
-
-// MULTI THREAD
-- (void)verifyChangeMedatas:(NSArray *)allRecordMetadatas serverUrl:(NSString *)serverUrl account:(NSString *)account withDownload:(BOOL)withDownload
-{
-    NSMutableArray *metadatas = [[NSMutableArray alloc] init];
-    
-    for (tableMetadata *metadata in allRecordMetadatas) {
-        
-        BOOL changeRev = NO;
-        
-        // change account
-        if ([metadata.account isEqualToString:account] == NO)
-            return;
-        
-        // no dir
-        if (metadata.directory)
-            continue;
-        
-        tableLocalFile *localFile = [[NCManageDatabase sharedInstance] getTableLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
-        
-        if (withDownload) {
-            
-            if (![localFile.etag isEqualToString:metadata.etag] || ![CCUtility fileProviderStorageExists:metadata.ocId fileNameView:metadata.fileNameView])
-                changeRev = YES;
-            
-        } else {
-            
-            if (localFile && ![localFile.etag isEqualToString:metadata.etag]) // it must be in TableRecord
-                changeRev = YES;
-        }
-        
-        if (changeRev) {
-            
-            // remove & re-create
-            [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryProviderStorageOcId:metadata.ocId] error:nil];
-            [CCUtility getDirectoryProviderStorageOcId:metadata.ocId fileNameView:metadata.fileNameView];
-            
-            [metadatas addObject:metadata];
-        }
-    }
-    
-    if ([metadatas count])
-        [self SynchronizeMetadatas:metadatas withDownload:withDownload];
-}
-
-// MULTI THREAD
-- (void)SynchronizeMetadatas:(NSArray *)metadatas withDownload:(BOOL)withDownload
-{
-    for (tableMetadata *metadata in metadatas) {
-        [[NCOperationQueue shared] downloadWithMetadata:metadata selector:selectorDownloadSynchronize setFavorite:false];
-    }
-}
-
-@end
-