Skip to content
This repository was archived by the owner on Feb 27, 2022. It is now read-only.

Commit ff64252

Browse files
author
Elad Gil
committed
removed urlToConfigMap in favor of saving taskToConfigMap in storage since it's numbers now
1 parent 3ce84d8 commit ff64252

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

ios/RNBackgroundDownloader.m

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,13 @@
99
#import "RNBackgroundDownloader.h"
1010
#import "RNBGDTaskConfig.h"
1111

12-
#define URL_TO_CONFIG_MAP_KEY @"com.eko.bgdownloadmap"
12+
#define ID_TO_CONFIG_MAP_KEY @"com.eko.bgdownloadidmap"
1313

1414
static CompletionHandler storedCompletionHandler;
1515

1616
@implementation RNBackgroundDownloader {
1717
NSURLSession *urlSession;
1818
NSURLSessionConfiguration *sessionConfig;
19-
NSMutableDictionary<NSString *, RNBGDTaskConfig *> *urlToConfigMap;
2019
NSMutableDictionary<NSNumber *, RNBGDTaskConfig *> *taskToConfigMap;
2120
NSMutableDictionary<NSString *, NSURLSessionDownloadTask *> *idToTaskMap;
2221
NSMutableDictionary<NSString *, NSData *> *idToResumeDataMap;
@@ -55,11 +54,10 @@ - (NSDictionary *)constantsToExport {
5554
- (id) init {
5655
self = [super init];
5756
if (self) {
58-
urlToConfigMap = [self deserialize:[[NSUserDefaults standardUserDefaults] objectForKey:URL_TO_CONFIG_MAP_KEY]];
59-
if (urlToConfigMap == nil) {
60-
urlToConfigMap = [[NSMutableDictionary alloc] init];
57+
taskToConfigMap = [self deserialize:[[NSUserDefaults standardUserDefaults] objectForKey:ID_TO_CONFIG_MAP_KEY]];
58+
if (taskToConfigMap == nil) {
59+
taskToConfigMap = [[NSMutableDictionary alloc] init];
6160
}
62-
taskToConfigMap = [[NSMutableDictionary alloc] init];
6361
idToTaskMap = [[NSMutableDictionary alloc] init];
6462
idToResumeDataMap= [[NSMutableDictionary alloc] init];
6563
idToPercentMap = [[NSMutableDictionary alloc] init];
@@ -81,10 +79,9 @@ - (void)lazyInitSession {
8179
- (void)removeTaskFromMap: (NSURLSessionTask *)task {
8280
NSNumber *taskId = @(task.taskIdentifier);
8381
RNBGDTaskConfig *taskConfig = taskToConfigMap[taskId];
84-
[taskToConfigMap removeObjectForKey:taskId];
85-
@synchronized (urlToConfigMap) {
86-
[urlToConfigMap removeObjectForKey:task.currentRequest.URL.absoluteString];
87-
[[NSUserDefaults standardUserDefaults] setObject:[self serialize: urlToConfigMap] forKey:URL_TO_CONFIG_MAP_KEY];
82+
@synchronized (taskToConfigMap) {
83+
[taskToConfigMap removeObjectForKey:taskId];
84+
[[NSUserDefaults standardUserDefaults] setObject:[self serialize: taskToConfigMap] forKey:ID_TO_CONFIG_MAP_KEY];
8885
}
8986
if (taskConfig) {
9087
[idToTaskMap removeObjectForKey:taskConfig.id];
@@ -126,7 +123,10 @@ + (void)setCompletionHandlerWithIdentifier: (NSString *)identifier completionHan
126123

127124
NSURLSessionDownloadTask *task = [urlSession downloadTaskWithRequest:request];
128125
RNBGDTaskConfig *taskConfig = [[RNBGDTaskConfig alloc] initWithDictionary: @{@"id": identifier, @"destination": destination}];
129-
taskToConfigMap[@(task.taskIdentifier)] = taskConfig;
126+
@synchronized(taskToConfigMap) {
127+
taskToConfigMap[@(task.taskIdentifier)] = taskConfig;
128+
[[NSUserDefaults standardUserDefaults] setObject:[self serialize: taskToConfigMap] forKey:ID_TO_CONFIG_MAP_KEY];
129+
}
130130
idToTaskMap[identifier] = task;
131131
idToPercentMap[identifier] = @0.0;
132132

@@ -161,7 +161,7 @@ + (void)setCompletionHandlerWithIdentifier: (NSString *)identifier completionHan
161161
NSMutableArray *idsFound = [[NSMutableArray alloc] init];
162162
for (NSURLSessionDownloadTask *foundTask in downloadTasks) {
163163
NSURLSessionDownloadTask __strong *task = foundTask;
164-
RNBGDTaskConfig *taskConfig = urlToConfigMap[task.currentRequest.URL.absoluteString];
164+
RNBGDTaskConfig *taskConfig = taskToConfigMap[@(task.taskIdentifier)];
165165
if (taskConfig) {
166166
if (task.state == NSURLSessionTaskStateCompleted && task.countOfBytesReceived < task.countOfBytesExpectedToReceive) {
167167
if (task.error && task.error.code == -999 && task.error.userInfo[NSURLSessionDownloadTaskResumeData] != nil) {
@@ -221,8 +221,6 @@ - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTas
221221
if (taskCofig != nil) {
222222
if (!taskCofig.reportedBegin) {
223223
[self sendEventWithName:@"downloadBegin" body:@{@"id": taskCofig.id, @"expectedBytes": [NSNumber numberWithLongLong: totalBytesExpectedToWrite]}];
224-
urlToConfigMap[downloadTask.currentRequest.URL.absoluteString] = taskCofig;
225-
[[NSUserDefaults standardUserDefaults] setObject:[self serialize: urlToConfigMap] forKey:URL_TO_CONFIG_MAP_KEY];
226224
taskCofig.reportedBegin = YES;
227225
}
228226

0 commit comments

Comments
 (0)