瀏覽代碼

rename file e2e

Marino Faggiana 7 年之前
父節點
當前提交
dcf4d38bdd
共有 3 個文件被更改,包括 57 次插入0 次删除
  1. 31 0
      iOSClient/Database/NCManageDatabase.swift
  2. 23 0
      iOSClient/Main/CCMain.m
  3. 3 0
      iOSClient/Networking/CCNetworking.h

+ 31 - 0
iOSClient/Database/NCManageDatabase.swift

@@ -1117,6 +1117,37 @@ class NCManageDatabase: NSObject {
         }
     }
     
+    @objc func renameFileE2eEncryption(serverUrl: String, fileNameIdentifier: String, newFileName: String, newFileNamePath: String) -> Bool {
+        
+        guard let tableAccount = self.getAccountActive() else {
+            return false
+        }
+        
+        let realm = try! Realm()
+        
+        var update = false
+        
+        do {
+            try realm.write {
+                
+                guard let result = realm.objects(tableE2eEncryption.self).filter("account = %@ AND serverUrl = %@ AND fileNameIdentifier = %@", tableAccount.account, serverUrl, fileNameIdentifier).first else {
+                    realm.cancelWrite()
+                    return
+                }
+                
+                result.fileName = newFileName
+                result.fileNamePath = newFileNamePath
+                
+                update = true
+            }
+        } catch let error {
+            print("[LOG] Could not write to database: ", error)
+            return false
+        }
+        
+        return update
+    }
+    
     //MARK: -
     //MARK: Table External Sites
     

+ 23 - 0
iOSClient/Main/CCMain.m

@@ -2099,10 +2099,33 @@
     
     if ([CCUtility isFolderEncrypted:self.serverUrl account:app.activeAccount]) {
         
+        // Prima rinominare nella tabella tableE2eEncryption
+        if ([[NCManageDatabase sharedInstance] renameFileE2eEncryptionWithServerUrl:self.serverUrl fileNameIdentifier:metadata.fileName newFileName:fileName newFileNamePath:[CCUtility returnFileNamePathFromFileName:fileName serverUrl:self.serverUrl activeUrl:app.activeUrl]]) {
+            
+            NSArray *tableE2eEncryption = [[NCManageDatabase sharedInstance] getE2eEncryptionsWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", app.activeAccount, self.serverUrl]];
+            NSString *e2eMetadataJSON = [[NCEndToEndMetadata sharedInstance] encoderMetadata:tableE2eEncryption privateKey:[CCUtility getEndToEndPrivateKey:app.activeAccount] serverUrl:self.serverUrl];
         
+            if (e2eMetadataJSON) {
+                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
+                
+                    BOOL result = [[CCNetworking sharedNetworking] SendEndToEndMetadata:e2eMetadataJSON serverUrl:self.serverUrl];
+                    if (!result) {
+                        // Restore preview fileName on DB
+                        (void)[[NCManageDatabase sharedInstance] renameFileE2eEncryptionWithServerUrl:self.serverUrl fileNameIdentifier:metadata.fileName newFileName:metadata.fileNameView newFileNamePath:[CCUtility returnFileNamePathFromFileName:metadata.fileNameView serverUrl:self.serverUrl activeUrl:app.activeUrl]];
+                        
+                        [app messageNotification:@"_error_" description:@"Error to send metadata" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:0];
+                    }
+                });
+            } else {
+                [app messageNotification:@"_error_" description:@"Serious internal error to encoding metadata" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:0];
+            }
+        } else {
+            [app messageNotification:@"_error_" description:@"Error file not found" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:0];
+        }
         
     } else  {
         
+        // Plain
         [[CCActions sharedInstance] renameFileOrFolder:metadata fileName:fileName delegate:self];
     }
 }

+ 3 - 0
iOSClient/Networking/CCNetworking.h

@@ -70,6 +70,9 @@
 - (void)verifyUploadInProgress;
 - (void)verifyUploadInErrorOrWait;
 
+// E2E Encryption
+- (BOOL)SendEndToEndMetadata:(NSString *)metadata serverUrl:(NSString *)serverUrl;
+
 @end
 
 @protocol CCNetworkingDelegate <NSObject>