marinofaggiana 4 years ago
parent
commit
cdb6f2ff1b

+ 34 - 0
iOSClient/Networking/NCOperationQueue.swift

@@ -33,12 +33,17 @@ import NCCommunication
     }()
     
     let downloadQueue = Queuer(name: "downloadQueue", maxConcurrentOperationCount: 5, qualityOfService: .default)
+    let readFolderSyncQueue = Queuer(name: "readFolderSyncQueue", maxConcurrentOperationCount: 1, qualityOfService: .default)
     let downloadThumbnailQueue = Queuer(name: "downloadThumbnailQueue", maxConcurrentOperationCount: 10, qualityOfService: .default)
     
     @objc func download(metadata: tableMetadata, selector: String, setFavorite: Bool) {
         downloadQueue.addOperation(NCOperationDownload.init(metadata: metadata, selector: selector, setFavorite: setFavorite))
     }
     
+    @objc func readFolderSync(serverUrl: String, selector: String ,account: String) {
+        readFolderSyncQueue.addOperation(NCOperationReadFolderSync.init(serverUrl: serverUrl, selector: selector, account: account))
+    }
+    
     @objc func downloadThumbnail(metadata: tableMetadata, activeUrl: String, view: Any, indexPath: IndexPath) {
         if metadata.hasPreview && (!CCUtility.fileProviderStorageIconExists(metadata.ocId, fileNameView: metadata.fileName) || metadata.typeFile == k_metadataTypeFile_document) {
             downloadThumbnailQueue.addOperation(NCOperationDownloadThumbnail.init(metadata: metadata, activeUrl: activeUrl, view: view, indexPath: indexPath))
@@ -65,6 +70,35 @@ class NCOperationDownload: ConcurrentOperation {
     }
 }
 
+class NCOperationReadFolderSync: ConcurrentOperation {
+   
+    private var serverUrl: String
+    private var selector: String
+    private var account: String
+    
+    init(serverUrl: String, selector: String, account: String) {
+        self.serverUrl = serverUrl
+        self.selector = selector
+        self.account = account
+    }
+    
+    override func start() {
+        NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "1", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, errorCode, errorDescription) in
+            
+            if errorCode == 0 && files != nil {
+            
+                NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files!, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
+                    
+                    CCSynchronize.shared()?.readFolderSuccessFailure(withAccount: account, serverUrl: self.serverUrl, metadataFolder: metadataFolder, metadatas: metadatas, selector: self.selector, message: errorDescription, errorCode: errorCode)
+                    
+                }
+            }
+            self.finish()
+        }
+    }
+}
+
+
 class NCOperationDownloadThumbnail: ConcurrentOperation {
    
     private var metadata: tableMetadata

+ 2 - 19
iOSClient/Synchronize/CCSynchronize.h

@@ -30,30 +30,13 @@
 
 @interface CCSynchronize : NSObject
 
-@property (nonatomic, strong) CCHud *hud;
-
 + (CCSynchronize *)sharedSynchronize;
 
-@property (nonatomic, strong) NSMutableOrderedSet *foldersInSynchronized;
-@property (nonatomic, strong) NSOperationQueue *operationSynchronizeQueue;
-
 - (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)verifyChangeMedatas:(NSArray *)allRecordMetadatas serverUrl:(NSString *)serverUrl account:(NSString *)account withDownload:(BOOL)withDownload;
-
-@end
+- (void)readFolderSuccessFailureWithAccount:(NSString *)account serverUrl:(NSString *)serverUrl metadataFolder:(tableMetadata *)metadataFolder metadatas:(NSArray *)metadatas selector:(NSString *)selector message:(NSString *)message errorCode:(NSInteger)errorCode;
 
-@interface CCOperationSynchronize : NSOperation
-
-- (id)initWithDelegate:(id)delegate serverUrl:(NSString *)serverUrl selector:(NSString *)selector account:(NSString *)account;
-
-@property (nonatomic, assign) BOOL isExecuting;
-@property (nonatomic, assign) BOOL isFinished;
-
-@property (nonatomic, weak) id delegate;
-@property (nonatomic, strong) NSString* account;
-@property (nonatomic, strong) NSString* serverUrl;
-@property (nonatomic, strong) NSString* selector;
+- (void)verifyChangeMedatas:(NSArray *)allRecordMetadatas serverUrl:(NSString *)serverUrl account:(NSString *)account withDownload:(BOOL)withDownload;
 
 @end

+ 1 - 92
iOSClient/Synchronize/CCSynchronize.m

@@ -40,13 +40,7 @@
     @synchronized(self)
     {
         if (!sharedSynchronize) {
-            
             sharedSynchronize = [CCSynchronize new];
-            sharedSynchronize.foldersInSynchronized = [NSMutableOrderedSet new];
-            
-            sharedSynchronize->_operationSynchronizeQueue = [NSOperationQueue new];
-            sharedSynchronize->_operationSynchronizeQueue.name = @"com.nextcloud.operationSynchronizeQueue";
-            sharedSynchronize->_operationSynchronizeQueue.maxConcurrentOperationCount = 1;
         }
         return sharedSynchronize;
     }
@@ -62,9 +56,7 @@
 
 - (void)readFolder:(NSString *)serverUrl selector:(NSString *)selector account:(NSString *)account
 {
-    id operation = [[CCOperationSynchronize alloc] initWithDelegate:self serverUrl:serverUrl selector:selector account:account];
-
-    [self.operationSynchronizeQueue addOperation:operation];
+    [[NCOperationQueue shared] readFolderSyncWithServerUrl:serverUrl selector:selector account:account];
 }
 
 - (void)readFolderSuccessFailureWithAccount:(NSString *)account serverUrl:(NSString *)serverUrl metadataFolder:(tableMetadata *)metadataFolder metadatas:(NSArray *)metadatas selector:(NSString *)selector message:(NSString *)message errorCode:(NSInteger)errorCode
@@ -285,86 +277,3 @@
 
 @end
 
-@implementation CCOperationSynchronize
-
-- (id)initWithDelegate:(id)delegate serverUrl:(NSString *)serverUrl selector:(NSString *)selector account:(NSString *)account
-{
-    self = [super init];
-    
-    if (self) {
-        self.delegate = delegate;
-        self.serverUrl = serverUrl;
-        self.selector = selector;
-        self.account = account;
-    }
-    
-    return self;
-}
-
-- (void)start
-{
-    if (![NSThread isMainThread]) {
-        [self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:NO];
-        return;
-    }
-    
-    [self willChangeValueForKey:@"isExecuting"];
-    _isExecuting = YES;
-    [self didChangeValueForKey:@"isExecuting"];
-    
-    if (self.isCancelled) {
-        
-        [self finish];
-        
-    } else {
-        
-        [self poolNetworking];
-    }
-}
-
-- (void)finish
-{
-    [self willChangeValueForKey:@"isExecuting"];
-    [self willChangeValueForKey:@"isFinished"];
-    
-    _isExecuting = NO;
-    _isFinished = YES;
-    
-    [self didChangeValueForKey:@"isExecuting"];
-    [self didChangeValueForKey:@"isFinished"];
-}
-
-- (void)cancel
-{
-    if (_isExecuting) {
-        
-        [self complete];
-    }
-    
-    [super cancel];
-}
-
-- (void)poolNetworking
-{
-    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
-    
-    [[NCCommunication shared] readFileOrFolderWithServerUrlFileName:self.serverUrl depth:@"1" showHiddenFiles:[CCUtility getShowHiddenFiles] customUserAgent:nil addCustomHeaders:nil completionHandler:^(NSString *account, NSArray *files, NSInteger errorCode, NSString *errorDescription) {
-               
-        [[NCManageDatabase sharedInstance] convertNCCommunicationFilesToMetadatas:files useMetadataFolder:true account:account completion:^(tableMetadata *metadataFolder, NSArray<tableMetadata *> *metadatasFolder, NSArray<tableMetadata *> *metadatas) {
-            
-            if ([self.delegate respondsToSelector:@selector(readFolderSuccessFailureWithAccount:serverUrl:metadataFolder:metadatas:selector:message:errorCode:)])
-                [self.delegate readFolderSuccessFailureWithAccount:self.account serverUrl:self.serverUrl metadataFolder:metadataFolder metadatas:metadatas selector:self.selector message:errorDescription errorCode:errorCode];
-            
-            [self complete];
-        }];
-    }];
-}
-
-- (void)complete
-{
-    [self finish];
-    
-    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
-}
-
-@end