…lines 1–18 unchanged (18 lines)
19 var bannerToken: Int = 0
20 var currentUploadTask: Task<(account: String, file: NKFile?, error: NKError), Never>?
21 var request: UploadRequest?
22
23 @discardableResult
24 @MainActor
25 func upload(metadata: tableMetadata, session: NCSession.Session? = nil, controller: UIViewController? = nil, scene: UIWindowScene? = nil) async -> NKError {
26 var finalError: NKError = .success
27 var session = session
28 let ocId = metadata.ocIdTransfer
29
30 if session == nil {
31 session = NCSession.shared.getSession(account: metadata.account)
32 }
33 guard let session,
34 !session.account.isEmpty else {
35 return NKError(errorCode: NCGlobal.shared.errorNCSessionNotFound, errorDescription: NSLocalizedString("_e2e_error_", comment: ""))
36 }
37
38 // BANNER ENCRYPTION
39 //
40 bannerToken = showUploadBanner(scene: scene,
41 title: NSLocalizedString("_wait_file_encryption_", comment: ""),
42 subtitle: NSLocalizedString("_e2ee_upload_tip_", comment: ""),
43 systemImage: "lock.circle.fill",
44 vPosition: .bottom,
45 verticalMargin: 55) { _, _ in
46 if let currentUploadTask = self.currentUploadTask {
47 currentUploadTask.cancel()
48 }
49 if let request = self.request {
50 request.cancel()
51 }
52 LucidBanner.shared.dismiss()
53 }
54
55 defer {
56 if finalError != .success {
57 Task {
58 await self.database.deleteMetadataAsync(id: ocId)
59 }
…lines 60–149 unchanged (90 lines)
150 resultsLock.error == .success
151 else {
152 await self.database.deleteMetadataAsync(predicate: NSPredicate(format: "ocIdTransfer == %@", metadata.ocIdTransfer))
153 finalError = NKError(errorCode: NCGlobal.shared.errorE2EELock, errorDescription: NSLocalizedString("_e2e_error_", comment: ""))
154 return finalError
155 }
156
157 // SEND NEW METADATA
158 //
159 let sendE2eeError = await sendE2ee(e2eToken: e2eToken, fileId: fileId)
160 guard sendE2eeError == .success else {
161 await self.database.deleteMetadataAsync(predicate: NSPredicate(format: "ocIdTransfer == %@", metadata.ocIdTransfer))
162 await networkingE2EE.unlock(account: metadata.account, serverUrl: metadata.serverUrl)
…lines 163–298 unchanged (136 lines)