Marino Faggiana 7 years ago
parent
commit
1aee58fdfe
3 changed files with 108 additions and 102 deletions
  1. 1 1
      iOSClient/CCGlobal.h
  2. 49 46
      iOSClient/Main/CCMain.m
  3. 58 55
      iOSClient/Networking/CCNetworking.m

+ 1 - 1
iOSClient/CCGlobal.h

@@ -130,7 +130,7 @@ extern NSString *const urlBaseUploadDB;
 
 #define k_maxConcurrentOperation                         10
 #define k_maxConcurrentOperationDownloadUpload           10
-#define k_maxConcurrentOperationDownloadUploadBackground 2
+#define k_maxConcurrentOperationDownloadUploadBackground 1
 
 // Error
 #define k_CCErrorTaskNil                                -9999

+ 49 - 46
iOSClient/Main/CCMain.m

@@ -5786,75 +5786,78 @@
 // can i go to next viewcontroller
 - (void)performSegueDirectoryWithControlPasscode:(BOOL)controlPasscode
 {
-    NSString *nomeDir;
+    @synchronized (self) {
+        
+        NSString *nomeDir;
 
-    if(self.tableView.editing == NO && _metadata.errorPasscode == NO){
+        if(self.tableView.editing == NO && _metadata.errorPasscode == NO){
         
-        NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:_metadata.directoryID];
-        if (!serverUrl) return;
+            NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:_metadata.directoryID];
+            if (!serverUrl) return;
         
-        NSString *lockServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
+            NSString *lockServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
         
-        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", app.activeAccount, lockServerUrl]];
+            tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", app.activeAccount, 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) {
+            // 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) {
             
-            CCBKPasscode *viewController = [[CCBKPasscode alloc] initWithNibName:nil bundle:nil];
-            viewController.delegate = self;
-            viewController.fromType = CCBKPasscodeFromLockDirectory;
-            viewController.type = BKPasscodeViewControllerCheckPasscodeType;
-            viewController.inputViewTitlePassword = YES;
+                CCBKPasscode *viewController = [[CCBKPasscode alloc] initWithNibName:nil bundle:nil];
+                viewController.delegate = self;
+                viewController.fromType = CCBKPasscodeFromLockDirectory;
+                viewController.type = BKPasscodeViewControllerCheckPasscodeType;
+                viewController.inputViewTitlePassword = YES;
             
-            if ([CCUtility getSimplyBlockCode]) {
+                if ([CCUtility getSimplyBlockCode]) {
                 
-                viewController.passcodeStyle = BKPasscodeInputViewNumericPasscodeStyle;
-                viewController.passcodeInputView.maximumLength = 6;
+                    viewController.passcodeStyle = BKPasscodeInputViewNumericPasscodeStyle;
+                    viewController.passcodeInputView.maximumLength = 6;
                 
-            } else {
+                } else {
                 
-                viewController.passcodeStyle = BKPasscodeInputViewNormalPasscodeStyle;
-                viewController.passcodeInputView.maximumLength = 64;
-            }
+                    viewController.passcodeStyle = BKPasscodeInputViewNormalPasscodeStyle;
+                    viewController.passcodeInputView.maximumLength = 64;
+                }
 
-            BKTouchIDManager *touchIDManager = [[BKTouchIDManager alloc] initWithKeychainServiceName:k_serviceShareKeyChain];
-            touchIDManager.promptText = NSLocalizedString(@"_scan_fingerprint_", nil);
-            viewController.touchIDManager = touchIDManager;
+                BKTouchIDManager *touchIDManager = [[BKTouchIDManager alloc] initWithKeychainServiceName:k_serviceShareKeyChain];
+                touchIDManager.promptText = NSLocalizedString(@"_scan_fingerprint_", nil);
+                viewController.touchIDManager = touchIDManager;
             
-            viewController.title = NSLocalizedString(@"_folder_blocked_", nil); 
-            viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(passcodeViewCloseButtonPressed:)];
-            viewController.navigationItem.leftBarButtonItem.tintColor = [NCBrandColor sharedInstance].cryptocloud;
+                viewController.title = NSLocalizedString(@"_folder_blocked_", nil);
+                viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(passcodeViewCloseButtonPressed:)];
+                viewController.navigationItem.leftBarButtonItem.tintColor = [NCBrandColor sharedInstance].cryptocloud;
             
-            UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
-            [self presentViewController:navController animated:YES completion:nil];
+                UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
+                [self presentViewController:navController animated:YES completion:nil];
             
-            return;
-        }
+                return;
+            }
         
-        if (_metadata.cryptated) nomeDir = [_metadata.fileName substringToIndex:[_metadata.fileName length]-6];
-        else nomeDir = _metadata.fileName;
+            if (_metadata.cryptated) nomeDir = [_metadata.fileName substringToIndex:[_metadata.fileName length]-6];
+            else nomeDir = _metadata.fileName;
         
-        NSString *serverUrlPush = [CCUtility stringAppendServerUrl:serverUrl addFileName:nomeDir];
+            NSString *serverUrlPush = [CCUtility stringAppendServerUrl:serverUrl addFileName:nomeDir];
         
-        CCMain *viewController = [app.listMainVC objectForKey:serverUrlPush];
+            CCMain *viewController = [app.listMainVC objectForKey:serverUrlPush];
         
-        if (viewController.isViewLoaded == false || viewController == nil) {
+            if (viewController.isViewLoaded == false || viewController == nil) {
             
-            viewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CCMainVC"];
+                viewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CCMainVC"];
             
-            viewController.isFolderEncrypted = _metadata.cryptated;
-            viewController.serverUrl = serverUrlPush;
-            viewController.titleMain = _metadata.fileNamePrint;
-            viewController.textBackButton = _titleMain;
+                viewController.isFolderEncrypted = _metadata.cryptated;
+                viewController.serverUrl = serverUrlPush;
+                viewController.titleMain = _metadata.fileNamePrint;
+                viewController.textBackButton = _titleMain;
             
-            // save self
-            [app.listMainVC setObject:viewController forKey:serverUrlPush];
-        }
+                // save self
+                [app.listMainVC setObject:viewController forKey:serverUrlPush];
+            }
         
-        // OFF SearchBar
-        [viewController cancelSearchBar];
+            // OFF SearchBar
+            [viewController cancelSearchBar];
         
-        [self.navigationController pushViewController:viewController animated:YES];
+            [self.navigationController pushViewController:viewController animated:YES];
+        }
     }
 }
 

+ 58 - 55
iOSClient/Networking/CCNetworking.m

@@ -866,85 +866,88 @@
         return;
     }
     
-    PHAsset *assetResult = result[0];
-    PHAssetMediaType assetMediaType = assetResult.mediaType;
+    @synchronized (self) {
     
-    // IMAGE
-    if (assetMediaType == PHAssetMediaTypeImage) {
+        PHAsset *assetResult = result[0];
+        PHAssetMediaType assetMediaType = assetResult.mediaType;
+    
+        // IMAGE
+        if (assetMediaType == PHAssetMediaTypeImage) {
         
-        __block PHAsset *asset = result[0];
-        __block NSError *error = nil;
+            __block PHAsset *asset = result[0];
+            __block NSError *error = nil;
             
-        PHImageRequestOptions *options = [PHImageRequestOptions new];
-        options.networkAccessAllowed = YES; // iCloud
+            PHImageRequestOptions *options = [PHImageRequestOptions new];
+            options.networkAccessAllowed = YES; // iCloud
             
-        [[PHImageManager defaultManager] requestImageDataForAsset:asset options:options resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
+            [[PHImageManager defaultManager] requestImageDataForAsset:asset options:options resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
                 
-            [imageData writeToFile:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadataNet.fileName] options:NSDataWritingAtomic error:&error];
+                [imageData writeToFile:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadataNet.fileName] options:NSDataWritingAtomic error:&error];
                 
-            if (error) {
+                if (error) {
                 
-                dispatch_async(dispatch_get_main_queue(), ^{
-                    if ([delegate respondsToSelector:@selector(uploadFileFailure:fileID:serverUrl:selector:message:errorCode:)])
-                    [delegate uploadFileFailure:metadataNet fileID:nil serverUrl:metadataNet.serverUrl selector:metadataNet.selector message:[NSString stringWithFormat:@"Image request failed [%@]", error.description] errorCode:error.code];
-                });
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        if ([delegate respondsToSelector:@selector(uploadFileFailure:fileID:serverUrl:selector:message:errorCode:)])
+                            [delegate uploadFileFailure:metadataNet fileID:nil serverUrl:metadataNet.serverUrl selector:metadataNet.selector message:[NSString stringWithFormat:@"Image request failed [%@]", error.description] errorCode:error.code];
+                    });
                 
-            } else {
+                } else {
                     
-                // OOOOOK
-                dispatch_async(dispatch_get_main_queue(), ^{
-                    [self upload:metadataNet.fileName serverUrl:metadataNet.serverUrl cryptated:metadataNet.cryptated template:NO onlyPlist:NO fileNameTemplate:nil assetLocalIdentifier:metadataNet.assetLocalIdentifier session:metadataNet.session taskStatus:metadataNet.taskStatus selector:metadataNet.selector selectorPost:metadataNet.selectorPost errorCode:metadataNet.errorCode delegate:delegate];
-                });
-            }
-        }];
-    }
+                    // OOOOOK
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        [self upload:metadataNet.fileName serverUrl:metadataNet.serverUrl cryptated:metadataNet.cryptated template:NO onlyPlist:NO fileNameTemplate:nil assetLocalIdentifier:metadataNet.assetLocalIdentifier session:metadataNet.session taskStatus:metadataNet.taskStatus selector:metadataNet.selector selectorPost:metadataNet.selectorPost errorCode:metadataNet.errorCode delegate:delegate];
+                    });
+                }
+            }];
+        }
     
-    // VIDEO
-    if (assetMediaType == PHAssetMediaTypeVideo) {
+        // VIDEO
+        if (assetMediaType == PHAssetMediaTypeVideo) {
         
-        __block PHAsset *asset = result[0];
+            __block PHAsset *asset = result[0];
         
-        PHVideoRequestOptions *options = [PHVideoRequestOptions new];
-        options.networkAccessAllowed = YES; // iCloud
+            PHVideoRequestOptions *options = [PHVideoRequestOptions new];
+            options.networkAccessAllowed = YES; // iCloud
             
-        [[PHImageManager defaultManager] requestPlayerItemForVideo:asset options:options resultHandler:^(AVPlayerItem * _Nullable playerItem, NSDictionary * _Nullable info) {
+            [[PHImageManager defaultManager] requestPlayerItemForVideo:asset options:options resultHandler:^(AVPlayerItem * _Nullable playerItem, NSDictionary * _Nullable info) {
                 
-            if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadataNet.fileName]])
-                [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadataNet.fileName] error:nil];
+                if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadataNet.fileName]])
+                    [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadataNet.fileName] error:nil];
                 
-            AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:playerItem.asset presetName:AVAssetExportPresetHighestQuality];
+                AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:playerItem.asset presetName:AVAssetExportPresetHighestQuality];
                 
-            if (exportSession) {
+                if (exportSession) {
                     
-                exportSession.outputURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadataNet.fileName]];
-                exportSession.outputFileType = AVFileTypeQuickTimeMovie;
+                    exportSession.outputURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadataNet.fileName]];
+                    exportSession.outputFileType = AVFileTypeQuickTimeMovie;
                     
-                [exportSession exportAsynchronouslyWithCompletionHandler:^{
+                    [exportSession exportAsynchronouslyWithCompletionHandler:^{
                         
-                    if (AVAssetExportSessionStatusCompleted == exportSession.status) {
+                        if (AVAssetExportSessionStatusCompleted == exportSession.status) {
                             
-                        // OOOOOOK
-                        dispatch_async(dispatch_get_main_queue(), ^{
-                            [self upload:metadataNet.fileName serverUrl:metadataNet.serverUrl cryptated:metadataNet.cryptated template:NO onlyPlist:NO fileNameTemplate:nil assetLocalIdentifier:metadataNet.assetLocalIdentifier session:metadataNet.session taskStatus:metadataNet.taskStatus selector:metadataNet.selector selectorPost:metadataNet.selectorPost errorCode:metadataNet.errorCode delegate:delegate];
-                        });
+                            // OOOOOOK
+                            dispatch_async(dispatch_get_main_queue(), ^{
+                                [self upload:metadataNet.fileName serverUrl:metadataNet.serverUrl cryptated:metadataNet.cryptated template:NO onlyPlist:NO fileNameTemplate:nil assetLocalIdentifier:metadataNet.assetLocalIdentifier session:metadataNet.session taskStatus:metadataNet.taskStatus selector:metadataNet.selector selectorPost:metadataNet.selectorPost errorCode:metadataNet.errorCode delegate:delegate];
+                            });
                             
-                    } else  {
+                        } else  {
                         
-                        dispatch_async(dispatch_get_main_queue(), ^{
-                            if ([delegate respondsToSelector:@selector(uploadFileFailure:fileID:serverUrl:selector:message:errorCode:)])
-                                [delegate uploadFileFailure:metadataNet fileID:nil serverUrl:metadataNet.serverUrl selector:metadataNet.selector message:[NSString stringWithFormat:@"Video export failed [%@]", exportSession.error.description] errorCode:exportSession.error.code];
-                        });
-                    }
-                }];
+                            dispatch_async(dispatch_get_main_queue(), ^{
+                                if ([delegate respondsToSelector:@selector(uploadFileFailure:fileID:serverUrl:selector:message:errorCode:)])
+                                    [delegate uploadFileFailure:metadataNet fileID:nil serverUrl:metadataNet.serverUrl selector:metadataNet.selector message:[NSString stringWithFormat:@"Video export failed [%@]", exportSession.error.description] errorCode:exportSession.error.code];
+                            });
+                        }
+                    }];
                     
-            } else {
+                } else {
                 
-                dispatch_async(dispatch_get_main_queue(), ^{
-                    if ([delegate respondsToSelector:@selector(uploadFileFailure:fileID:serverUrl:selector:message:errorCode:)])
-                    [delegate uploadFileFailure:metadataNet fileID:nil serverUrl:metadataNet.serverUrl selector:metadataNet.selector message:@"Create Video session failed [Internal error]" errorCode:k_CCErrorInternalError];
-                });
-            }
-        }];
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        if ([delegate respondsToSelector:@selector(uploadFileFailure:fileID:serverUrl:selector:message:errorCode:)])
+                            [delegate uploadFileFailure:metadataNet fileID:nil serverUrl:metadataNet.serverUrl selector:metadataNet.selector message:@"Create Video session failed [Internal error]" errorCode:k_CCErrorInternalError];
+                    });
+                }
+            }];
+        }
     }
 }