Browse Source

fix autodetect rename file e2e

Marino Faggiana 7 years ago
parent
commit
3b1f96e015
2 changed files with 27 additions and 28 deletions
  1. 21 14
      iOSClient/Main/CCMain.m
  2. 6 14
      iOSClient/Security/NCEntoToEndInterface.swift

+ 21 - 14
iOSClient/Main/CCMain.m

@@ -90,10 +90,9 @@
     NSString *_autoUploadFileName;
     NSString *_autoUploadDirectory;
     
+    // Folder
     BOOL _loadingFolder;
-    
-    // E2E
-    BOOL _folderEncrypted;
+    tableMetadata *_metadataFolder;
 }
 @end
 
@@ -226,7 +225,7 @@
     // Plus Button
     [app plusButtonVisibile:true];
     
-    //
+    // Search Bar
     if ([CCUtility isFolderEncrypted:self.serverUrl account:app.activeAccount]) {
         [self searchEnabled:NO];
     } else {
@@ -1648,6 +1647,11 @@
         
         if ([metadata.etag isEqualToString:directory.etag] == NO) {
             [self readFolder:metadataNet.serverUrl];
+        } else {
+            
+            // E2E Is encrypted folder get metadata
+            if (_metadataFolder.e2eEncrypted && [CCUtility isEndToEndEnabled:app.activeAccount])
+                [app.endToEndInterface getEndToEndMetadata:_metadataFolder.fileName fileID:_metadataFolder.fileID serverUrl:self.serverUrl];
         }
     }
 }
@@ -1704,6 +1708,9 @@
     if (![record.account isEqualToString:metadataNet.account])
         return;
     
+    // save metadataFolder
+    _metadataFolder = metadataFolder;
+    
     // save father e update permission
     if(!_isSearchMode && metadataFolder)
         _fatherPermission = metadataFolder.permissions;
@@ -1781,11 +1788,11 @@
     }
     
     // E2E Is encrypted folder get metadata
-    if (metadataFolder.e2eEncrypted == true) {
+    if (_metadataFolder.e2eEncrypted) {
         
         if ([CCUtility isEndToEndEnabled:app.activeAccount]) {
             
-            [app.endToEndInterface getEndToEndMetadata:metadataFolder];
+            [app.endToEndInterface getEndToEndMetadata:_metadataFolder.fileName fileID:_metadataFolder.fileID serverUrl:self.serverUrl];
             
         } else {
             
@@ -4290,10 +4297,15 @@
     if ([CCUtility isFolderEncrypted:self.serverUrl account:app.activeAccount])
         _dateReadDataSource = nil;
     
+    // current directoryID
+    NSString *directoryID = [[NCManageDatabase sharedInstance] getDirectoryID:serverUrl];
+
     // Controllo data lettura Data Source
-    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", app.activeAccount, serverUrl]];
+    tableDirectory *tableDirectory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", app.activeAccount, serverUrl]];
+    // Get MetadataFolder
+    _metadataFolder = [[NCManageDatabase sharedInstance] getMetadataWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND fileID = %@", app.activeAccount, tableDirectory.fileID]];
     
-    NSDate *dateDateRecordDirectory = directory.dateReadDirectory;
+    NSDate *dateDateRecordDirectory = tableDirectory.dateReadDirectory;
     
     if ([dateDateRecordDirectory compare:_dateReadDataSource] == NSOrderedDescending || dateDateRecordDirectory == nil || _dateReadDataSource == nil) {
         
@@ -4306,8 +4318,6 @@
         NSString *sorted = _directoryOrder;
         if ([sorted isEqualToString:@"fileName"])
             sorted = @"fileName";
-    
-        NSString *directoryID = [[NCManageDatabase sharedInstance] getDirectoryID:serverUrl];
         
         if (directoryID) {
         
@@ -4327,9 +4337,6 @@
          NSLog(@"[LOG] [OPTIMIZATION] Rebuild Data Source File : %@ - %@", _serverUrl, _dateReadDataSource);
     }
     
-    // is This a Folder Encrypted ?
-    _folderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:app.activeAccount];
-    
     [self tableViewReloadData];
 }
 
@@ -4746,7 +4753,7 @@
     // E2E Image Status Encrypted
     // ----------------------------------------------------------------------------------------------------------
     
-    if (_folderEncrypted && !metadata.directory) {
+    if (_metadataFolder.e2eEncrypted && !metadata.directory) {
         tableE2eEncryption *tableE2eEncryption = [[NCManageDatabase sharedInstance] getE2eEncryptionWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND fileNameIdentifier = %@", app.activeAccount, metadata.fileName]];
         if (tableE2eEncryption)
             cell.status.image = [UIImage imageNamed:@"encrypted"];

+ 6 - 14
iOSClient/Security/NCEntoToEndInterface.swift

@@ -369,17 +369,15 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             return
         }
         
-        let serverUrl = metadataNet.serverUrl + "/" + metadataNet.fileName
-        
         // Decode metadata JSON
-        if NCEndToEndMetadata.sharedInstance.decoderMetadata(metadataNet.encryptedMetadata, privateKey: privateKey, serverUrl: serverUrl, account: appDelegate.activeAccount, url: appDelegate.activeUrl) == false {
+        if NCEndToEndMetadata.sharedInstance.decoderMetadata(metadataNet.encryptedMetadata, privateKey: privateKey, serverUrl: metadataNet.serverUrl, account: appDelegate.activeAccount, url: appDelegate.activeUrl) == false {
         
             appDelegate.messageNotification("E2E decode metadata", description: "Serious internal error in decoding metadata", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
             return
         }
         
         // Reload data source
-        main.reloadDatasource(serverUrl)
+        main.reloadDatasource(metadataNet.serverUrl)
     }
     
     func getEndToEndMetadataFailure(_ metadataNet: CCMetadataNet!, message: String!, errorCode: Int) {
@@ -400,19 +398,13 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
         }
     }
     
-    @objc func getEndToEndMetadata(_ metadata: tableMetadata) {
+    @objc func getEndToEndMetadata(_ fileName: String, fileID: String, serverUrl: String) {
         
         let metadataNet: CCMetadataNet = CCMetadataNet.init(account: appDelegate.activeAccount)
         
-        metadataNet.action = actionGetEndToEndMetadata;
-        metadataNet.fileID = metadata.fileID;
-        metadataNet.fileName = metadata.fileName;
-        
-        guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else {
-            
-            appDelegate.messageNotification("E2E Get metadata", description: "Serious internal error: ServerURL not found", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
-            return
-        }
+        metadataNet.action = actionGetEndToEndMetadata
+        metadataNet.fileID = fileID
+        metadataNet.fileName = fileName
         metadataNet.serverUrl = serverUrl
         
         appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)