Skip to content

Commit a6000c1

Browse files
committed
Ensuring multi file uploads are performed on a dedicated dispatch queue.
1 parent 649dbf8 commit a6000c1

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

FilestackSDK/Internal/Uploaders/MultifileUpload.swift

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MultifileUpload: Uploader, DeferredAdd {
3030
private let apiKey: String
3131
private let options: UploadOptions
3232
private let security: Security?
33+
private let uploadQueue: DispatchQueue = DispatchQueue(label: "com.filestack.multi-upload-queue")
3334

3435
// MARK: - Lifecycle Functions
3536

@@ -44,7 +45,9 @@ class MultifileUpload: Uploader, DeferredAdd {
4445
self.security = security
4546

4647
if let uploadables = uploadables {
47-
enqueueUploadables(uploadables: uploadables)
48+
uploadQueue.sync {
49+
enqueueUploadables(uploadables: uploadables)
50+
}
4851
}
4952
}
5053

@@ -70,9 +73,11 @@ class MultifileUpload: Uploader, DeferredAdd {
7073
case .notStarted:
7174
fallthrough
7275
case .inProgress:
73-
shouldAbort = true
74-
currentOperation?.cancel()
75-
stopUpload()
76+
uploadQueue.sync {
77+
shouldAbort = true
78+
currentOperation?.cancel()
79+
stopUpload()
80+
}
7681

7782
return true
7883
default:
@@ -83,8 +88,10 @@ class MultifileUpload: Uploader, DeferredAdd {
8388
@discardableResult func start() -> Bool {
8489
switch currentStatus {
8590
case .notStarted:
86-
uploadNextFile()
87-
updateProgress()
91+
uploadQueue.sync {
92+
uploadNextFile()
93+
updateProgress()
94+
}
8895

8996
return true
9097
default:
@@ -101,7 +108,9 @@ class MultifileUpload: Uploader, DeferredAdd {
101108
@discardableResult func add(uploadables: [Uploadable]) -> Bool {
102109
switch currentStatus {
103110
case .notStarted:
104-
self.enqueueUploadables(uploadables: uploadables)
111+
uploadQueue.sync {
112+
self.enqueueUploadables(uploadables: uploadables)
113+
}
105114

106115
return true
107116
default:

0 commit comments

Comments
 (0)