Explorar o código

send e2e metadata

Marino Faggiana %!s(int64=7) %!d(string=hai) anos
pai
achega
1a619ffcb4
Modificáronse 2 ficheiros con 41 adicións e 18 borrados
  1. 0 2
      iOSClient/Main/CCMain.m
  2. 41 16
      iOSClient/Networking/CCNetworking.m

+ 0 - 2
iOSClient/Main/CCMain.m

@@ -4032,7 +4032,6 @@
                                     }];
         }
         
-#ifdef DEBUG
         if ([CCUtility isEndToEndEnabled:app.activeAccount] && !_metadata.e2eEncrypted) {
             
             [actionSheet addButtonWithTitle:NSLocalizedString(@"_e2e_set_folder_encrypted_", nil)
@@ -4074,7 +4073,6 @@
                                         });
                                     }];
         }
-#endif
         
         [actionSheet show];
     }

+ 41 - 16
iOSClient/Networking/CCNetworking.m

@@ -1127,26 +1127,40 @@
                 
                 [[NCManageDatabase sharedInstance] setMetadataSession:session sessionError:@"Serious internal error in encoding metadata" sessionSelector:nil sessionSelectorPost:nil sessionTaskIdentifier:k_taskIdentifierError predicate:[NSPredicate predicateWithFormat:@"sessionID = %@ AND account = %@", sessionID, _activeAccount]];
                 
-                NSLog(@"[LOG] Upload Serious internal error in encoding metadata - %@", fileName);
+                return;
             }
         }
         
-        // *** IS e2eMetadataJSON ---> SEND METADATA ***
-        if (e2eMetadataJSON) {
-        }
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
+
+            // *** IS e2eMetadataJSON ---> SEND METADATA ***
+            if (e2eMetadataJSON) {
+                if ([self SendEndToEndMetadata:e2eMetadataJSON serverUrl:serverUrl] == false) {
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        [[NCManageDatabase sharedInstance] addActivityClient:fileName fileID:assetLocalIdentifier action:k_activityDebugActionUpload selector:selector note:@"Serious internal error in encoding metadata" type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:_activeUrl];
+                        
+                        [[NCManageDatabase sharedInstance] setMetadataSession:session sessionError:@"Error to send metadata" sessionSelector:nil sessionSelectorPost:nil sessionTaskIdentifier:k_taskIdentifierError predicate:[NSPredicate predicateWithFormat:@"sessionID = %@ AND account = %@", sessionID, _activeAccount]];
+                        
+                        return;
+                    });
+                }
+            }
         
-        [[NCManageDatabase sharedInstance] setMetadataSession:session sessionError:@"" sessionSelector:nil sessionSelectorPost:nil sessionTaskIdentifier:uploadTask.taskIdentifier predicate:[NSPredicate predicateWithFormat:@"sessionID = %@ AND account = %@", sessionID, _activeAccount]];
+            dispatch_async(dispatch_get_main_queue(), ^{
+
+                [[NCManageDatabase sharedInstance] setMetadataSession:session sessionError:@"" sessionSelector:nil sessionSelectorPost:nil sessionTaskIdentifier:uploadTask.taskIdentifier predicate:[NSPredicate predicateWithFormat:@"sessionID = %@ AND account = %@", sessionID, _activeAccount]];
         
-        // OOOOOOKKKK remove record on Table Auto Upload
-        [[NCManageDatabase sharedInstance] deleteQueueUploadWithAssetLocalIdentifier:assetLocalIdentifier selector:selector];
+                // OOOOOOKKKK remove record on Table Auto Upload
+                [[NCManageDatabase sharedInstance] deleteQueueUploadWithAssetLocalIdentifier:assetLocalIdentifier selector:selector];
         
-        // Manage uploadTask cancel,suspend,resume
-        if (taskStatus == k_taskStatusCancel) [uploadTask cancel];
-        else if (taskStatus == k_taskStatusSuspend) [uploadTask suspend];
-        else if (taskStatus == k_taskStatusResume) [uploadTask resume];
+                // Manage uploadTask cancel,suspend,resume
+                if (taskStatus == k_taskStatusCancel) [uploadTask cancel];
+                else if (taskStatus == k_taskStatusSuspend) [uploadTask suspend];
+                else if (taskStatus == k_taskStatusResume) [uploadTask resume];
         
-        NSLog(@"[LOG] Upload file %@ TaskIdentifier %lu", fileName, (unsigned long)uploadTask.taskIdentifier);
-            
+                NSLog(@"[LOG] Upload file %@ TaskIdentifier %lu", fileName, (unsigned long)uploadTask.taskIdentifier);
+            });
+        });
     }
 
     // refresh main
@@ -1614,8 +1628,9 @@
     tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", _activeAccount, serverUrl]];
     
     NSString *e2eTokenLock = directory.e2eTokenLock;
+    NSError *error;
     
-    NSError *error = [[NCNetworkingSync sharedManager] lockEndToEndFolderEncrypted:_activeUser userID:_activeUserID password:_activePassword url:_activeUrl fileID:directory.fileID token:&e2eTokenLock];
+    error = [[NCNetworkingSync sharedManager] lockEndToEndFolderEncrypted:_activeUser userID:_activeUserID password:_activePassword url:_activeUrl fileID:directory.fileID token:&e2eTokenLock];
     if (error) {
         return false;
     }
@@ -1623,11 +1638,21 @@
     [[NCManageDatabase sharedInstance] setDirectoryE2ETokenLockWithServerUrl:serverUrl token:e2eTokenLock];
     
     if (directory.e2eMetadataJSON.length > 0) {
-        //[[NCNetworkingSync sharedManager] 
+        error = [[NCNetworkingSync sharedManager] updateEndToEndMetadata:_activeUser userID:_activeUserID password:_activePassword url:_activeUrl fileID:directory.fileID metadata:metadata];
     } else {
-        
+        error = [[NCNetworkingSync sharedManager] storeEndToEndMetadata:_activeUser userID:_activeUserID password:_activePassword url:_activeUrl fileID:directory.fileID metadata:metadata];
+    }
+    if (error) {
+        return false;
+    }
+    
+    error = [[NCNetworkingSync sharedManager] unlockEndToEndFolderEncrypted:_activeUser userID:_activeUserID password:_activePassword url:_activeUrl fileID:directory.fileID token:e2eTokenLock];
+    if (error) {
+        return false;
     }
     
+    [[NCManageDatabase sharedInstance] setDirectoryE2ETokenLockWithServerUrl:serverUrl token:@""];
+
     return true;
 }