marinofaggiana 4 years ago
parent
commit
672cac025a

+ 1 - 1
Nextcloud.xcodeproj/project.pbxproj

@@ -2799,7 +2799,7 @@
 			repositoryURL = "https://github.com/realm/realm-cocoa";
 			requirement = {
 				kind = upToNextMajorVersion;
-				minimumVersion = 5.4.0;
+				minimumVersion = 5.4.1;
 			};
 		};
 /* End XCRemoteSwiftPackageReference section */

+ 4 - 4
Nextcloud.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

@@ -6,8 +6,8 @@
         "repositoryURL": "https://github.com/realm/realm-cocoa",
         "state": {
           "branch": null,
-          "revision": "6310911a38d55003f0b8acca96635aa2bfc3e2c0",
-          "version": "5.4.0"
+          "revision": "59aa69458542e3e84d29c02588407b2d241d8fa0",
+          "version": "5.4.1"
         }
       },
       {
@@ -15,8 +15,8 @@
         "repositoryURL": "https://github.com/realm/realm-core",
         "state": {
           "branch": null,
-          "revision": "34d7fbcbab2a94bcad081bddf9d172961cd84659",
-          "version": "6.0.25"
+          "revision": "e051fc73c56830bf3ab0b8a82f7a613968cec6c6",
+          "version": "6.0.26"
         }
       }
     ]

+ 102 - 98
iOSClient/Main/Create cloud/NCCreateFormUploadAssets.swift

@@ -346,122 +346,126 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
     */
     
     @objc func save() {
-                    
-        let useFolderPhotoRow: XLFormRowDescriptor  = self.form.formRow(withTag: "useFolderAutoUpload")!
-        let useSubFolderRow: XLFormRowDescriptor  = self.form.formRow(withTag: "useSubFolder")!
-        var useSubFolder: Bool = false
-        var livePhoto: Bool = false
-        var metadatasMOV: [tableMetadata] = []
-        var metadatasNOConflict: [tableMetadata] = []
-        var metadatasUploadInConflict: [tableMetadata] = []
+         
+        DispatchQueue.global().async {
+        
+            let useFolderPhotoRow: XLFormRowDescriptor  = self.form.formRow(withTag: "useFolderAutoUpload")!
+            let useSubFolderRow: XLFormRowDescriptor  = self.form.formRow(withTag: "useSubFolder")!
+            var useSubFolder: Bool = false
+            var livePhoto: Bool = false
+            var metadatasMOV: [tableMetadata] = []
+            var metadatasNOConflict: [tableMetadata] = []
+            var metadatasUploadInConflict: [tableMetadata] = []
 
-        if (useFolderPhotoRow.value! as AnyObject).boolValue == true {
-            self.serverUrl = NCManageDatabase.sharedInstance.getAccountAutoUploadPath(urlBase: self.appDelegate.urlBase, account: self.appDelegate.account)
-            useSubFolder = (useSubFolderRow.value! as AnyObject).boolValue
-        }
-        
-        let autoUploadPath = NCManageDatabase.sharedInstance.getAccountAutoUploadPath(urlBase: self.appDelegate.urlBase, account: self.appDelegate.account)
-        if autoUploadPath == self.serverUrl {
-            if NCNetworking.shared.createFolder(assets: self.assets, selector: selectorUploadFile, useSubFolder: useSubFolder, account: self.appDelegate.account, urlBase: self.appDelegate.urlBase) == false {
-                NCContentPresenter.shared.messageNotification("_error_", description: "_error_createsubfolders_upload_", delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: Int(k_CCErrorInternalError), forced: true)
-                return
+            if (useFolderPhotoRow.value! as AnyObject).boolValue == true {
+                self.serverUrl = NCManageDatabase.sharedInstance.getAccountAutoUploadPath(urlBase: self.appDelegate.urlBase, account: self.appDelegate.account)
+                useSubFolder = (useSubFolderRow.value! as AnyObject).boolValue
             }
-        }
-
-        for asset in self.assets {
-                
-            var serverUrl = self.serverUrl
-            let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: asset.creationDate, fileType: asset.mediaType, keyFileName: k_keyFileNameMask, keyFileNameType: k_keyFileNameType, keyFileNameOriginal: k_keyFileNameOriginal)!
-            let assetDate = asset.creationDate ?? Date()
-            let dateFormatter = DateFormatter()
             
-            // Detect LivePhoto Upload
-            if (asset.mediaSubtypes == PHAssetMediaSubtype.photoLive || asset.mediaSubtypes.rawValue == PHAssetMediaSubtype.photoLive.rawValue + PHAssetMediaSubtype.photoHDR.rawValue) && CCUtility.getLivePhoto() {
-                livePhoto = true
+            let autoUploadPath = NCManageDatabase.sharedInstance.getAccountAutoUploadPath(urlBase: self.appDelegate.urlBase, account: self.appDelegate.account)
+            if autoUploadPath == self.serverUrl {
+                if NCNetworking.shared.createFolder(assets: self.assets, selector: selectorUploadFile, useSubFolder: useSubFolder, account: self.appDelegate.account, urlBase: self.appDelegate.urlBase) == false {
+                    NCContentPresenter.shared.messageNotification("_error_", description: "_error_createsubfolders_upload_", delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: Int(k_CCErrorInternalError), forced: true)
+                    return
+                }
             }
-            
-            // Create serverUrl if use sub folder
-            if useSubFolder {
+
+            for asset in self.assets {
+                    
+                var serverUrl = self.serverUrl
+                let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: asset.creationDate, fileType: asset.mediaType, keyFileName: k_keyFileNameMask, keyFileNameType: k_keyFileNameType, keyFileNameOriginal: k_keyFileNameOriginal)!
+                let assetDate = asset.creationDate ?? Date()
+                let dateFormatter = DateFormatter()
                 
-                dateFormatter.dateFormat = "yyyy"
-                let yearString = dateFormatter.string(from: assetDate)
-               
-                dateFormatter.dateFormat = "MM"
-                let monthString = dateFormatter.string(from: assetDate)
+                // Detect LivePhoto Upload
+                if (asset.mediaSubtypes == PHAssetMediaSubtype.photoLive || asset.mediaSubtypes.rawValue == PHAssetMediaSubtype.photoLive.rawValue + PHAssetMediaSubtype.photoHDR.rawValue) && CCUtility.getLivePhoto() {
+                    livePhoto = true
+                }
                 
-                serverUrl = autoUploadPath + "/" + yearString + "/" + monthString
-            }
-            
-            // Check if is in upload
-            let isRecordInSessions = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileName == %@ AND session != ''", self.appDelegate.account, serverUrl, fileName), sorted: "fileName", ascending: false)
-            if isRecordInSessions.count > 0 {
-                continue
-            }
-            
-            let metadataForUpload = NCManageDatabase.sharedInstance.createMetadata(account: self.appDelegate.account, fileName: fileName, ocId: NSUUID().uuidString, serverUrl: serverUrl, urlBase: self.appDelegate.urlBase, url: "", contentType: "", livePhoto: livePhoto)
-            
-            metadataForUpload.assetLocalIdentifier = asset.localIdentifier
-            metadataForUpload.session = self.session
-            metadataForUpload.sessionSelector = selectorUploadFile
-            metadataForUpload.size = Double(NCUtilityFileSystem.shared.getFileSize(asset: asset))
-            metadataForUpload.status = Int(k_metadataStatusWaitUpload)
-            
-            if livePhoto {
+                // Create serverUrl if use sub folder
+                if useSubFolder {
+                    
+                    dateFormatter.dateFormat = "yyyy"
+                    let yearString = dateFormatter.string(from: assetDate)
+                   
+                    dateFormatter.dateFormat = "MM"
+                    let monthString = dateFormatter.string(from: assetDate)
+                    
+                    serverUrl = autoUploadPath + "/" + yearString + "/" + monthString
+                }
                 
-                let fileNameMove = (fileName as NSString).deletingPathExtension
-                let ocId = NSUUID().uuidString
-                let filePath = CCUtility.getDirectoryProviderStorageOcId(ocId, fileNameView: fileNameMove)!
+                // Check if is in upload
+                let isRecordInSessions = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileName == %@ AND session != ''", self.appDelegate.account, serverUrl, fileName), sorted: "fileName", ascending: false)
+                if isRecordInSessions.count > 0 {
+                    continue
+                }
                 
-                let semaphore = Semaphore()
-                CCUtility.extractLivePhotoAsset(asset, filePath: filePath) { (url) in
-                    if let url = url {
-                        let fileSize = NCUtilityFileSystem.shared.getFileSize(filePath: url.path)
-                        let metadataMOVForUpload = NCManageDatabase.sharedInstance.createMetadata(account: self.appDelegate.account, fileName: fileNameMove, ocId:ocId, serverUrl: serverUrl, urlBase: self.appDelegate.urlBase, url: "", contentType: "", livePhoto: livePhoto)
+                let metadataForUpload = NCManageDatabase.sharedInstance.createMetadata(account: self.appDelegate.account, fileName: fileName, ocId: NSUUID().uuidString, serverUrl: serverUrl, urlBase: self.appDelegate.urlBase, url: "", contentType: "", livePhoto: livePhoto)
+                
+                metadataForUpload.assetLocalIdentifier = asset.localIdentifier
+                metadataForUpload.session = self.session
+                metadataForUpload.sessionSelector = selectorUploadFile
+                metadataForUpload.size = Double(NCUtilityFileSystem.shared.getFileSize(asset: asset))
+                metadataForUpload.status = Int(k_metadataStatusWaitUpload)
+                
+                if livePhoto {
+                    
+                    let fileNameMove = (fileName as NSString).deletingPathExtension
+                    let ocId = NSUUID().uuidString
+                    let filePath = CCUtility.getDirectoryProviderStorageOcId(ocId, fileNameView: fileNameMove)!
+                    
+                    let semaphore = Semaphore()
+                    CCUtility.extractLivePhotoAsset(asset, filePath: filePath) { (url) in
+                        if let url = url {
+                            let fileSize = NCUtilityFileSystem.shared.getFileSize(filePath: url.path)
+                            let metadataMOVForUpload = NCManageDatabase.sharedInstance.createMetadata(account: self.appDelegate.account, fileName: fileNameMove, ocId:ocId, serverUrl: serverUrl, urlBase: self.appDelegate.urlBase, url: "", contentType: "", livePhoto: livePhoto)
 
-                        metadataForUpload.livePhoto = true
-                        metadataMOVForUpload.livePhoto = true
-                        
-                        metadataMOVForUpload.session = self.session
-                        metadataMOVForUpload.sessionSelector = selectorUploadFile
-                        metadataMOVForUpload.size = fileSize
-                        metadataMOVForUpload.status = Int(k_metadataStatusWaitUpload)
-                        metadataMOVForUpload.typeFile = k_metadataTypeFile_video
+                            metadataForUpload.livePhoto = true
+                            metadataMOVForUpload.livePhoto = true
+                            
+                            metadataMOVForUpload.session = self.session
+                            metadataMOVForUpload.sessionSelector = selectorUploadFile
+                            metadataMOVForUpload.size = fileSize
+                            metadataMOVForUpload.status = Int(k_metadataStatusWaitUpload)
+                            metadataMOVForUpload.typeFile = k_metadataTypeFile_video
 
-                        metadatasMOV.append(metadataMOVForUpload)
+                            metadatasMOV.append(metadataMOVForUpload)
+                        }
+                        semaphore.continue()
                     }
-                    semaphore.continue()
+                    semaphore.wait()
+                }
+                
+                if NCUtility.shared.getMetadataConflict(account: self.appDelegate.account, serverUrl: serverUrl, fileName: fileName) != nil {
+                    metadatasUploadInConflict.append(metadataForUpload)
+                } else {
+                    metadatasNOConflict.append(metadataForUpload)
                 }
-                semaphore.wait()
             }
             
-            if NCUtility.shared.getMetadataConflict(account: self.appDelegate.account, serverUrl: serverUrl, fileName: fileName) != nil {
-                metadatasUploadInConflict.append(metadataForUpload)
+            // Verify if file(s) exists
+            if metadatasUploadInConflict.count > 0 {
+                
+                if let conflict = UIStoryboard.init(name: "NCCreateFormUploadConflict", bundle: nil).instantiateInitialViewController() as? NCCreateFormUploadConflict {
+                    
+                    conflict.serverUrl = self.serverUrl
+                    conflict.metadatasNOConflict = metadatasNOConflict
+                    conflict.metadatasMOV = metadatasMOV
+                    conflict.metadatasUploadInConflict = metadatasUploadInConflict
+                
+                    self.appDelegate.window.rootViewController?.present(conflict, animated: true, completion: nil)
+                }
+                
             } else {
-                metadatasNOConflict.append(metadataForUpload)
-            }
-        }
-        
-        // Verify if file(s) exists
-        if metadatasUploadInConflict.count > 0 {
-            
-            if let conflict = UIStoryboard.init(name: "NCCreateFormUploadConflict", bundle: nil).instantiateInitialViewController() as? NCCreateFormUploadConflict {
                 
-                conflict.serverUrl = self.serverUrl
-                conflict.metadatasNOConflict = metadatasNOConflict
-                conflict.metadatasMOV = metadatasMOV
-                conflict.metadatasUploadInConflict = metadatasUploadInConflict
-            
-                self.appDelegate.window.rootViewController?.present(conflict, animated: true, completion: nil)
+                NCManageDatabase.sharedInstance.addMetadatas(metadatasNOConflict)
+                NCManageDatabase.sharedInstance.addMetadatas(metadatasMOV)
+                
+                self.appDelegate.networkingAutoUpload.startProcess()
             }
-            
-        } else {
-            NCManageDatabase.sharedInstance.addMetadatas(metadatasNOConflict)
-            NCManageDatabase.sharedInstance.addMetadatas(metadatasMOV)
-            
-            self.appDelegate.networkingAutoUpload.startProcess()
-        }
         
-        self.dismiss(animated: true, completion: nil)
+            self.dismiss(animated: true, completion: nil)
+        }
     }
     
     @objc func cancel() {