Browse Source

Merge pull request #1747 from nextcloud/fix/conflict

Fix/conflict
Henry 3 years ago
parent
commit
8379501852
1 changed files with 36 additions and 71 deletions
  1. 36 71
      iOSClient/Main/Create cloud/NCCreateFormUploadConflict.swift

+ 36 - 71
iOSClient/Main/Create cloud/NCCreateFormUploadConflict.swift

@@ -156,66 +156,25 @@ extension NCCreateFormUploadConflictDelegate {
         
         let conflictAlert = UIAlertController(title: tile, message: "", preferredStyle: .alert)
 
-        conflictAlert.addAction(UIAlertAction(title: titleReplace, style: .default, handler: { (_) in
-            
+        // REPLACE
+        conflictAlert.addAction(UIAlertAction(title: titleReplace, style: .default, handler: { action in
+                        
             for metadata in self.metadatasUploadInConflict {
                 self.metadatasNOConflict.append(metadata)
             }
             
-            self.metadatasNOConflict.append(contentsOf: self.metadatasMOV)
-            
-            if self.delegate != nil {
-                
-                self.delegate?.dismissCreateFormUploadConflict(metadatas: self.metadatasNOConflict)
-                
-            } else {
-                
-                self.appDelegate.networkingProcessUpload?.createProcessUploads(metadatas: self.metadatasNOConflict)
-            }
-            
-            self.dismiss(animated: true, completion: nil)
+            self.buttonContinueTouch(action)
         }))
         
-        conflictAlert.addAction(UIAlertAction(title: titleKeep, style: .default, handler: { (_) in
+        // KEEP BOTH
+        conflictAlert.addAction(UIAlertAction(title: titleKeep, style: .default, handler: { action in
             
             for metadata in self.metadatasUploadInConflict {
-                
-                let fileNameMOV = (metadata.fileNameView as NSString).deletingPathExtension + ".mov"
-                let newFileName = NCUtilityFileSystem.shared.createFileName(metadata.fileNameView, serverUrl: metadata.serverUrl, account: metadata.account)
-                
-                metadata.ocId = UUID().uuidString
-                metadata.fileName = newFileName
-                metadata.fileNameView = newFileName
-                
-                self.metadatasNOConflict.append(metadata)
-                
-                // MOV
-                for metadataMOV in self.metadatasMOV {
-                    
-                    if metadataMOV.fileName == fileNameMOV {
-                        
-                        let oldPath = CCUtility.getDirectoryProviderStorageOcId(metadataMOV.ocId, fileNameView: metadataMOV.fileNameView)
-                        let newFileNameMOV = (newFileName as NSString).deletingPathExtension + ".mov"
-                        
-                        metadataMOV.ocId = UUID().uuidString
-                        metadataMOV.fileName = newFileNameMOV
-                        metadataMOV.fileNameView = newFileNameMOV
-                        
-                        let newPath = CCUtility.getDirectoryProviderStorageOcId(metadataMOV.ocId, fileNameView: newFileNameMOV)
-                        CCUtility.moveFile(atPath: oldPath, toPath: newPath)
-                        
-                        break
-                    }
-                }
-            }
-            
-            if self.delegate != nil {
-                self.delegate?.dismissCreateFormUploadConflict(metadatas: self.metadatasNOConflict)
-            } else {
-                self.appDelegate.networkingProcessUpload?.createProcessUploads(metadatas: self.metadatasNOConflict)
+                self.metadatasConflictNewFiles.append(metadata.ocId)
+                self.metadatasConflictAlreadyExistingFiles.append(metadata.ocId)
             }
             
-            self.dismiss(animated: true, completion: nil)
+            self.buttonContinueTouch(action)
         }))
         
         conflictAlert.addAction(UIAlertAction(title: NSLocalizedString("_cancel_keep_existing_action_title_", comment: ""), style: .cancel, handler: { (_) in
@@ -286,34 +245,43 @@ extension NCCreateFormUploadConflictDelegate {
         
         for metadata in metadatasUploadInConflict {
             
-            // new filename + num
+            // keep both
             if metadatasConflictNewFiles.contains(metadata.ocId) && metadatasConflictAlreadyExistingFiles.contains(metadata.ocId) {
             
                 let fileNameMOV = (metadata.fileNameView as NSString).deletingPathExtension + ".mov"
+                var fileName = metadata.fileNameView
+                let fileNameExtension = (fileName as NSString).pathExtension.lowercased()
+                let fileNameWithoutExtension = (fileName as NSString).deletingPathExtension
+                if fileNameExtension == "heic" && CCUtility.getFormatCompatibility() {
+                    fileName = fileNameWithoutExtension + ".jpg"
+                }
+                let oldPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)
+                let newFileName = NCUtilityFileSystem.shared.createFileName(fileName, serverUrl: metadata.serverUrl, account: metadata.account)
                 
-                let newFileName = NCUtilityFileSystem.shared.createFileName(metadata.fileNameView, serverUrl: metadata.serverUrl, account: metadata.account)
                 metadata.ocId = UUID().uuidString
                 metadata.fileName = newFileName
                 metadata.fileNameView = newFileName
                 
+                // This is not an asset - [file]
+                if metadata.assetLocalIdentifier == "" {
+                    let newPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: newFileName)
+                    CCUtility.moveFile(atPath: oldPath, toPath: newPath)
+                }
+                
                 metadatasNOConflict.append(metadata)
                 
-                // MOV
-                for metadataMOV in metadatasMOV {
-                    if metadataMOV.fileName == fileNameMOV {
-                        
-                        let oldPath = CCUtility.getDirectoryProviderStorageOcId(metadataMOV.ocId, fileNameView: metadataMOV.fileNameView)
-                        let newFileNameMOV = (newFileName as NSString).deletingPathExtension + ".mov"
-                        
-                        metadataMOV.ocId = UUID().uuidString
-                        metadataMOV.fileName = newFileNameMOV
-                        metadataMOV.fileNameView = newFileNameMOV
-                        
-                        let newPath = CCUtility.getDirectoryProviderStorageOcId(metadataMOV.ocId, fileNameView: newFileNameMOV)
-                        CCUtility.moveFile(atPath: oldPath, toPath: newPath)
-                        
-                        break
-                    }
+                // MOV (Live Photo)
+                if let metadataMOV = self.metadatasMOV.first(where: { $0.fileName == fileNameMOV }) {
+                    
+                    let oldPath = CCUtility.getDirectoryProviderStorageOcId(metadataMOV.ocId, fileNameView: metadataMOV.fileNameView)
+                    let newFileNameMOV = (newFileName as NSString).deletingPathExtension + ".mov"
+                    
+                    metadataMOV.ocId = UUID().uuidString
+                    metadataMOV.fileName = newFileNameMOV
+                    metadataMOV.fileNameView = newFileNameMOV
+                    
+                    let newPath = CCUtility.getDirectoryProviderStorageOcId(metadataMOV.ocId, fileNameView: newFileNameMOV)
+                    CCUtility.moveFile(atPath: oldPath, toPath: newPath)
                 }
                 
             // overwrite
@@ -343,11 +311,8 @@ extension NCCreateFormUploadConflictDelegate {
         metadatasNOConflict.append(contentsOf: metadatasMOV)
         
         if delegate != nil {
-            
             delegate?.dismissCreateFormUploadConflict(metadatas: metadatasNOConflict)
-            
         } else {
-            
             appDelegate.networkingProcessUpload?.createProcessUploads(metadatas: metadatasNOConflict)
         }