From 2ce18b018030c2a061584ccf5cc2f8c9f50438ef Mon Sep 17 00:00:00 2001 From: Geoffrey Goh Date: Tue, 3 Nov 2015 20:49:47 -0800 Subject: [PATCH] is-first-run --- CodePush.ios.js | 4 ++++ CodePush.m | 31 +++++++++++++++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/CodePush.ios.js b/CodePush.ios.js index c475d80..4def417 100644 --- a/CodePush.ios.js +++ b/CodePush.ios.js @@ -61,6 +61,10 @@ function getCurrentPackage() { }) .then((failedUpdate) => { localPackage.failedApply = failedUpdate; + return NativeCodePush.isFirstRun(localPackage.packageHash); + }) + .then((isFirstRun) => { + localPackage.isFirstRun = isFirstRun; resolve(localPackage); }) .catch(reject) diff --git a/CodePush.m b/CodePush.m index afad6bb..dae7b7d 100644 --- a/CodePush.m +++ b/CodePush.m @@ -9,6 +9,7 @@ RCT_EXPORT_MODULE() NSTimer *_timer; BOOL usingTestFolder = NO; +BOOL didUpdate = NO; NSString * const FailedUpdatesKey = @"FAILED_UPDATES"; NSString * const UpdateBundleFileName = @"app.jsbundle"; @@ -112,15 +113,16 @@ RCT_EXPORT_METHOD(applyUpdate:(NSDictionary*)updatePackage if (error) { reject(error); - } - - [self loadBundle]; - - if (0 != rollbackTimeout) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self startRollbackTimer:rollbackTimeout]; - }); + } else { + didUpdate = YES; + [self loadBundle]; + + if (0 != rollbackTimeout) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self startRollbackTimer:rollbackTimeout]; + }); + } } }); } @@ -177,6 +179,19 @@ RCT_EXPORT_METHOD(isFailedUpdate:(NSString *)packageHash resolve(@(isFailedHash)); } +RCT_EXPORT_METHOD(isFirstRun:(NSString *)packageHash + resolve:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject) +{ + NSError *error; + BOOL isFirstRun = (nil != packageHash + && [packageHash length] > 0 + && [packageHash isEqualToString:[CodePushPackage getCurrentPackageHash:&error]] + && didUpdate); + resolve(@(isFirstRun)); +} + + RCT_EXPORT_METHOD(notifyApplicationReady:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {