Jelajahi Sumber

coding

Signed-off-by: marinofaggiana <ios@nextcloud.com>
marinofaggiana 2 tahun lalu
induk
melakukan
647454a138
1 mengubah file dengan 8 tambahan dan 5 penghapusan
  1. 8 5
      iOSClient/Networking/NCNetworkingProcessUpload.swift

+ 8 - 5
iOSClient/Networking/NCNetworkingProcessUpload.swift

@@ -105,6 +105,7 @@ class NCNetworkingProcessUpload: NSObject {
                             }
                         }
 
+                        let semaphore = Semaphore()
                         self.extractFiles(from: metadata, queue: queue) { metadatas in
                             if metadatas.isEmpty {
                                 NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
@@ -120,7 +121,9 @@ class NCNetworkingProcessUpload: NSObject {
                                     counterUpload += 1
                                 }
                             }
+                            semaphore.continue()
                         }
+                        semaphore.wait()
                     }
                 }
             }
@@ -182,7 +185,7 @@ class NCNetworkingProcessUpload: NSObject {
         var metadatas: [tableMetadata] = []
         let metadataSource = tableMetadata.init(value: metadata)
 
-        guard !metadata.isExtractFile else { return completition([metadataSource]) }
+        guard !metadata.isExtractFile else { return queue.async { completition([metadataSource]) }}
         guard !metadataSource.assetLocalIdentifier.isEmpty else {
             let filePath = CCUtility.getDirectoryProviderStorageOcId(metadataSource.ocId, fileNameView: metadataSource.fileName)!
             metadataSource.size = NCUtilityFileSystem.shared.getFileSize(filePath: filePath)
@@ -205,7 +208,7 @@ class NCNetworkingProcessUpload: NSObject {
             if let metadata = NCManageDatabase.shared.addMetadata(metadataSource) {
                 metadatas.append(metadata)
             }
-            return completition(metadatas)
+            return queue.async { completition(metadatas) }
         }
 
         NCUtility.shared.extractImageVideoFromAssetLocalIdentifier(metadata: metadataSource, modifyMetadataForUpload: true, queue: queue) { metadata, fileNamePath, returnError in
@@ -214,7 +217,7 @@ class NCNetworkingProcessUpload: NSObject {
                 let toPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
                 NCUtilityFileSystem.shared.moveFile(atPath: fileNamePath, toPath: toPath)
             } else {
-                return completition(metadatas)
+                return queue.async { completition(metadatas) }
             }
             let fetchAssets = PHAsset.fetchAssets(withLocalIdentifiers: [metadataSource.assetLocalIdentifier], options: nil)
             if metadataSource.livePhoto, fetchAssets.count > 0  {
@@ -222,10 +225,10 @@ class NCNetworkingProcessUpload: NSObject {
                     if let metadata = metadata, let metadata = NCManageDatabase.shared.addMetadata(metadata) {
                         metadatas.append(metadata)
                     }
-                    completition(metadatas)
+                    queue.async { completition(metadatas) }
                 }
             } else {
-                completition(metadatas)
+                queue.async { completition(metadatas) }
             }
         }
     }