|
@@ -57,24 +57,38 @@ class RNFetchBlobFetchPolyfill {
|
57
|
57
|
// task is a progress reportable and cancellable Promise, however,
|
58
|
58
|
// task.then is not, so we have to extend task.then with progress and
|
59
|
59
|
// cancel function
|
60
|
|
- let task = promise
|
|
60
|
+ let progressHandler, uploadHandler, cancelHandler
|
|
61
|
+ let statefulPromise = promise
|
61
|
62
|
.then((body) => {
|
62
|
|
- return RNFetchBlob.config(config)
|
63
|
|
- .fetch(options.method, url, options.headers, body)
|
|
63
|
+ let task = RNFetchBlob.config(config)
|
|
64
|
+ .fetch(options.method, url, options.headers, body)
|
|
65
|
+ if(progressHandler)
|
|
66
|
+ task.progress(progressHandler)
|
|
67
|
+ if(uploadHandler)
|
|
68
|
+ task.uploadProgress(uploadHandler)
|
|
69
|
+ if(cancelHandler)
|
|
70
|
+ task.cancel()
|
|
71
|
+ return task.then((resp) => {
|
|
72
|
+ log.verbose('response', resp)
|
|
73
|
+ // release blob cache created when sending request
|
|
74
|
+ if(blobCache !== null && blobCache instanceof Blob)
|
|
75
|
+ blobCache.close()
|
|
76
|
+ return Promise.resolve(new RNFetchBlobFetchRepsonse(resp))
|
|
77
|
+ })
|
64
|
78
|
})
|
65
|
79
|
|
66
|
|
- let statefulPromise = task.then((resp) => {
|
67
|
|
- log.verbose('response', resp)
|
68
|
|
- // release blob cache created when sending request
|
69
|
|
- if(blobCache !== null && blobCache instanceof Blob)
|
70
|
|
- blobCache.close()
|
71
|
|
- return Promise.resolve(new RNFetchBlobFetchRepsonse(resp))
|
72
|
|
- })
|
73
|
|
-
|
74
|
80
|
// extend task.then progress with report and cancelling functions
|
75
|
|
- statefulPromise.cancel = task.cancel
|
76
|
|
- statefulPromise.progress = task.progress
|
77
|
|
- statefulPromise.uploadProgress = task.uploadProgress
|
|
81
|
+ statefulPromise.progress = (fn) => {
|
|
82
|
+ progressHandler = fn
|
|
83
|
+ }
|
|
84
|
+ statefulPromise.uploadProgress = (fn) => {
|
|
85
|
+ uploadHandler = fn
|
|
86
|
+ }
|
|
87
|
+ statefulPromise.cancel = () => {
|
|
88
|
+ cancelHandler = true
|
|
89
|
+ if(task.cancel)
|
|
90
|
+ task.cancel()
|
|
91
|
+ }
|
78
|
92
|
|
79
|
93
|
return statefulPromise
|
80
|
94
|
|