@@ -81,6 +81,7 @@ public class Task<Progress, Value, Error>
81
81
public typealias RejectHandler = ( Error ) -> Void
82
82
public typealias Configuration = TaskConfiguration
83
83
84
+ public typealias ProgressTuple = ( oldProgress: Progress ? , newProgress: Progress )
84
85
public typealias BulkProgress = ( completedCount: Int , totalCount: Int )
85
86
86
87
public typealias PromiseInitClosure = ( fulfill: FulFillHandler , reject: RejectHandler ) -> Void
@@ -199,11 +200,10 @@ public class Task<Progress, Value, Error>
199
200
}
200
201
201
202
// TODO: how to nest these inside StateMachine's initClosure? (using `self` is not permitted)
202
- // NOTE: use order > 100 (default) to let `progressClosure(self.progress, newProgress)` be invoked first before updating old `self.progress`
203
- self . machine. addEventHandler ( . Progress, order: 110 ) { [ weak self] context in
204
- if let progress = context. userInfo as? Progress {
203
+ self . machine. addEventHandler ( . Progress, order: 90 ) { [ weak self] context in
204
+ if let progressTuple = context. userInfo as? ProgressTuple {
205
205
if let self_ = self {
206
- self_. progress = progress
206
+ self_. progress = progressTuple . newProgress
207
207
}
208
208
}
209
209
}
@@ -233,7 +233,8 @@ public class Task<Progress, Value, Error>
233
233
if weakified {
234
234
progressHandler = { [ weak self] ( progress: Progress ) in
235
235
if let self_ = self {
236
- self_. machine <-! ( . Progress, progress)
236
+ let oldProgress = self_. progress
237
+ self_. machine <-! ( . Progress, ( oldProgress, progress) )
237
238
}
238
239
}
239
240
@@ -251,7 +252,8 @@ public class Task<Progress, Value, Error>
251
252
}
252
253
else {
253
254
progressHandler = { ( progress: Progress ) in
254
- self . machine <-! ( . Progress, progress)
255
+ let oldProgress = self . progress
256
+ self . machine <-! ( . Progress, ( oldProgress, progress) )
255
257
return
256
258
}
257
259
@@ -278,11 +280,11 @@ public class Task<Progress, Value, Error>
278
280
self . _cancel ( error: nil )
279
281
}
280
282
281
- public func progress( progressClosure: ( oldProgress : Progress ? , newProgress : Progress ) -> Void ) -> Task
283
+ public func progress( progressClosure: ProgressTuple -> Void ) -> Task
282
284
{
283
285
self . machine. addEventHandler ( . Progress) { [ weak self] context in
284
- if let progress = context. userInfo as? Progress {
285
- progressClosure ( oldProgress : self ? . progress , newProgress : progress )
286
+ if let progressTuple = context. userInfo as? ProgressTuple {
287
+ progressClosure ( progressTuple )
286
288
}
287
289
}
288
290
0 commit comments