marinofaggiana 6 years ago
parent
commit
15bac50515

+ 1 - 0
iOSClient/CCGlobal.h

@@ -165,6 +165,7 @@
 #define k_metadataStatusInUpload                        7
 #define k_metadataStatusUploading                       8
 #define k_metadataStatusUploadError                     9
+#define k_metadataStatusUploadForcedStart               10
 
 // Timer
 #define k_timerProcessAutoDownloadUpload                5

+ 1 - 1
iOSClient/Favorites/CCFavorites.m

@@ -293,7 +293,7 @@
             
             tableMetadata *metadata = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", metadataSection.fileID]];
             if (metadata)
-                [[NCMainCommon sharedInstance] cancelTransferMetadata:metadata reloadDatasource:true];
+                [[NCMainCommon sharedInstance] cancelTransferMetadata:metadata reloadDatasource:true uploadStatusForcedStart:false];
         }
     }
 }

+ 1 - 1
iOSClient/Main/CCMain.m

@@ -1851,7 +1851,7 @@
             
             tableMetadata *metadata = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", metadataSection.fileID]];
             if (metadata)
-                [[NCMainCommon sharedInstance] cancelTransferMetadata:metadata reloadDatasource:true];
+                [[NCMainCommon sharedInstance] cancelTransferMetadata:metadata reloadDatasource:true uploadStatusForcedStart:false];
         }
     }
 }

+ 7 - 2
iOSClient/Main/NCMainCommon.swift

@@ -97,9 +97,10 @@ class NCMainCommon: NSObject, PhotoEditorDelegate, NCAudioRecorderViewController
         }
     }
     
-    @objc func cancelTransferMetadata(_ metadata: tableMetadata, reloadDatasource: Bool) {
+    @objc func cancelTransferMetadata(_ metadata: tableMetadata, reloadDatasource: Bool, uploadStatusForcedStart: Bool) {
         
         var actionReloadDatasource = k_action_NULL
+        var metadata = metadata
         
         if metadata.session.count == 0 {
             return
@@ -156,6 +157,10 @@ class NCMainCommon: NSObject, PhotoEditorDelegate, NCAudioRecorderViewController
             if metadata.session.count > 0 && metadata.session.contains("upload") {
                 for task in uploadTasks {
                     if task.taskIdentifier == metadata.sessionTaskIdentifier {
+                        if uploadStatusForcedStart {
+                            metadata.status = Int(k_metadataStatusUploadForcedStart)
+                            metadata = NCManageDatabase.sharedInstance.addMetadata(metadata) ?? metadata
+                        }
                         task.cancel()
                         cancel = true
                     }
@@ -199,7 +204,7 @@ class NCMainCommon: NSObject, PhotoEditorDelegate, NCAudioRecorderViewController
                     
                     // Cancel Task
                     if metadata.status == k_metadataStatusDownloading || metadata.status == k_metadataStatusUploading {
-                        self.cancelTransferMetadata(metadata, reloadDatasource: false)
+                        self.cancelTransferMetadata(metadata, reloadDatasource: false, uploadStatusForcedStart: false)
                     }
                 }
             }

+ 21 - 4
iOSClient/Networking/CCNetworking.m

@@ -1060,16 +1060,33 @@
         // Mark error only if not Cancelled Task
         if (errorCode == kCFURLErrorCancelled)  {
             
-            [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryProviderStorageFileID:tempFileID] error:nil];
-            [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", tempFileID]];
+            if (metadata.status == k_metadataStatusUploadForcedStart) {
+                
+                errorCode = 0;
+                
+                metadata.session = k_upload_session;
+                metadata.sessionError = @"";
+                metadata.sessionTaskIdentifier = 0;
+                metadata.status = k_metadataStatusInUpload;
+                metadata = [[NCManageDatabase sharedInstance] addMetadata:metadata];
 
+                [[CCNetworking sharedNetworking] uploadFile:metadata taskStatus:k_taskStatusResume];
+                
+            } else {
+                
+                [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryProviderStorageFileID:tempFileID] error:nil];
+                [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", tempFileID]];
+                
+                errorMessage = [CCError manageErrorKCF:errorCode withNumberError:YES];
+            }
+            
         } else {
 
             [[NCManageDatabase sharedInstance] setMetadataSession:nil sessionError:[CCError manageErrorKCF:errorCode withNumberError:NO] sessionSelector:nil sessionTaskIdentifier:k_taskIdentifierDone status:k_metadataStatusUploadError predicate:[NSPredicate predicateWithFormat:@"fileID == %@", tempFileID]];
+            
+            errorMessage = [CCError manageErrorKCF:errorCode withNumberError:YES];
         }
         
-        errorMessage = [CCError manageErrorKCF:errorCode withNumberError:YES];
-        
     } else {
             
         // Replace Metadata

+ 1 - 2
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -98,6 +98,7 @@
 "_no_albums_"               = "No albums";
 "_denied_album_"            = "This app does not have access to \"Photos\", you can enable access in Privacy Settings";
 "_denied_camera_"           = "This app does not have access to \"Camera\", you can enable access in Privacy Settings";
+"_start_"                   = "Start";
 
 // App
 
@@ -189,8 +190,6 @@
 "_favorite_offline_"            = "Favorites available offline";
 "_favorite_offline_footer_"     = "Making all favorites available offline may take a while and use a lot of memory while doing it.";
 "_advanced_"                    = "Advanced";
-"Skip"                          = "Skip";
-"Start"                         = "Start";
 "_disable_files_app_"           = "Disable Files App integration";
 "_disable_files_app_footer_"    = "Do not permit the access of files across the Apple Files application";
 

+ 6 - 7
iOSClient/Transfers/CCTransfers.m

@@ -227,7 +227,7 @@
         tableMetadata *metadata = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID = %@", fileID]];
         
         if (metadata)
-            [[NCMainCommon sharedInstance] cancelTransferMetadata:metadata reloadDatasource:true];
+            [[NCMainCommon sharedInstance] cancelTransferMetadata:metadata reloadDatasource:true uploadStatusForcedStart:false];
     }
 }
 
@@ -256,13 +256,12 @@
 - (void)startTask:(id)sender
 {
     if (metadataForRecognizer.status == k_metadataStatusUploading) {
-        
+        [[NCMainCommon sharedInstance] cancelTransferMetadata:metadataForRecognizer reloadDatasource:false uploadStatusForcedStart:true];
+    } else {
+        metadataForRecognizer.status = k_metadataStatusInUpload;
+        metadataForRecognizer.session = k_upload_session;
+        [[CCNetworking sharedNetworking] uploadFile:[[NCManageDatabase sharedInstance] addMetadata:metadataForRecognizer] taskStatus:k_taskStatusResume];
     }
-    
-    metadataForRecognizer.status = k_metadataStatusInUpload;
-    metadataForRecognizer.session = k_upload_session;
-    
-    [[CCNetworking sharedNetworking] uploadFile:[[NCManageDatabase sharedInstance] addMetadata:metadataForRecognizer] taskStatus:k_taskStatusResume];
 }
 
 #pragma --------------------------------------------------------------------------------------------