From 9a3646faf510df694bac5949733c1dc0f58fa864 Mon Sep 17 00:00:00 2001 From: gcole Date: Wed, 9 Aug 2017 09:56:00 -0700 Subject: [PATCH] Fix ios offline pack bugs. - Only resume packs that aren't complete. - Don't fire events for invalid packs. --- index.js | 2 +- ios/RCTMapboxGL/RCTMapboxGLManager.m | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 65aac03..9c3ff8d 100644 --- a/index.js +++ b/index.js @@ -107,7 +107,7 @@ function bindCallbackToPromise(callback, promise) { } function initializeOfflinePacks() { - return new Promise((resolve, reject) => { + return new Promise((resolve) => { NativeAppEventEmitter.addListener('MapboxOfflinePacksLoaded', () => { resolve(); }); diff --git a/ios/RCTMapboxGL/RCTMapboxGLManager.m b/ios/RCTMapboxGL/RCTMapboxGLManager.m index 6b77baf..ee4d267 100644 --- a/ios/RCTMapboxGL/RCTMapboxGLManager.m +++ b/ios/RCTMapboxGL/RCTMapboxGLManager.m @@ -172,7 +172,9 @@ RCT_EXPORT_METHOD(setAccessToken:(nonnull NSString *)accessToken } for (MGLOfflinePack * pack in packs) { - [pack resume]; + if (pack.state != MGLOfflinePackStateComplete) { + [pack resume]; + } } [_bridge.eventDispatcher sendAppEventWithName:@"MapboxOfflinePacksLoaded" body:@{}]; } @@ -203,6 +205,9 @@ RCT_EXPORT_METHOD(setAccessToken:(nonnull NSString *)accessToken } - (void)firePackProgress:(MGLOfflinePack*)pack { + if (pack.state == MGLOfflinePackStateInvalid) { + return; + } NSDictionary *userInfo = [NSKeyedUnarchiver unarchiveObjectWithData:pack.context]; MGLOfflinePackProgress progress = pack.progress;