Marino Faggiana 6 vuotta sitten
vanhempi
commit
f8a1e39bf5
2 muutettua tiedostoa jossa 9 lisäystä ja 29 poistoa
  1. 0 1
      iOSClient/Networking/CCNetworking.h
  2. 9 28
      iOSClient/Networking/CCNetworking.m

+ 0 - 1
iOSClient/Networking/CCNetworking.h

@@ -50,7 +50,6 @@
 // Sessions
 - (OCCommunication *)sharedOCCommunication;
 - (OCCommunication *)sharedOCCommunicationExtensionDownload:(NSString *)identifier;
-- (OCCommunication *)sharedOCCommunicationExtensionUpload:(NSString *)identifier;
 
 - (NSURLSession *)getSessionfromSessionDescription:(NSString *)sessionDescription;
 

+ 9 - 28
iOSClient/Networking/CCNetworking.m

@@ -313,34 +313,6 @@
     return sharedOCCommunicationExtensionDownload;
 }
 
-- (OCCommunication *)sharedOCCommunicationExtensionUpload:(NSString *)identifier
-{
-    static OCCommunication *sharedOCCommunicationExtensionUpload = nil;
-    static NSString *extensionUploadIdentifier =k_upload_session_extension;
-    
-    if (sharedOCCommunicationExtensionUpload == nil || [extensionUploadIdentifier isEqualToString:identifier] == false)
-    {
-        NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];
-        config.sharedContainerIdentifier = [NCBrandOptions sharedInstance].capabilitiesGroups;
-        config.HTTPMaximumConnectionsPerHost = 1;
-        config.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
-        config.timeoutIntervalForRequest = k_timeout_upload;
-        config.sessionSendsLaunchEvents = YES;
-        config.allowsCellularAccess = YES;
-        
-        OCURLSessionManager *sessionManager = [[OCURLSessionManager alloc] initWithSessionConfiguration:config];
-        [sessionManager.operationQueue setMaxConcurrentOperationCount:1];
-        [sessionManager setSessionDidReceiveAuthenticationChallengeBlock:^NSURLSessionAuthChallengeDisposition (NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential) {
-            return NSURLSessionAuthChallengePerformDefaultHandling;
-        }];
-        
-        extensionUploadIdentifier = identifier;
-        sharedOCCommunicationExtensionUpload = [[OCCommunication alloc] initWithUploadSessionManager:sessionManager andDownloadSessionManager:nil andNetworkSessionManager:nil];
-    }
-    
-    return sharedOCCommunicationExtensionUpload;
-}
-
 - (NSURLSession *)getSessionfromSessionDescription:(NSString *)sessionDescription
 {
     if ([sessionDescription isEqualToString:k_download_session]) return [self sessionDownload];
@@ -350,6 +322,7 @@
     if ([sessionDescription isEqualToString:k_upload_session]) return [self sessionUpload];
     if ([sessionDescription isEqualToString:k_upload_session_wwan]) return [self sessionWWanUpload];
     if ([sessionDescription isEqualToString:k_upload_session_foreground]) return [self sessionUploadForeground];
+    if ([sessionDescription isEqualToString:k_upload_session_extension]) return [self sessionUploadExtension];
 
     return nil;
 }
@@ -363,6 +336,7 @@
     [[self sessionUpload] invalidateAndCancel];
     [[self sessionWWanUpload] invalidateAndCancel];
     [[self sessionUploadForeground] invalidateAndCancel];
+    [[self sessionUploadExtension] invalidateAndCancel];
 }
 
 - (void)settingSessionsDownload:(BOOL)download upload:(BOOL)upload taskStatus:(NSInteger)taskStatus activeAccount:(NSString *)activeAccount activeUser:(NSString *)activeUser activeUrl:(NSString *)activeUrl
@@ -420,6 +394,13 @@
                 else if (taskStatus == k_taskStatusResume) [task resume];
         }];
         
+        [[self sessionUploadExtension] getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
+            for (NSURLSessionTask *task in uploadTasks)
+                if (taskStatus == k_taskStatusCancel) [task cancel];
+                else if (taskStatus == k_taskStatusSuspend) [task suspend];
+                else if (taskStatus == k_taskStatusResume) [task resume];
+        }];
+        
         if (taskStatus == k_taskStatusCancel) {
             dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
                 [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"session CONTAINS 'upload'"] clearDateReadDirectoryID:nil];