瀏覽代碼

coding

Signed-off-by: marinofaggiana <ios@nextcloud.com>
marinofaggiana 2 年之前
父節點
當前提交
eba23231b3
共有 1 個文件被更改,包括 17 次插入15 次删除
  1. 17 15
      iOSClient/Utility/NCUtility.swift

+ 17 - 15
iOSClient/Utility/NCUtility.swift

@@ -399,15 +399,14 @@ class NCUtility: NSObject {
 
     // MARK: -
 
-    func extractImageVideoFromAssetLocalIdentifier(metadata: tableMetadata, modifyMetadataForUpload: Bool, queue: DispatchQueue, completion: @escaping (_ metadata: tableMetadata?, _ fileNamePath: String?, _ returnError: Bool) -> ()) {
+    func extractImageVideoFromAssetLocalIdentifier(metadata: tableMetadata, modifyMetadataForUpload: Bool, queue: DispatchQueue, completion: @escaping (_ metadata: tableMetadata?, _ fileNamePath: String?, _ error: Bool) -> ()) {
 
         var fileNamePath: String?
         let metadata = tableMetadata.init(value: metadata)
-        var returnError: Bool = true
         let chunckSize = CCUtility.getChunkSize() * 1000000
 
-        defer {
-            if returnError {
+        func callCompletion(error: Bool) {
+            if error {
                 queue.async { completion(nil, nil, true) }
             } else {
                 var metadataReturn = metadata
@@ -426,12 +425,14 @@ class NCUtility: NSObject {
                         metadataReturn = metadata
                     }
                 }
-                queue.async { completion(metadataReturn, fileNamePath, returnError) }
+                queue.async { completion(metadataReturn, fileNamePath, error) }
             }
         }
 
         let fetchAssets = PHAsset.fetchAssets(withLocalIdentifiers: [metadata.assetLocalIdentifier], options: nil)
-        guard fetchAssets.count > 0, let asset = fetchAssets.firstObject, let extensionAsset = (asset.value(forKey: "filename") as? NSString)?.pathExtension.uppercased() else { return }
+        guard fetchAssets.count > 0, let asset = fetchAssets.firstObject, let extensionAsset = (asset.value(forKey: "filename") as? NSString)?.pathExtension.uppercased() else {
+            return callCompletion(error: true)
+        }
 
         if asset.mediaType == PHAssetMediaType.image && (extensionAsset == "HEIC" || extensionAsset == "DNG") && CCUtility.getFormatCompatibility() {
             let fileName = (metadata.fileNameView as NSString).deletingPathExtension + "jpg"
@@ -445,7 +446,9 @@ class NCUtility: NSObject {
         } else {
             fileNamePath = NSTemporaryDirectory() + metadata.fileNameView
         }
-        guard let fileNamePath = fileNamePath, let creationDate = asset.creationDate, let modificationDate = asset.modificationDate else { return }
+        guard let fileNamePath = fileNamePath, let creationDate = asset.creationDate, let modificationDate = asset.modificationDate else {
+            return callCompletion(error: true)
+        }
 
         if asset.mediaType == PHAssetMediaType.image {
 
@@ -458,11 +461,11 @@ class NCUtility: NSObject {
             }
             options.progressHandler = { (progress, error, stop, info) in
                 print(progress)
-                if error != nil { return }
+                if error != nil { return callCompletion(error: true) }
             }
 
             PHImageManager.default().requestImageData(for: asset, options: options) { data, dataUI, orientation, info in
-                guard let data = data else { return }
+                guard let data = data else { return callCompletion(error: true) }
                 NCUtilityFileSystem.shared.deleteFile(filePath: fileNamePath)
                 do {
                     try data.write(to: URL(fileURLWithPath: fileNamePath), options: .atomic)
@@ -472,7 +475,7 @@ class NCUtility: NSObject {
                 metadata.creationDate = creationDate as NSDate
                 metadata.date = modificationDate as NSDate
                 metadata.size = NCUtilityFileSystem.shared.getFileSize(filePath: fileNamePath)
-                returnError = false
+                return callCompletion(error: false)
             }
 
         } else if asset.mediaType == PHAssetMediaType.video {
@@ -482,10 +485,9 @@ class NCUtility: NSObject {
             options.version = PHVideoRequestOptionsVersion.original
             options.progressHandler = { (progress, error, stop, info) in
                 print(progress)
-                if error != nil { return }
+                if error != nil { return callCompletion(error: true) }
             }
 
-            let semaphore = Semaphore()
             PHImageManager.default().requestAVAsset(forVideo: asset, options: options) { asset, audioMix, info in
                 guard let asset = asset as? AVURLAsset else { return }
                 NCUtilityFileSystem.shared.deleteFile(filePath: fileNamePath)
@@ -497,10 +499,10 @@ class NCUtility: NSObject {
                 metadata.creationDate = creationDate as NSDate
                 metadata.date = modificationDate as NSDate
                 metadata.size = NCUtilityFileSystem.shared.getFileSize(filePath: fileNamePath)
-                returnError = false
-                semaphore.continue()
+                return callCompletion(error: false)
             }
-            semaphore.wait()
+        } else {
+            return callCompletion(error: true)
         }
     }