@kesha-antonov/react-native-background-downloader 3.0.0-beta.1 → 3.0.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/README.md
CHANGED
|
@@ -163,10 +163,12 @@ for (let task of lostTasks) {
|
|
|
163
163
|
### Using custom headers
|
|
164
164
|
If you need to send custom headers with your download request, you can do in it 2 ways:
|
|
165
165
|
|
|
166
|
-
1) Globally using `RNBackgroundDownloader.
|
|
166
|
+
1) Globally using `RNBackgroundDownloader.setConfig()`:
|
|
167
167
|
```javascript
|
|
168
|
-
RNBackgroundDownloader.
|
|
169
|
-
|
|
168
|
+
RNBackgroundDownloader.setConfig({
|
|
169
|
+
headers: {
|
|
170
|
+
Authorization: 'Bearer 2we$@$@Ddd223',
|
|
171
|
+
}
|
|
170
172
|
})
|
|
171
173
|
```
|
|
172
174
|
This way, all downloads with have the given headers.
|
|
@@ -190,7 +192,7 @@ let task = RNBackgroundDownloader.download({
|
|
|
190
192
|
console.log('Download canceled due to error: ', error)
|
|
191
193
|
})
|
|
192
194
|
```
|
|
193
|
-
Headers given in the `download` function are **merged** with the ones given in `
|
|
195
|
+
Headers given in the `download` function are **merged** with the ones given in `setConfig({ headers: { ... } })`.
|
|
194
196
|
|
|
195
197
|
## API
|
|
196
198
|
|
|
@@ -210,7 +212,7 @@ An object containing options properties
|
|
|
210
212
|
| `url` | String | ✅ | All | URL to file you want to download |
|
|
211
213
|
| `destination` | String | ✅ | All | Where to copy the file to once the download is done |
|
|
212
214
|
| `metadata` | Object | | All | Data to be preserved on reboot. |
|
|
213
|
-
| `headers` | Object | | All | Costume headers to add to the download request. These are merged with the headers given in the `
|
|
215
|
+
| `headers` | Object | | All | Costume headers to add to the download request. These are merged with the headers given in the `setConfig({ headers: { ... } })` function |
|
|
214
216
|
| `isAllowedOverRoaming` | Boolean | | Android | whether this download may proceed over a roaming connection. By default, roaming is allowed |
|
|
215
217
|
| `isAllowedOverMetered` | Boolean | | Android | Whether this download may proceed over a metered network connection. By default, metered networks are allowed |
|
|
216
218
|
|
|
@@ -228,11 +230,13 @@ Recommended to run at the init stage of the app.
|
|
|
228
230
|
|
|
229
231
|
`DownloadTask[]` - Array of tasks that were running in the background so you can re-attach callbacks to them
|
|
230
232
|
|
|
231
|
-
### `
|
|
232
|
-
|
|
233
|
-
Sets headers to use in all future downloads.
|
|
233
|
+
### `setConfig({})`
|
|
234
234
|
|
|
235
|
-
|
|
235
|
+
| Name | Type | Info |
|
|
236
|
+
| -------------- | ------ | ---------------------------------------------------------------------------------------------------- |
|
|
237
|
+
| `headers` | Object | optional headers to use in all future downloads |
|
|
238
|
+
| `progressInterval` | Number | Interval in which download progress sent from downloader. Number should be >= 250. It's in ms |
|
|
239
|
+
| `isLogsEnabled` | Boolean | Enables/disables logs in library |
|
|
236
240
|
|
|
237
241
|
### DownloadTask
|
|
238
242
|
|
|
@@ -38,7 +38,6 @@ public class OnProgress extends Thread {
|
|
|
38
38
|
|
|
39
39
|
private void handleInterrupt() {
|
|
40
40
|
try {
|
|
41
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress handleInterrupt. downloadId " + downloadId);
|
|
42
41
|
if (cursor != null) {
|
|
43
42
|
cursor.close();
|
|
44
43
|
}
|
|
@@ -50,11 +49,8 @@ public class OnProgress extends Thread {
|
|
|
50
49
|
|
|
51
50
|
@Override
|
|
52
51
|
public void run() {
|
|
53
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress-1. downloadId " + downloadId);
|
|
54
52
|
while (downloadId > 0) {
|
|
55
53
|
try {
|
|
56
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress-2. downloadId " + downloadId + " destination " + config.destination);
|
|
57
|
-
|
|
58
54
|
cursor = downloader.downloadManager.query(query);
|
|
59
55
|
|
|
60
56
|
if (!cursor.moveToFirst()) {
|
|
@@ -67,13 +63,10 @@ public class OnProgress extends Thread {
|
|
|
67
63
|
}
|
|
68
64
|
|
|
69
65
|
if (status == DownloadManager.STATUS_PAUSED) {
|
|
70
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress-2.1. downloadId " + downloadId);
|
|
71
66
|
Thread.sleep(5000);
|
|
72
67
|
} else if (status == DownloadManager.STATUS_PENDING) {
|
|
73
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress-2.2. downloadId " + downloadId);
|
|
74
68
|
Thread.sleep(1000);
|
|
75
69
|
} else {
|
|
76
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress-2.3. downloadId " + downloadId);
|
|
77
70
|
Thread.sleep(250);
|
|
78
71
|
}
|
|
79
72
|
|
|
@@ -90,9 +83,6 @@ public class OnProgress extends Thread {
|
|
|
90
83
|
lastBytesDownloaded = bytesDownloaded;
|
|
91
84
|
}
|
|
92
85
|
|
|
93
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress-3. downloadId " + downloadId + " bytesDownloaded "
|
|
94
|
-
+ bytesDownloaded + " bytesTotal " + bytesTotal);
|
|
95
|
-
|
|
96
86
|
if (lastBytesDownloaded > 0 && bytesTotal > 0) {
|
|
97
87
|
callback.onProgress(config.id, lastBytesDownloaded, bytesTotal);
|
|
98
88
|
}
|
|
@@ -102,11 +92,11 @@ public class OnProgress extends Thread {
|
|
|
102
92
|
|
|
103
93
|
try {
|
|
104
94
|
if (cursor != null) {
|
|
105
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress-5. downloadId " + downloadId);
|
|
106
95
|
cursor.close();
|
|
107
|
-
Log.d("RNBackgroundDownloader", "RNBD: OnProgress-6. downloadId " + downloadId);
|
|
108
96
|
}
|
|
109
97
|
} catch (Exception e) {
|
|
98
|
+
e.printStackTrace();
|
|
99
|
+
Log.e("RNBackgroundDownloader", "RNBD: OnProgress e: " + Log.getStackTraceString(e));
|
|
110
100
|
return;
|
|
111
101
|
}
|
|
112
102
|
}
|
|
@@ -94,19 +94,15 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
94
94
|
BroadcastReceiver downloadReceiver = new BroadcastReceiver() {
|
|
95
95
|
@Override
|
|
96
96
|
public void onReceive(Context context, Intent intent) {
|
|
97
|
-
Log.d(getName(), "RNBD: onReceive-1");
|
|
98
97
|
try {
|
|
99
98
|
long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
|
|
100
|
-
Log.d(getName(), "RNBD: onReceive-2 " + downloadId);
|
|
101
99
|
|
|
102
100
|
RNBGDTaskConfig config = downloadIdToConfig.get(downloadId);
|
|
103
101
|
|
|
104
102
|
if (config != null) {
|
|
105
|
-
Log.d(getName(), "RNBD: onReceive-3");
|
|
106
103
|
WritableMap downloadStatus = downloader.checkDownloadStatus(downloadId);
|
|
107
104
|
int status = downloadStatus.getInt("status");
|
|
108
105
|
|
|
109
|
-
Log.d(getName(), "RNBD: onReceive: status - " + status);
|
|
110
106
|
|
|
111
107
|
stopTrackingProgress(config.id);
|
|
112
108
|
|
|
@@ -115,11 +111,8 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
115
111
|
case DownloadManager.STATUS_SUCCESSFUL: {
|
|
116
112
|
// MOVES FILE TO DESTINATION
|
|
117
113
|
String localUri = downloadStatus.getString("localUri");
|
|
118
|
-
Log.d(getName(), "RNBD: onReceive: localUri " + localUri + " destination " + config.destination);
|
|
119
114
|
File file = new File(localUri);
|
|
120
|
-
Log.d(getName(), "RNBD: onReceive: file exists " + file.exists());
|
|
121
115
|
File dest = new File(config.destination);
|
|
122
|
-
Log.d(getName(), "RNBD: onReceive: dest exists " + dest.exists());
|
|
123
116
|
Files.move(file.toPath(), dest.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
|
124
117
|
|
|
125
118
|
WritableMap params = Arguments.createMap();
|
|
@@ -146,6 +139,7 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
146
139
|
}
|
|
147
140
|
}
|
|
148
141
|
} catch (Exception e) {
|
|
142
|
+
e.printStackTrace();
|
|
149
143
|
Log.e(getName(), "downloadReceiver: onReceive. " + Log.getStackTraceString(e));
|
|
150
144
|
}
|
|
151
145
|
}
|
|
@@ -236,8 +230,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
236
230
|
}
|
|
237
231
|
|
|
238
232
|
private void removeFromMaps(long downloadId) {
|
|
239
|
-
Log.d(getName(), "RNBD: removeFromMaps");
|
|
240
|
-
|
|
241
233
|
synchronized (sharedLock) {
|
|
242
234
|
RNBGDTaskConfig config = downloadIdToConfig.get(downloadId);
|
|
243
235
|
if (config != null) {
|
|
@@ -251,8 +243,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
251
243
|
}
|
|
252
244
|
|
|
253
245
|
private void saveDownloadIdToConfigMap() {
|
|
254
|
-
Log.d(getName(), "RNBD: saveDownloadIdToConfigMap");
|
|
255
|
-
|
|
256
246
|
synchronized (sharedLock) {
|
|
257
247
|
File file = new File(this.getReactApplicationContext().getFilesDir(), getName() + "_downloadIdToConfig");
|
|
258
248
|
try {
|
|
@@ -267,8 +257,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
267
257
|
}
|
|
268
258
|
|
|
269
259
|
private void loadDownloadIdToConfigMap() {
|
|
270
|
-
Log.d(getName(), "RNBD: loadDownloadIdToConfigMap");
|
|
271
|
-
|
|
272
260
|
File file = new File(this.getReactApplicationContext().getFilesDir(), getName() + "_downloadIdToConfig");
|
|
273
261
|
if (file.exists()) {
|
|
274
262
|
try {
|
|
@@ -281,8 +269,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
281
269
|
}
|
|
282
270
|
|
|
283
271
|
private void saveConfigMap () {
|
|
284
|
-
Log.d(getName(), "RNBD: saveConfigMap");
|
|
285
|
-
|
|
286
272
|
synchronized (sharedLock) {
|
|
287
273
|
File file = new File(this.getReactApplicationContext().getFilesDir(), getName() + "_config");
|
|
288
274
|
try {
|
|
@@ -300,8 +286,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
300
286
|
}
|
|
301
287
|
|
|
302
288
|
private void loadConfigMap () {
|
|
303
|
-
Log.d(getName(), "RNBD: loadConfigMap");
|
|
304
|
-
|
|
305
289
|
File file = new File(this.getReactApplicationContext().getFilesDir(), getName() + "_config");
|
|
306
290
|
if (file.exists()) {
|
|
307
291
|
try {
|
|
@@ -312,7 +296,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
312
296
|
String key = entry.getKey();
|
|
313
297
|
|
|
314
298
|
Object valueObj = entry.getValue();
|
|
315
|
-
Log.d(getName(), "RNBD: loadConfigMap-1 " + " key " + key + " valueObj " + valueObj);
|
|
316
299
|
String value = null;
|
|
317
300
|
if (valueObj instanceof Long) {
|
|
318
301
|
value = Long.toString((Long) valueObj);
|
|
@@ -354,8 +337,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
354
337
|
boolean isAllowedOverRoaming = options.getBoolean("isAllowedOverRoaming");
|
|
355
338
|
boolean isAllowedOverMetered = options.getBoolean("isAllowedOverMetered");
|
|
356
339
|
|
|
357
|
-
Log.d(getName(), "RNBD: download " + id + " " + url + " " + destination + " " + metadata + " " + progressInterval);
|
|
358
|
-
|
|
359
340
|
if (id == null || url == null || destination == null) {
|
|
360
341
|
Log.e(getName(), "id, url and destination must be set");
|
|
361
342
|
return;
|
|
@@ -398,8 +379,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
398
379
|
WritableMap downloadStatus = downloader.checkDownloadStatus(downloadId);
|
|
399
380
|
int status = downloadStatus.getInt("status");
|
|
400
381
|
|
|
401
|
-
Log.d(getName(), "RNBD: download-1. status: " + status + " downloadId: " + downloadId);
|
|
402
|
-
|
|
403
382
|
if (config.reportedBegin) {
|
|
404
383
|
return;
|
|
405
384
|
}
|
|
@@ -409,31 +388,24 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
409
388
|
}
|
|
410
389
|
|
|
411
390
|
private void startReportingTasks(Long downloadId, RNBGDTaskConfig config) {
|
|
412
|
-
Log.d(getName(), "RNBD: startReportingTasks-1 downloadId " + downloadId + " config.id " + config.id);
|
|
413
391
|
config.reportedBegin = true;
|
|
414
392
|
downloadIdToConfig.put(downloadId, config);
|
|
415
393
|
saveDownloadIdToConfigMap();
|
|
416
394
|
|
|
417
|
-
Log.d(getName(), "RNBD: startReportingTasks-2 downloadId: " + downloadId);
|
|
418
395
|
// report begin & progress
|
|
419
396
|
//
|
|
420
397
|
// overlaped with thread to not block main thread
|
|
421
398
|
new Thread(new Runnable() {
|
|
422
399
|
public void run() {
|
|
423
400
|
try {
|
|
424
|
-
Log.d(getName(), "RNBD: startReportingTasks-3 downloadId: " + downloadId);
|
|
425
|
-
|
|
426
401
|
while (true) {
|
|
427
402
|
WritableMap downloadStatus = downloader.checkDownloadStatus(downloadId);
|
|
428
403
|
int status = downloadStatus.getInt("status");
|
|
429
404
|
|
|
430
|
-
Log.d(getName(), "RNBD: startReportingTasks-3.1 " + status + " downloadId: " + downloadId);
|
|
431
|
-
|
|
432
405
|
if (status == DownloadManager.STATUS_RUNNING) {
|
|
433
406
|
break;
|
|
434
407
|
}
|
|
435
408
|
if (status == DownloadManager.STATUS_FAILED || status == DownloadManager.STATUS_SUCCESSFUL) {
|
|
436
|
-
Log.d(getName(), "RNBD: startReportingTasks-3.2 " + status + " downloadId: " + downloadId);
|
|
437
409
|
Thread.currentThread().interrupt();
|
|
438
410
|
}
|
|
439
411
|
|
|
@@ -446,7 +418,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
446
418
|
// wait for onBeginTh to finish
|
|
447
419
|
onBeginTh.join();
|
|
448
420
|
|
|
449
|
-
Log.d(getName(), "RNBD: startReportingTasks-4 downloadId: " + downloadId);
|
|
450
421
|
OnProgress onProgressTh = new OnProgress(
|
|
451
422
|
config,
|
|
452
423
|
downloadId,
|
|
@@ -454,12 +425,9 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
454
425
|
new ProgressCallback() {
|
|
455
426
|
@Override
|
|
456
427
|
public void onProgress(String configId, int bytesDownloaded, int bytesTotal) {
|
|
457
|
-
Log.d(getName(), "RNBD: onProgress-1 " + configId + " " + bytesDownloaded + " " + bytesTotal);
|
|
458
|
-
|
|
459
428
|
double prevPercent = configIdToPercent.get(configId);
|
|
460
429
|
double percent = (double) bytesDownloaded / bytesTotal;
|
|
461
430
|
if (percent - prevPercent > 0.01) {
|
|
462
|
-
Log.d(getName(), "RNBD: onProgress-2 " + configId + " " + bytesDownloaded + " " + bytesTotal);
|
|
463
431
|
WritableMap params = Arguments.createMap();
|
|
464
432
|
params.putString("id", configId);
|
|
465
433
|
params.putInt("bytesDownloaded", bytesDownloaded);
|
|
@@ -474,7 +442,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
474
442
|
now.getTime() - lastProgressReportedAt.getTime() > progressInterval &&
|
|
475
443
|
progressReports.size() > 0
|
|
476
444
|
) {
|
|
477
|
-
Log.d(getName(), "RNBD: onProgress-3 " + configId + " " + bytesDownloaded + " " + bytesTotal);
|
|
478
445
|
WritableArray reportsArray = Arguments.createArray();
|
|
479
446
|
for (Object report : progressReports.values()) {
|
|
480
447
|
reportsArray.pushMap((WritableMap) report);
|
|
@@ -488,20 +455,17 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
488
455
|
);
|
|
489
456
|
onProgressThreads.put(config.id, onProgressTh);
|
|
490
457
|
onProgressTh.start();
|
|
491
|
-
Log.d(getName(), "RNBD: startReportingTasks-5 downloadId: " + downloadId);
|
|
492
458
|
} catch (Exception e) {
|
|
493
|
-
|
|
459
|
+
e.printStackTrace();
|
|
460
|
+
Log.e(getName(), "RNBD: Runnable e: " + Log.getStackTraceString(e));
|
|
494
461
|
}
|
|
495
462
|
}
|
|
496
463
|
}).start();
|
|
497
|
-
Log.d(getName(), "RNBD: startReportingTasks-6 downloadId: " + downloadId);
|
|
498
464
|
}
|
|
499
465
|
|
|
500
466
|
// TODO: NOT WORKING WITH DownloadManager FOR NOW
|
|
501
467
|
@ReactMethod
|
|
502
468
|
public void pauseTask(String configId) {
|
|
503
|
-
Log.d(getName(), "RNBD: pauseTask " + configId);
|
|
504
|
-
|
|
505
469
|
synchronized (sharedLock) {
|
|
506
470
|
Long downloadId = configIdToDownloadId.get(configId);
|
|
507
471
|
if (downloadId != null) {
|
|
@@ -513,8 +477,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
513
477
|
// TODO: NOT WORKING WITH DownloadManager FOR NOW
|
|
514
478
|
@ReactMethod
|
|
515
479
|
public void resumeTask(String configId) {
|
|
516
|
-
Log.d(getName(), "RNBD: resumeTask " + configId);
|
|
517
|
-
|
|
518
480
|
synchronized (sharedLock) {
|
|
519
481
|
Long downloadId = configIdToDownloadId.get(configId);
|
|
520
482
|
if (downloadId != null) {
|
|
@@ -525,11 +487,8 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
525
487
|
|
|
526
488
|
@ReactMethod
|
|
527
489
|
public void stopTask(String configId) {
|
|
528
|
-
Log.d(getName(), "RNBD: stopTask-1 " + configId);
|
|
529
|
-
|
|
530
490
|
synchronized (sharedLock) {
|
|
531
491
|
Long downloadId = configIdToDownloadId.get(configId);
|
|
532
|
-
Log.d(getName(), "RNBD: stopTask-2 " + configId + " downloadId " + downloadId);
|
|
533
492
|
if (downloadId != null) {
|
|
534
493
|
// DELETES CONFIG HERE SO receiver WILL NOT THROW ERROR DOWNLOAD_FAILED TO THE
|
|
535
494
|
// USER
|
|
@@ -543,11 +502,8 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
543
502
|
|
|
544
503
|
@ReactMethod
|
|
545
504
|
public void completeHandler(String configId, final Promise promise) {
|
|
546
|
-
Log.d(getName(), "RNBD: completeHandler-1 " + configId);
|
|
547
|
-
|
|
548
505
|
synchronized (sharedLock) {
|
|
549
506
|
Long downloadId = configIdToDownloadId.get(configId);
|
|
550
|
-
Log.d(getName(), "RNBD: completeHandler-2 " + configId + " downloadId " + downloadId);
|
|
551
507
|
if (downloadId != null) {
|
|
552
508
|
removeFromMaps(downloadId);
|
|
553
509
|
// REMOVES DOWNLOAD FROM DownloadManager SO IT WOULD NOT BE RETURNED IN checkForExistingDownloads
|
|
@@ -558,8 +514,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
558
514
|
|
|
559
515
|
@ReactMethod
|
|
560
516
|
public void checkForExistingDownloads(final Promise promise) {
|
|
561
|
-
Log.d(getName(), "RNBD: checkForExistingDownloads-1");
|
|
562
|
-
|
|
563
517
|
WritableArray foundIds = Arguments.createArray();
|
|
564
518
|
|
|
565
519
|
synchronized (sharedLock) {
|
|
@@ -573,7 +527,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
573
527
|
Long downloadId = Long.parseLong(downloadStatus.getString("downloadId"));
|
|
574
528
|
|
|
575
529
|
if (downloadIdToConfig.containsKey(downloadId)) {
|
|
576
|
-
Log.d(getName(), "RNBD: checkForExistingDownloads-2");
|
|
577
530
|
RNBGDTaskConfig config = downloadIdToConfig.get(downloadId);
|
|
578
531
|
WritableMap params = Arguments.createMap();
|
|
579
532
|
params.putString("id", config.id);
|
|
@@ -596,7 +549,6 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
596
549
|
// TOREMOVE
|
|
597
550
|
// config.reportedBegin = true;
|
|
598
551
|
} else {
|
|
599
|
-
Log.d(getName(), "RNBD: checkForExistingDownloads-3");
|
|
600
552
|
downloader.cancelDownload(downloadId);
|
|
601
553
|
}
|
|
602
554
|
} while (cursor.moveToNext());
|
|
@@ -604,7 +556,8 @@ public class RNBackgroundDownloaderModule extends ReactContextBaseJavaModule {
|
|
|
604
556
|
|
|
605
557
|
cursor.close();
|
|
606
558
|
} catch (Exception e) {
|
|
607
|
-
|
|
559
|
+
e.printStackTrace();
|
|
560
|
+
Log.e(getName(), "CheckForExistingDownloads e: " + Log.getStackTraceString(e));
|
|
608
561
|
}
|
|
609
562
|
}
|
|
610
563
|
|
package/index.ts
CHANGED
|
@@ -4,6 +4,7 @@ import DownloadTask from './lib/DownloadTask'
|
|
|
4
4
|
const { RNBackgroundDownloader } = NativeModules
|
|
5
5
|
const RNBackgroundDownloaderEmitter = new NativeEventEmitter(RNBackgroundDownloader)
|
|
6
6
|
|
|
7
|
+
const MIN_PROGRESS_INTERVAL = 250
|
|
7
8
|
const tasksMap = new Map()
|
|
8
9
|
|
|
9
10
|
const config = {
|
|
@@ -24,11 +25,11 @@ RNBackgroundDownloaderEmitter.addListener('downloadBegin', ({ id, ...rest }) =>
|
|
|
24
25
|
})
|
|
25
26
|
|
|
26
27
|
RNBackgroundDownloaderEmitter.addListener('downloadProgress', events => {
|
|
27
|
-
|
|
28
|
+
log('[RNBackgroundDownloader] downloadProgress-1', events, tasksMap)
|
|
28
29
|
for (const event of events) {
|
|
29
30
|
const { id, ...rest } = event
|
|
30
31
|
const task = tasksMap.get(id)
|
|
31
|
-
|
|
32
|
+
log('[RNBackgroundDownloader] downloadProgress-2', id, task)
|
|
32
33
|
task?.onProgress(rest)
|
|
33
34
|
}
|
|
34
35
|
})
|
|
@@ -53,10 +54,10 @@ export function setConfig({ headers, progressInterval, isLogsEnabled }) {
|
|
|
53
54
|
if (typeof headers === 'object') config.headers = headers
|
|
54
55
|
|
|
55
56
|
if (progressInterval != null)
|
|
56
|
-
if (typeof progressInterval === 'number' && progressInterval >=
|
|
57
|
+
if (typeof progressInterval === 'number' && progressInterval >= MIN_PROGRESS_INTERVAL)
|
|
57
58
|
config.progressInterval = progressInterval
|
|
58
59
|
else
|
|
59
|
-
console.warn(`[RNBackgroundDownloader] progressInterval must be a number >=
|
|
60
|
+
console.warn(`[RNBackgroundDownloader] progressInterval must be a number >= ${MIN_PROGRESS_INTERVAL}. You passed ${progressInterval}`)
|
|
60
61
|
|
|
61
62
|
if (typeof isLogsEnabled === 'boolean') config.isLogsEnabled = isLogsEnabled
|
|
62
63
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kesha-antonov/react-native-background-downloader",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "A library for React-Native to help you download large files on iOS and Android both in the foreground and most importantly in the background.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -55,21 +55,21 @@
|
|
|
55
55
|
]
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@babel/core": "^7.23.
|
|
58
|
+
"@babel/core": "^7.23.7",
|
|
59
59
|
"@babel/eslint-parser": "^7.23.3",
|
|
60
|
-
"@babel/preset-env": "^7.23.
|
|
60
|
+
"@babel/preset-env": "^7.23.7",
|
|
61
61
|
"@babel/preset-typescript": "^7.23.3",
|
|
62
|
-
"@babel/runtime": "^7.23.
|
|
62
|
+
"@babel/runtime": "^7.23.7",
|
|
63
63
|
"@react-native/babel-preset": "^0.74.0",
|
|
64
64
|
"@react-native/eslint-config": "^0.74.0",
|
|
65
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
66
|
-
"@typescript-eslint/parser": "^6.
|
|
65
|
+
"@typescript-eslint/eslint-plugin": "^6.17.0",
|
|
66
|
+
"@typescript-eslint/parser": "^6.17.0",
|
|
67
67
|
"babel-jest": "^29.7.0",
|
|
68
68
|
"eslint": "^8.56.0",
|
|
69
69
|
"eslint-config-standard": "^17.1.0",
|
|
70
70
|
"eslint-config-standard-jsx": "^11.0.0",
|
|
71
71
|
"eslint-plugin-import": "^2.29.1",
|
|
72
|
-
"eslint-plugin-n": "^16.
|
|
72
|
+
"eslint-plugin-n": "^16.6.1",
|
|
73
73
|
"eslint-plugin-node": "^11.1.0",
|
|
74
74
|
"eslint-plugin-promise": "^6.1.1",
|
|
75
75
|
"eslint-plugin-react": "^7.33.2",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"lint-staged": ">=15",
|
|
81
81
|
"metro-react-native-babel-preset": "^0.77.0",
|
|
82
82
|
"react": "18.2.0",
|
|
83
|
-
"react-native": "0.73.
|
|
83
|
+
"react-native": "0.73.1",
|
|
84
84
|
"react-native-fs": "^2.20.0",
|
|
85
85
|
"react-native-vector-icons": "^10.0.3",
|
|
86
86
|
"react-test-renderer": "18.2.0",
|