@ammarahmed/react-native-upload 6.21.0 → 6.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -15
- package/ios/RNFileUploader.m +5 -1
- package/package.json +1 -1
- package/src/index.ts +27 -16
package/dist/index.d.ts
CHANGED
|
@@ -141,7 +141,7 @@ declare class Upload {
|
|
|
141
141
|
private startPromise;
|
|
142
142
|
private resolveStart;
|
|
143
143
|
private rejectStart;
|
|
144
|
-
private
|
|
144
|
+
private changeCallbacks;
|
|
145
145
|
constructor(config: UploadOptions);
|
|
146
146
|
/**
|
|
147
147
|
* Create a new upload instance or return existing one for the same path
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -41,7 +41,7 @@ import { NativeModules, DeviceEventEmitter, Platform, } from 'react-native';
|
|
|
41
41
|
var NativeModule = NativeModules.RNFileUploader;
|
|
42
42
|
var eventPrefix = 'RNFileUploader-';
|
|
43
43
|
// for IOS, register event listeners or else they don't fire on DeviceEventEmitter
|
|
44
|
-
if (NativeModules.RNFileUploader) {
|
|
44
|
+
if (NativeModules.RNFileUploader && NativeModule.addListener) {
|
|
45
45
|
NativeModule.addListener(eventPrefix + 'progress');
|
|
46
46
|
NativeModule.addListener(eventPrefix + 'error');
|
|
47
47
|
NativeModule.addListener(eventPrefix + 'cancelled');
|
|
@@ -90,7 +90,7 @@ var Upload = /** @class */ (function () {
|
|
|
90
90
|
this.startPromise = null;
|
|
91
91
|
this.resolveStart = null;
|
|
92
92
|
this.rejectStart = null;
|
|
93
|
-
this.
|
|
93
|
+
this.changeCallbacks = [];
|
|
94
94
|
this.config = config;
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
@@ -131,6 +131,10 @@ var Upload = /** @class */ (function () {
|
|
|
131
131
|
upload = new Upload({ url: '', path: '' });
|
|
132
132
|
upload.uploadId = uploadId;
|
|
133
133
|
upload.status = upload.mapNativeStateToStatus(uploadInfo.state);
|
|
134
|
+
upload.startPromise = new Promise(function (resolve, reject) {
|
|
135
|
+
upload.resolveStart = resolve;
|
|
136
|
+
upload.rejectStart = reject;
|
|
137
|
+
});
|
|
134
138
|
// Register and setup listeners
|
|
135
139
|
UploadRegistry.register(upload);
|
|
136
140
|
upload.setupEventListeners();
|
|
@@ -151,7 +155,9 @@ var Upload = /** @class */ (function () {
|
|
|
151
155
|
* Set a callback to be called whenever the upload state changes
|
|
152
156
|
*/
|
|
153
157
|
Upload.prototype.onChange = function (callback) {
|
|
154
|
-
this.
|
|
158
|
+
if (!this.changeCallbacks.find(function (cb) { return cb === callback; })) {
|
|
159
|
+
this.changeCallbacks.push(callback);
|
|
160
|
+
}
|
|
155
161
|
return this;
|
|
156
162
|
};
|
|
157
163
|
/**
|
|
@@ -164,18 +170,20 @@ var Upload = /** @class */ (function () {
|
|
|
164
170
|
return __generator(this, function (_b) {
|
|
165
171
|
switch (_b.label) {
|
|
166
172
|
case 0:
|
|
167
|
-
if (this.uploadId) {
|
|
168
|
-
throw new Error('Upload already started');
|
|
169
|
-
}
|
|
170
|
-
if (this.startPromise) {
|
|
173
|
+
if (this.uploadId && this.startPromise) {
|
|
171
174
|
return [2 /*return*/, this.startPromise];
|
|
172
175
|
}
|
|
173
|
-
if (!this.config.
|
|
176
|
+
if (!this.config.customUploadId) return [3 /*break*/, 2];
|
|
174
177
|
return [4 /*yield*/, getAllUploads()];
|
|
175
178
|
case 1:
|
|
176
179
|
nativeUploads = _b.sent();
|
|
177
|
-
existingUpload = nativeUploads.find(function (u) {
|
|
178
|
-
|
|
180
|
+
existingUpload = nativeUploads.find(function (u) {
|
|
181
|
+
return u.id === _this.config.customUploadId &&
|
|
182
|
+
u.state !== 'error' &&
|
|
183
|
+
u.state !== 'cancelled';
|
|
184
|
+
});
|
|
185
|
+
console.log('FOUND EXISTING UPLOAD?', existingUpload, nativeUploads);
|
|
186
|
+
if (existingUpload) {
|
|
179
187
|
console.warn("Found existing upload in native side. Resuming upload: ".concat(existingUpload.id));
|
|
180
188
|
this.uploadId = existingUpload.id;
|
|
181
189
|
this.status = this.mapNativeStateToStatus(existingUpload.state);
|
|
@@ -216,6 +224,7 @@ var Upload = /** @class */ (function () {
|
|
|
216
224
|
var _this = this;
|
|
217
225
|
// Progress listener
|
|
218
226
|
var progressSubscription = DeviceEventEmitter.addListener(eventPrefix + 'progress', function (data) {
|
|
227
|
+
console.log('progress', data.id);
|
|
219
228
|
if (_this.uploadId && data.id === _this.uploadId) {
|
|
220
229
|
_this.notifyChange({
|
|
221
230
|
status: UploadState.Running,
|
|
@@ -269,8 +278,8 @@ var Upload = /** @class */ (function () {
|
|
|
269
278
|
this.notifyChange({ status: status, error: error, responseCode: responseCode, responseBody: responseBody });
|
|
270
279
|
};
|
|
271
280
|
Upload.prototype.notifyChange = function (event) {
|
|
272
|
-
if (this.
|
|
273
|
-
this.
|
|
281
|
+
if (this.changeCallbacks.length) {
|
|
282
|
+
this.changeCallbacks.forEach(function (cb) { return cb(event); });
|
|
274
283
|
}
|
|
275
284
|
};
|
|
276
285
|
Upload.prototype.mapNativeStateToStatus = function (state) {
|
|
@@ -385,8 +394,17 @@ export var canSuspendIfBackground = function () {
|
|
|
385
394
|
export var shouldLimitNetwork = function (limit) {
|
|
386
395
|
NativeModule.shouldLimitNetwork(limit);
|
|
387
396
|
};
|
|
388
|
-
export var getAllUploads = function () {
|
|
389
|
-
|
|
390
|
-
|
|
397
|
+
export var getAllUploads = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
398
|
+
var allUploads;
|
|
399
|
+
return __generator(this, function (_a) {
|
|
400
|
+
switch (_a.label) {
|
|
401
|
+
case 0: return [4 /*yield*/, NativeModule.getAllUploads()];
|
|
402
|
+
case 1:
|
|
403
|
+
allUploads = _a.sent();
|
|
404
|
+
console.log(allUploads);
|
|
405
|
+
return [2 /*return*/, allUploads];
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
}); };
|
|
391
409
|
export { Upload };
|
|
392
410
|
export default Upload;
|
package/ios/RNFileUploader.m
CHANGED
|
@@ -417,7 +417,11 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {
|
|
|
417
417
|
{
|
|
418
418
|
progress = 100.0 * (float)totalBytesSent / (float)totalBytesExpectedToSend;
|
|
419
419
|
}
|
|
420
|
-
[self _sendEventWithName:@"RNFileUploader-progress" body:@{ @"id": task.taskDescription,
|
|
420
|
+
[self _sendEventWithName:@"RNFileUploader-progress" body:@{ @"id": task.taskDescription,
|
|
421
|
+
@"progress": [NSNumber numberWithFloat:progress],
|
|
422
|
+
@"totalBytes": [NSNumber numberWithInteger:totalBytesExpectedToSend],
|
|
423
|
+
@"uploadedBytes": [NSNumber numberWithInteger:totalBytesSent]
|
|
424
|
+
}];
|
|
421
425
|
}
|
|
422
426
|
|
|
423
427
|
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -130,7 +130,7 @@ const NativeModule = NativeModules.RNFileUploader;
|
|
|
130
130
|
const eventPrefix = 'RNFileUploader-';
|
|
131
131
|
|
|
132
132
|
// for IOS, register event listeners or else they don't fire on DeviceEventEmitter
|
|
133
|
-
if (NativeModules.RNFileUploader) {
|
|
133
|
+
if (NativeModules.RNFileUploader && NativeModule.addListener) {
|
|
134
134
|
NativeModule.addListener(eventPrefix + 'progress');
|
|
135
135
|
NativeModule.addListener(eventPrefix + 'error');
|
|
136
136
|
NativeModule.addListener(eventPrefix + 'cancelled');
|
|
@@ -208,7 +208,7 @@ class Upload {
|
|
|
208
208
|
private startPromise: Promise<UploadResult> | null = null;
|
|
209
209
|
private resolveStart: ((result: UploadResult) => void) | null = null;
|
|
210
210
|
private rejectStart: ((error: Error) => void) | null = null;
|
|
211
|
-
private
|
|
211
|
+
private changeCallbacks: ((event: UploadChangeEvent) => void)[] = [];
|
|
212
212
|
|
|
213
213
|
constructor(config: UploadOptions) {
|
|
214
214
|
this.config = config;
|
|
@@ -222,6 +222,7 @@ class Upload {
|
|
|
222
222
|
const existingUpload = config.customUploadId
|
|
223
223
|
? UploadRegistry.getById(config.customUploadId)
|
|
224
224
|
: null;
|
|
225
|
+
|
|
225
226
|
if (existingUpload && existingUpload.isRunning()) {
|
|
226
227
|
console.warn(
|
|
227
228
|
`Upload already in progress for path: ${
|
|
@@ -258,8 +259,14 @@ class Upload {
|
|
|
258
259
|
upload.uploadId = uploadId;
|
|
259
260
|
upload.status = upload.mapNativeStateToStatus(uploadInfo.state);
|
|
260
261
|
|
|
262
|
+
upload.startPromise = new Promise<UploadResult>((resolve, reject) => {
|
|
263
|
+
upload.resolveStart = resolve;
|
|
264
|
+
upload.rejectStart = reject;
|
|
265
|
+
});
|
|
266
|
+
|
|
261
267
|
// Register and setup listeners
|
|
262
268
|
UploadRegistry.register(upload);
|
|
269
|
+
|
|
263
270
|
upload.setupEventListeners();
|
|
264
271
|
|
|
265
272
|
return upload;
|
|
@@ -278,7 +285,9 @@ class Upload {
|
|
|
278
285
|
* Set a callback to be called whenever the upload state changes
|
|
279
286
|
*/
|
|
280
287
|
onChange(callback: (event: UploadChangeEvent) => void): this {
|
|
281
|
-
this.
|
|
288
|
+
if (!this.changeCallbacks.find(cb => cb === callback)) {
|
|
289
|
+
this.changeCallbacks.push(callback);
|
|
290
|
+
}
|
|
282
291
|
return this;
|
|
283
292
|
}
|
|
284
293
|
|
|
@@ -286,22 +295,21 @@ class Upload {
|
|
|
286
295
|
* Start the upload - resolves when upload completes, is cancelled, or errors
|
|
287
296
|
*/
|
|
288
297
|
async start(): Promise<UploadResult> {
|
|
289
|
-
if (this.uploadId) {
|
|
290
|
-
throw new Error('Upload already started');
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
if (this.startPromise) {
|
|
298
|
+
if (this.uploadId && this.startPromise) {
|
|
294
299
|
return this.startPromise;
|
|
295
300
|
}
|
|
296
|
-
|
|
297
301
|
// Check if there's an existing upload for this path in native side
|
|
298
|
-
if (this.config.
|
|
302
|
+
if (this.config.customUploadId) {
|
|
299
303
|
const nativeUploads = await getAllUploads();
|
|
300
304
|
const existingUpload = nativeUploads.find(
|
|
301
|
-
u =>
|
|
305
|
+
u =>
|
|
306
|
+
u.id === this.config.customUploadId &&
|
|
307
|
+
u.state !== 'error' &&
|
|
308
|
+
u.state !== 'cancelled',
|
|
302
309
|
);
|
|
310
|
+
console.log('FOUND EXISTING UPLOAD?', existingUpload, nativeUploads);
|
|
303
311
|
|
|
304
|
-
if (existingUpload
|
|
312
|
+
if (existingUpload) {
|
|
305
313
|
console.warn(
|
|
306
314
|
`Found existing upload in native side. Resuming upload: ${
|
|
307
315
|
existingUpload.id
|
|
@@ -344,6 +352,7 @@ class Upload {
|
|
|
344
352
|
const progressSubscription = DeviceEventEmitter.addListener(
|
|
345
353
|
eventPrefix + 'progress',
|
|
346
354
|
(data: ProgressData) => {
|
|
355
|
+
console.log('progress', data.id);
|
|
347
356
|
if (this.uploadId && data.id === this.uploadId) {
|
|
348
357
|
this.notifyChange({
|
|
349
358
|
status: UploadState.Running,
|
|
@@ -422,8 +431,8 @@ class Upload {
|
|
|
422
431
|
}
|
|
423
432
|
|
|
424
433
|
private notifyChange(event: UploadChangeEvent): void {
|
|
425
|
-
if (this.
|
|
426
|
-
this.
|
|
434
|
+
if (this.changeCallbacks.length) {
|
|
435
|
+
this.changeCallbacks.forEach(cb => cb(event));
|
|
427
436
|
}
|
|
428
437
|
}
|
|
429
438
|
|
|
@@ -545,8 +554,10 @@ export const shouldLimitNetwork = (limit: boolean): void => {
|
|
|
545
554
|
NativeModule.shouldLimitNetwork(limit);
|
|
546
555
|
};
|
|
547
556
|
|
|
548
|
-
export const getAllUploads = (): Promise<NativeUploadInfo[]> => {
|
|
549
|
-
|
|
557
|
+
export const getAllUploads = async (): Promise<NativeUploadInfo[]> => {
|
|
558
|
+
const allUploads = await NativeModule.getAllUploads();
|
|
559
|
+
console.log(allUploads);
|
|
560
|
+
return allUploads;
|
|
550
561
|
};
|
|
551
562
|
|
|
552
563
|
export { Upload };
|