|
@@ -633,6 +633,87 @@ import Queuer
|
|
|
|
|
|
NotificationCenter.default.postOnMainThread(name: k_notificationCenter_uploadCancelFile, userInfo: ["metadata":metadata])
|
|
NotificationCenter.default.postOnMainThread(name: k_notificationCenter_uploadCancelFile, userInfo: ["metadata":metadata])
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //MARK: - Transfer (Download Upload)
|
|
|
|
+
|
|
|
|
+ @objc func cancelTransferMetadata(_ metadata: tableMetadata, uploadStatusForcedStart: Bool) {
|
|
|
|
+
|
|
|
|
+ if metadata.session.count == 0 {
|
|
|
|
+ NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
|
|
|
|
+ NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["serverUrl":metadata.serverUrl])
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ let metadata = tableMetadata.init(value: metadata)
|
|
|
|
+
|
|
|
|
+ if metadata.session == NCCommunicationCommon.shared.sessionIdentifierDownload {
|
|
|
|
+ NCNetworking.shared.cancelDownload(ocId: metadata.ocId, serverUrl: metadata.serverUrl, fileNameView: metadata.fileNameView)
|
|
|
|
+ } else if metadata.session == NCCommunicationCommon.shared.sessionIdentifierUpload {
|
|
|
|
+ NCNetworking.shared.cancelUpload(ocId: metadata.ocId)
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ var session: URLSession?
|
|
|
|
+ if metadata.session == NCNetworking.shared.sessionIdentifierBackground {
|
|
|
|
+ session = NCNetworking.shared.sessionManagerBackground
|
|
|
|
+ } else if metadata.session == NCNetworking.shared.sessionIdentifierBackgroundWWan {
|
|
|
|
+ session = NCNetworking.shared.sessionManagerBackgroundWWan
|
|
|
|
+ } else if metadata.session == NCNetworking.shared.sessionIdentifierBackgroundExtension {
|
|
|
|
+ session = NCNetworking.shared.sessionManagerBackgroundExtension
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ session!.getTasksWithCompletionHandler { (dataTasks, uploadTasks, downloadTasks) in
|
|
|
|
+
|
|
|
|
+ var cancel = false
|
|
|
|
+
|
|
|
|
+ if metadata.session.count > 0 && metadata.session.contains("upload") {
|
|
|
|
+ for task in uploadTasks {
|
|
|
|
+ if task.taskIdentifier == metadata.sessionTaskIdentifier {
|
|
|
|
+ if uploadStatusForcedStart {
|
|
|
|
+ metadata.status = Int(k_metadataStatusUploadForcedStart)
|
|
|
|
+ NCManageDatabase.sharedInstance.addMetadata(metadata)
|
|
|
|
+ }
|
|
|
|
+ task.cancel()
|
|
|
|
+ cancel = true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if cancel == false {
|
|
|
|
+ do {
|
|
|
|
+ try FileManager.default.removeItem(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId))
|
|
|
|
+ }
|
|
|
|
+ catch { }
|
|
|
|
+ NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
|
|
|
|
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
|
|
|
|
+ NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["serverUrl":metadata.serverUrl])
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @objc func cancelAllTransfer(account: String) {
|
|
|
|
+
|
|
|
|
+ // Delete k_metadataStatusWaitUpload OR k_metadataStatusUploadError
|
|
|
|
+ NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "status == %d OR status == %d", account, k_metadataStatusWaitUpload, k_metadataStatusUploadError))
|
|
|
|
+
|
|
|
|
+ let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "status != %d", k_metadataStatusNormal), sorted: "fileName", ascending: true)
|
|
|
|
+
|
|
|
|
+ for metadata in metadatas {
|
|
|
|
+
|
|
|
|
+ // Modify
|
|
|
|
+ if (metadata.status == k_metadataStatusWaitDownload || metadata.status == k_metadataStatusDownloadError) {
|
|
|
|
+ NCManageDatabase.sharedInstance.setMetadataSession(ocId: metadata.ocId, session: "", sessionError: "", sessionSelector: "", sessionTaskIdentifier: 0, status: Int(k_metadataStatusNormal))
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Cancel Task
|
|
|
|
+ if metadata.status == k_metadataStatusDownloading || metadata.status == k_metadataStatusUploading {
|
|
|
|
+ self.cancelTransferMetadata(metadata, uploadStatusForcedStart: false)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ #if !EXTENSION
|
|
|
|
+ NCOperationQueue.shared.downloadCancelAll()
|
|
|
|
+ #endif
|
|
|
|
+ }
|
|
|
|
|
|
//MARK: - WebDav Read file, folder
|
|
//MARK: - WebDav Read file, folder
|
|
|
|
|