Forráskód Böngészése

improved autoupload

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 éve
szülő
commit
aa11837b1e

+ 1 - 6
iOSClient/Data/NCManageDatabase.swift

@@ -1244,19 +1244,14 @@ class NCManageDatabase: NSObject {
                     addObject.account = account
                     addObject.assetLocalIdentifier = asset.localIdentifier
                     addObject.mediaType = asset.mediaType.rawValue
-
                     if let creationDate = asset.creationDate {
                         addObject.creationDate = creationDate as NSDate
                         creationDateString = String(describing: creationDate)
-                    } else {
-                        creationDateString = ""
                     }
-
                     if let modificationDate = asset.modificationDate {
                         addObject.modificationDate = modificationDate as NSDate
                     }
-
-                    addObject.idAsset = "\(account)\(asset.localIdentifier)\(creationDateString)"
+                    addObject.idAsset = account + asset.localIdentifier + creationDateString
 
                     realm.add(addObject, update: .all)
                 }

+ 8 - 7
iOSClient/Main/Create cloud/NCCreateFormUploadAssets.swift

@@ -350,8 +350,8 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
 
                 var serverUrl = self.serverUrl
                 var livePhoto: Bool = false
-                let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: asset.creationDate, fileType: asset.mediaType, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)!
-                let assetDate = asset.creationDate ?? Date()
+                let creationDate = asset.creationDate ?? Date()
+                let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: creationDate, fileType: asset.mediaType, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)!
 
                 if asset.mediaSubtypes.contains(.photoLive) && CCUtility.getLivePhoto() {
                     livePhoto = true
@@ -360,9 +360,9 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
                 if useSubFolder {
                     let dateFormatter = DateFormatter()
                     dateFormatter.dateFormat = "yyyy"
-                    let yearString = dateFormatter.string(from: assetDate)
+                    let yearString = dateFormatter.string(from: creationDate)
                     dateFormatter.dateFormat = "MM"
-                    let monthString = dateFormatter.string(from: assetDate)
+                    let monthString = dateFormatter.string(from: creationDate)
                     serverUrl = autoUploadPath + "/" + yearString + "/" + monthString
                 }
 
@@ -419,6 +419,7 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
 
         var returnString: String = ""
         let asset = assets[0]
+        let creationDate = asset.creationDate ?? Date()
 
         if CCUtility.getOriginalFileName(NCGlobal.shared.keyFileNameOriginal) {
 
@@ -434,18 +435,18 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
                 CCUtility.setFileNameMask(valueRename, key: NCGlobal.shared.keyFileNameMask)
                 self.form.delegate = self
 
-                returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: asset.creationDate, fileType: asset.mediaType, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
+                returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: creationDate, fileType: asset.mediaType, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
 
             } else {
 
                 CCUtility.setFileNameMask("", key: NCGlobal.shared.keyFileNameMask)
-                returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: asset.creationDate, fileType: asset.mediaType, keyFileName: nil, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
+                returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: creationDate, fileType: asset.mediaType, keyFileName: nil, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
             }
 
         } else {
 
             CCUtility.setFileNameMask("", key: NCGlobal.shared.keyFileNameMask)
-            returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: asset.creationDate, fileType: asset.mediaType, keyFileName: nil, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
+            returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: creationDate, fileType: asset.mediaType, keyFileName: nil, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
         }
 
         return String(format: NSLocalizedString("_preview_filename_", comment: ""), "MM, MMM, DD, YY, YYYY, HH, hh, mm, ss, ampm") + ":" + "\n\n" + returnString

+ 10 - 11
iOSClient/Networking/NCAutoUpload.swift

@@ -108,17 +108,14 @@ class NCAutoUpload: NSObject {
                 var livePhoto = false
                 var session: String = ""
                 let dateFormatter = DateFormatter()
-                var date = Date()
-                if let assetDate = asset.creationDate {
-                    date = assetDate
-                }
+                let assetDate = asset.creationDate ?? Date()
                 dateFormatter.dateFormat = "yyyy"
-                let year = dateFormatter.string(from: date)
+                let year = dateFormatter.string(from: assetDate)
                 dateFormatter.dateFormat = "MM"
-                let month = dateFormatter.string(from: date)
+                let month = dateFormatter.string(from: assetDate)
                 let assetMediaType = asset.mediaType
                 var serverUrl: String = ""
-                let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: date, fileType: assetMediaType, keyFileName: NCGlobal.shared.keyFileNameAutoUploadMask, keyFileNameType: NCGlobal.shared.keyFileNameAutoUploadType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginalAutoUpload, forcedNewFileName: false)!
+                let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: assetDate, fileType: assetMediaType, keyFileName: NCGlobal.shared.keyFileNameAutoUploadMask, keyFileNameType: NCGlobal.shared.keyFileNameAutoUploadType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginalAutoUpload, forcedNewFileName: false)!
 
                 if asset.mediaSubtypes.contains(.photoLive) && CCUtility.getLivePhoto() {
                     livePhoto = true
@@ -231,11 +228,13 @@ class NCAutoUpload: NSObject {
             if selector == NCGlobal.shared.selectorUploadAutoUpload {
                 let idAssets = NCManageDatabase.shared.getPhotoLibraryIdAsset(image: account.autoUploadImage, video: account.autoUploadVideo, account: account.account)
                 assets.enumerateObjects { asset, _, _ in
+                    var creationDateString = ""
                     if let creationDate = asset.creationDate {
-                        let idAsset = account.account + asset.localIdentifier + String(describing: creationDate)
-                        if !(idAssets?.contains(idAsset) ?? false) {
-                            newAssets.append(asset)
-                        }
+                        creationDateString = String(describing: creationDate)
+                    }
+                    let idAsset = account.account + asset.localIdentifier + creationDateString
+                    if !(idAssets?.contains(idAsset) ?? false) {
+                        newAssets.append(asset)
                     }
                 }
             } else {

+ 1 - 4
iOSClient/Networking/NCNetworking.swift

@@ -1043,10 +1043,7 @@ import Photos
         let dateFormatter = DateFormatter()
 
         for asset in assets {
-            var date = Date()
-            if let assetDate = asset.creationDate {
-                date = assetDate
-            }
+            let date = asset.creationDate ?? Date()
             dateFormatter.dateFormat = "yyyy"
             let year = dateFormatter.string(from: date)
             dateFormatter.dateFormat = "MM"

+ 5 - 1
iOSClient/Utility/NCUtility.swift

@@ -455,6 +455,9 @@ class NCUtility: NSObject {
             return callCompletion(error: true)
         }
 
+        let creationDate = asset.creationDate ?? Date()
+        let modificationDate = asset.modificationDate ?? Date()
+
         if asset.mediaType == PHAssetMediaType.image && (extensionAsset == "HEIC" || extensionAsset == "DNG") && CCUtility.getFormatCompatibility() {
             let fileName = (metadata.fileNameView as NSString).deletingPathExtension + ".jpg"
             metadata.contentType = "image/jpeg"
@@ -468,7 +471,8 @@ class NCUtility: NSObject {
         } else {
             fileNamePath = NSTemporaryDirectory() + metadata.fileNameView
         }
-        guard let fileNamePath = fileNamePath, let creationDate = asset.creationDate, let modificationDate = asset.modificationDate else {
+
+        guard let fileNamePath = fileNamePath else {
             return callCompletion(error: true)
         }