Skip to content

Commit d29d3bf

Browse files
Bkg test (#3933)
* fix Signed-off-by: Marino Faggiana <[email protected]> * build 3 Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]>
1 parent d117f95 commit d29d3bf

File tree

2 files changed

+42
-15
lines changed

2 files changed

+42
-15
lines changed

Nextcloud.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5728,7 +5728,7 @@
57285728
CLANG_WARN_UNREACHABLE_CODE = YES;
57295729
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
57305730
COPY_PHASE_STRIP = NO;
5731-
CURRENT_PROJECT_VERSION = 2;
5731+
CURRENT_PROJECT_VERSION = 3;
57325732
DEBUG_INFORMATION_FORMAT = dwarf;
57335733
DEVELOPMENT_TEAM = NKUJUXUJ3B;
57345734
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -5794,7 +5794,7 @@
57945794
CLANG_WARN_UNREACHABLE_CODE = YES;
57955795
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
57965796
COPY_PHASE_STRIP = NO;
5797-
CURRENT_PROJECT_VERSION = 2;
5797+
CURRENT_PROJECT_VERSION = 3;
57985798
DEVELOPMENT_TEAM = NKUJUXUJ3B;
57995799
ENABLE_STRICT_OBJC_MSGSEND = YES;
58005800
ENABLE_TESTABILITY = YES;

iOSClient/Networking/NCNetworkingProcess.swift

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ actor NCNetworkingProcess {
1818
private let networking = NCNetworking.shared
1919

2020
private var currentTask: Task<Void, Never>?
21+
22+
@MainActor
23+
private var currentUploadTask: Task<(account: String, file: NKFile?, error: NKError), Never>?
24+
25+
@MainActor
26+
private var currentUploadRequest: UploadRequest?
27+
2128
private var enableControllingScreenAwake = true
2229
private var currentAccount = ""
2330
private var inWaitingCount: Int = 0
@@ -54,6 +61,8 @@ actor NCNetworkingProcess {
5461

5562
Task {
5663
await self.stopTimer()
64+
await self.cancelCurrentTaskOnBackground()
65+
await self.cancelCurrentUpload()
5766
}
5867
}
5968

@@ -146,6 +155,19 @@ actor NCNetworkingProcess {
146155
timer = nil
147156
}
148157

158+
private func cancelCurrentTaskOnBackground() {
159+
currentTask?.cancel()
160+
currentTask = nil
161+
}
162+
163+
@MainActor
164+
private func cancelCurrentUpload() async {
165+
self.currentUploadTask?.cancel()
166+
self.currentUploadRequest?.cancel()
167+
self.currentUploadTask = nil
168+
self.currentUploadRequest = nil
169+
}
170+
149171
private func handleTimerTick() async {
150172
if currentTask != nil {
151173
print("[NKLOG] current task is running")
@@ -157,6 +179,10 @@ actor NCNetworkingProcess {
157179
currentTask = nil
158180
}
159181

182+
if Task.isCancelled {
183+
return
184+
}
185+
160186
guard networking.isOnline,
161187
!currentAccount.isEmpty,
162188
networking.noServerErrorAccount(currentAccount)
@@ -207,6 +233,10 @@ actor NCNetworkingProcess {
207233
ScreenAwakeManager.shared.mode = resultsScreenAwake.isEmpty && !hasSyncTask ? .off : NCPreferences().screenAwakeMode
208234
}
209235

236+
if Task.isCancelled {
237+
return
238+
}
239+
210240
await runMetadataPipelineAsync(metadatas: metadatas)
211241

212242
// TODO: Check temperature
@@ -358,29 +388,28 @@ actor NCNetworkingProcess {
358388
// UPLOAD E2EE
359389
//
360390
if metadata.isDirectoryE2EE {
361-
var currentUploadTask: Task<(account: String, file: NKFile?, error: NKError), Never>?
362-
var request: UploadRequest?
363391
let controller = await getController(account: metadata.account, sceneIdentifier: metadata.sceneIdentifier)
364392
let scene = await SceneManager.shared.getWindow(sceneIdentifier: metadata.sceneIdentifier)?.windowScene
365393

366394
let token = await showUploadBanner(scene: scene,
367395
blocksTouches: true,
368396
onButtonTap: {
369-
if let currentUploadTask {
370-
currentUploadTask.cancel()
371-
}
372-
if let request {
373-
request.cancel()
397+
Task {
398+
await self.cancelCurrentUpload()
374399
}
375400
})
376401

377402
await NCNetworkingE2EEUpload().upload(metadata: metadata,
378403
controller: controller,
379404
stageBanner: .button,
380405
tokenBanner: token) { uploadRequest in
381-
request = uploadRequest
406+
Task {@MainActor in
407+
self.currentUploadRequest = uploadRequest
408+
}
382409
} currentUploadTask: { task in
383-
currentUploadTask = task
410+
Task {@MainActor in
411+
self.currentUploadTask = task
412+
}
384413
}
385414

386415
// wait dismiss banner before open another (loop)
@@ -405,7 +434,6 @@ actor NCNetworkingProcess {
405434

406435
@MainActor
407436
func uploadChunk(metadata: tableMetadata) async {
408-
var currentUploadTask: Task<(account: String, file: NKFile?, error: NKError), Never>?
409437
var tokenBanner: Int?
410438
let scene = SceneManager.shared.getWindow(sceneIdentifier: metadata.sceneIdentifier)?.windowScene
411439

@@ -416,9 +444,8 @@ actor NCNetworkingProcess {
416444
stage: .button,
417445
allowMinimizeOnTap: true,
418446
onButtonTap: {
419-
if let currentUploadTask {
420-
currentUploadTask.cancel()
421-
} else {
447+
Task {
448+
await self.cancelCurrentUpload()
422449
LucidBanner.shared.dismiss()
423450
}
424451
})

0 commit comments

Comments
 (0)