Преглед на файлове

coding

Signed-off-by: marinofaggiana <ios@nextcloud.com>
marinofaggiana преди 2 години
родител
ревизия
331ceaf056
променени са 2 файла, в които са добавени 23 реда и са изтрити 41 реда
  1. 19 31
      iOSClient/Networking/NCNetworkingProcessUpload.swift
  2. 4 10
      iOSClient/Transfers/NCTransfers.swift

+ 19 - 31
iOSClient/Networking/NCNetworkingProcessUpload.swift

@@ -105,23 +105,8 @@ class NCNetworkingProcessUpload: NSObject {
                             }
                         }
 
-                        let (metadataForUpload, metadataLivePhotoForUpload) = self.extractFiles(from: metadata, queue: queue)
-
-                        // Upload
-                        if let metadata = metadataForUpload {
-                            if (metadata.e2eEncrypted || metadata.chunk) && applicationState != .active { continue }
-                            if let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
-                                NCNetworking.shared.upload(metadata: metadata)
-                            }
-                            if metadata.e2eEncrypted || metadata.chunk {
-                                counterUpload = self.maxConcurrentOperationUpload
-                            } else {
-                                counterUpload += 1
-                            }
-                        }
-
-                        // Upload Live photo
-                        if let metadata = metadataLivePhotoForUpload {
+                        let metadatas = self.extractFiles(from: metadata, queue: queue)
+                        for metadata in metadatas {
                             if (metadata.e2eEncrypted || metadata.chunk) && applicationState != .active { continue }
                             if let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
                                 NCNetworking.shared.upload(metadata: metadata)
@@ -187,14 +172,14 @@ class NCNetworkingProcessUpload: NSObject {
 
     // MARK: -
 
-    func extractFiles(from metadata: tableMetadata, queue: DispatchQueue) -> (metadataForUpload: tableMetadata?, metadataLivePhotoForUpload: tableMetadata?) {
+    func extractFiles(from metadata: tableMetadata, queue: DispatchQueue) -> [tableMetadata] {
 
-        var metadataForUpload: tableMetadata?
-        var metadataLivePhotoForUpload: tableMetadata?
         let chunckSize = CCUtility.getChunkSize() * 1000000
         let semaphore = Semaphore()
+        var metadatas: [tableMetadata] = []
 
-        guard queue != .main else { return(nil, nil) }
+        guard !metadata.isExtractFile else { return([metadata]) }
+        guard queue != .main else { return(metadatas) }
         guard !metadata.assetLocalIdentifier.isEmpty else {
             let filePath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileName)!
             metadata.size = NCUtilityFileSystem.shared.getFileSize(filePath: filePath)
@@ -214,13 +199,15 @@ class NCNetworkingProcessUpload: NSObject {
                 metadata.e2eEncrypted = true
             }
             metadata.isExtractFile = true
-            let metadata = NCManageDatabase.shared.addMetadata(metadata)
-            return (metadata, nil)
+            if let metadata = NCManageDatabase.shared.addMetadata(metadata) {
+                metadatas.append(metadata)
+            }
+            return(metadatas)
         }
 
         NCUtility.shared.extractImageVideoFromAssetLocalIdentifier(metadata: metadata, modifyMetadataForUpload: true, queue: queue) { metadata, fileNamePath, returnError in
             if let metadata = metadata, let fileNamePath = fileNamePath, !returnError {
-                metadataForUpload = metadata
+                metadatas.append(metadata)
                 let toPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
                 NCUtilityFileSystem.shared.moveFile(atPath: fileNamePath, toPath: toPath)
             }
@@ -228,11 +215,6 @@ class NCNetworkingProcessUpload: NSObject {
         }
         semaphore.wait()
 
-        if metadataForUpload == nil {
-            NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
-            return (nil, nil)
-        }
-
         let fetchAssets = PHAsset.fetchAssets(withLocalIdentifiers: [metadata.assetLocalIdentifier], options: nil)
         if metadata.livePhoto, fetchAssets.count > 0  {
             let ocId = NSUUID().uuidString
@@ -244,6 +226,7 @@ class NCNetworkingProcessUpload: NSObject {
                     metadataLivePhoto.classFile = NCCommunicationCommon.typeClassFile.video.rawValue
                     metadataLivePhoto.e2eEncrypted = metadata.e2eEncrypted
                     metadataLivePhoto.isAutoupload = metadata.isAutoupload
+                    metadataLivePhoto.isExtractFile = true
                     metadataLivePhoto.session = metadata.session
                     metadataLivePhoto.sessionSelector = metadata.sessionSelector
                     metadataLivePhoto.size = NCUtilityFileSystem.shared.getFileSize(filePath: filePath)
@@ -252,14 +235,19 @@ class NCNetworkingProcessUpload: NSObject {
                         metadataLivePhoto.chunk = true
                         metadataLivePhoto.session = NCCommunicationCommon.shared.sessionIdentifierUpload
                     }
-                    metadataLivePhotoForUpload = NCManageDatabase.shared.addMetadata(metadataLivePhoto)
+                    if let metadata = NCManageDatabase.shared.addMetadata(metadataLivePhoto) {
+                        metadatas.append(metadata)
+                    }
                 }
                 semaphore.continue()
             }
             semaphore.wait()
         }
 
-        return(metadataForUpload, metadataLivePhotoForUpload)
+        if metadatas.isEmpty {
+            NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+        }
+        return(metadatas)
     }
 
     // MARK: -

+ 4 - 10
iOSClient/Transfers/NCTransfers.swift

@@ -130,16 +130,10 @@ class NCTransfers: NCCollectionViewCommon, NCTransferCellDelegate {
         guard appDelegate.account == metadata.account else { return }
         guard let networkingProcessUpload = appDelegate.networkingProcessUpload else { return }
 
-        let (metadataForUpload, metadataLivePhotoForUpload) = networkingProcessUpload.extractFiles(from: metadata, queue: DispatchQueue.global(qos: .background))
-
-        // Upload
-        if let metadata = metadataForUpload, let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
-            NCNetworking.shared.upload(metadata: metadata)
-        }
-
-        // Upload Live photo
-        if let metadata = metadataLivePhotoForUpload, let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
-            NCNetworking.shared.upload(metadata: metadata)
+        for metadata in networkingProcessUpload.extractFiles(from: metadata, queue: DispatchQueue.global(qos: .background)) {
+            if let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) {
+                NCNetworking.shared.upload(metadata: metadata)
+            }
         }
     }