|
@@ -34,6 +34,8 @@ class NCAutoUpload: NSObject {
|
|
|
}()
|
|
|
|
|
|
private var endForAssetToUpload: Bool = false
|
|
|
+ private let appDelegate = UIApplication.shared.delegate as? AppDelegate
|
|
|
+
|
|
|
|
|
|
// MARK: -
|
|
|
|
|
@@ -167,9 +169,9 @@ class NCAutoUpload: NSObject {
|
|
|
|
|
|
self.endForAssetToUpload = true
|
|
|
if selector == NCGlobal.shared.selectorUploadAutoUploadAll {
|
|
|
- (UIApplication.shared.delegate as? AppDelegate)?.networkingProcessUpload?.createProcessUploads(metadatas: metadatas, verifyAlreadyExists: false, completion: completion)
|
|
|
+ self.appDelegate?.networkingProcessUpload?.createProcessUploads(metadatas: metadatas, completion: completion)
|
|
|
} else {
|
|
|
- (UIApplication.shared.delegate as? AppDelegate)?.networkingProcessUpload?.createProcessUploads(metadatas: metadatas, verifyAlreadyExists: true, completion: completion)
|
|
|
+ self.createProcessAutoUploads(metadatas: metadatas, completion: completion)
|
|
|
}
|
|
|
completion(metadatas.count)
|
|
|
}
|
|
@@ -178,6 +180,57 @@ class NCAutoUpload: NSObject {
|
|
|
|
|
|
// MARK: -
|
|
|
|
|
|
+ func createProcessAutoUploads(metadatas: [tableMetadata], completion: @escaping (_ items: Int) -> Void) {
|
|
|
+
|
|
|
+ var metadatasForUpload: [tableMetadata] = []
|
|
|
+ var numStartUpload: Int = 0
|
|
|
+
|
|
|
+ for metadata in metadatas {
|
|
|
+ if NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "account == %@ && serverUrl == %@ && fileName == %@ && session != ''", metadata.account, metadata.serverUrl, metadata.fileName)) != nil { continue }
|
|
|
+ metadatasForUpload.append(metadata)
|
|
|
+ }
|
|
|
+ NCManageDatabase.shared.addMetadatas(metadatasForUpload)
|
|
|
+
|
|
|
+ let metadatasInUpload = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "status == %d OR status == %d", NCGlobal.shared.metadataStatusInUpload, NCGlobal.shared.metadataStatusUploading))
|
|
|
+ let counterUpload = NCGlobal.shared.maxConcurrentOperationUpload - metadatasInUpload.count
|
|
|
+ if counterUpload <= 0 { return completion(0) }
|
|
|
+
|
|
|
+ // Extract file
|
|
|
+
|
|
|
+ let metadatas = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "sessionSelector == %@ AND status == %d", NCGlobal.shared.selectorUploadAutoUpload, NCGlobal.shared.metadataStatusWaitUpload), page: 0, limit: counterUpload, sorted: "date", ascending: true)
|
|
|
+
|
|
|
+ for metadata in metadatas {
|
|
|
+
|
|
|
+ let metadata = tableMetadata.init(value: metadata)
|
|
|
+ let semaphore = Semaphore()
|
|
|
+
|
|
|
+ NCUtility.shared.extractFiles(from: metadata) { metadatas in
|
|
|
+ if metadatas.isEmpty {
|
|
|
+ NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
|
|
|
+ }
|
|
|
+ for metadata in metadatas {
|
|
|
+ if (metadata.e2eEncrypted || metadata.chunk) && UIApplication.shared.applicationState != .active { continue }
|
|
|
+ let isWiFi = NCNetworking.shared.networkReachability == NKCommon.typeReachability.reachableEthernetOrWiFi
|
|
|
+ if metadata.session == NCNetworking.shared.sessionIdentifierBackgroundWWan && !isWiFi { continue }
|
|
|
+ guard let metadata = NCManageDatabase.shared.setMetadataStatus(ocId: metadata.ocId, status: NCGlobal.shared.metadataStatusInUpload) else { continue }
|
|
|
+ // Upload
|
|
|
+ let semaphoreUpload = Semaphore()
|
|
|
+ NCNetworking.shared.upload(metadata: metadata) {
|
|
|
+ numStartUpload += 1
|
|
|
+ } completion: { error in
|
|
|
+ semaphoreUpload.continue()
|
|
|
+ }
|
|
|
+ semaphoreUpload.wait()
|
|
|
+ }
|
|
|
+ semaphore.continue()
|
|
|
+ }
|
|
|
+ semaphore.wait()
|
|
|
+ }
|
|
|
+ completion(numStartUpload)
|
|
|
+ }
|
|
|
+
|
|
|
+ // MARK: -
|
|
|
+
|
|
|
@objc func alignPhotoLibrary(viewController: UIViewController?) {
|
|
|
guard let activeAccount = NCManageDatabase.shared.getActiveAccount() else { return }
|
|
|
|