Эх сурвалжийг харах

https://github.com/nextcloud/ios/pull/1672

marinofaggiana 3 жил өмнө
parent
commit
efdfbc411a

+ 109 - 4
iOSClient/Main/Create cloud/NCCreateFormUploadConflict.swift

@@ -49,9 +49,7 @@ extension NCCreateFormUploadConflictDelegate {
     @IBOutlet weak var viewButton: UIView!
     @IBOutlet weak var buttonCancel: UIButton!
     @IBOutlet weak var buttonContinue: UIButton!
-    
-    private let appDelegate = UIApplication.shared.delegate as! AppDelegate
-    
+        
     @objc var metadatasNOConflict: [tableMetadata]
     @objc var metadatasUploadInConflict: [tableMetadata]
     @objc var metadatasMOV: [tableMetadata]
@@ -60,10 +58,12 @@ extension NCCreateFormUploadConflictDelegate {
     @objc var alwaysNewFileNameNumber: Bool = false
     @objc var textLabelDetailNewFile: String?
     
+    let appDelegate = UIApplication.shared.delegate as! AppDelegate
     var metadatasConflictNewFiles: [String] = []
     var metadatasConflictAlreadyExistingFiles: [String] = []
     var fileNamesPath: [String: String] = [:]
-    
+    var blurView: UIVisualEffectView!
+
     // MARK: - View Life Cycle
 
     @objc required init?(coder aDecoder: NSCoder) {
@@ -107,9 +107,21 @@ extension NCCreateFormUploadConflictDelegate {
         buttonContinue.setTitle(NSLocalizedString("_continue_", comment: ""), for: .normal)
         buttonContinue.isEnabled = false
         
+        let blurEffect = UIBlurEffect(style: .light)
+        blurView = UIVisualEffectView(effect: blurEffect)
+        blurView.frame = view.bounds
+        blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
+        view.addSubview(blurView)
+        
         changeTheming()
     }
     
+    override func viewDidAppear(_ animated: Bool) {
+        super.viewDidAppear(animated)
+        
+        conflictDialog(fileCount: self.metadatasUploadInConflict.count)
+    }
+    
     override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
         super.traitCollectionDidChange(previousTraitCollection)
         
@@ -126,6 +138,99 @@ extension NCCreateFormUploadConflictDelegate {
         viewButton.backgroundColor = NCBrandColor.shared.systemGroupedBackground
     }
     
+    // MARK: - ConflictDialog
+    
+    func conflictDialog(fileCount: Int) {
+        
+        var tile = ""
+        var titleReplace = ""
+        var titleKeep = ""
+
+        if fileCount == 1 {
+            tile = NSLocalizedString("_single_file_conflict_title_", comment: "")
+            titleReplace = NSLocalizedString("_replace_action_title_", comment: "")
+            titleKeep = NSLocalizedString("_keep_both_action_title_", comment: "")
+        } else {
+            tile = String.localizedStringWithFormat(NSLocalizedString("_multi_file_conflict_title_", comment: ""), String(fileCount))
+            titleReplace = NSLocalizedString("_replace_all_action_title_", comment: "")
+            titleKeep = NSLocalizedString("_keep_both_for_all_action_title_", comment: "")
+        }
+        
+        let conflictAlert = UIAlertController(title: tile, message: "", preferredStyle: .alert)
+
+        conflictAlert.addAction(UIAlertAction(title: titleReplace, style: .default, handler: { (_) 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)
+        }))
+        
+        conflictAlert.addAction(UIAlertAction(title: titleKeep, style: .default, handler: { (_) 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.dismiss(animated: true, completion: nil)
+        }))
+        
+        conflictAlert.addAction(UIAlertAction(title: NSLocalizedString("_cancel_keep_existing_action_title_", comment: ""), style: .cancel, handler: { (_) in
+            self.dismiss(animated: true, completion: nil)
+        }))
+        
+        conflictAlert.addAction(UIAlertAction(title: NSLocalizedString("_more_action_title_", comment: ""), style: .default, handler: { (_) in
+            self.blurView.removeFromSuperview()
+        }))
+        
+        self.present(conflictAlert, animated: true, completion: nil)
+    }
+    
     // MARK: - Action
 
     @IBAction func valueChangedSwitchNewFiles(_ sender: Any) {

+ 8 - 0
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -179,6 +179,14 @@
 "_prevent_http_redirection_"= "The redirection in HTTP is not permitted";
 "_pdf_vertical_"            = "PDF vertical display";
 "_pdf_horizontal_"          = "PDF horizontal display";
+"_single_file_conflict_title_" = "File conflict";
+"_multi_file_conflict_title_" = " %@ File conflicts";
+"_replace_action_title_" = "Replace";
+"_keep_both_action_title_" = "Keep both";
+"_cancel_keep_existing_action_title_" = "Cancel and keep existing";
+"_replace_all_action_title_" = "Replace all";
+"_keep_both_for_all_action_title_" = "Keep both for all";
+"_more_action_title_" = "More Details";
 
 /* Background of the file listing view */
 "_use_as_background_"       = "Use it as a background";