From 0798cd9abc7eab3289417170e8490892b656b0c9 Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Tue, 1 Sep 2015 14:24:41 -0700 Subject: [PATCH] Convert checkForUpdate to return a promise --- CodePush.ios.js | 31 ++++++++++++++++----------- CodePush.m | 9 ++++---- Examples/CodePushDemoApp/index.ios.js | 2 +- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/CodePush.ios.js b/CodePush.ios.js index 0553216..d4bee28 100644 --- a/CodePush.ios.js +++ b/CodePush.ios.js @@ -48,20 +48,27 @@ var getSdk = (() => { })(); function checkForUpdate(callback) { - getConfiguration().then(function(configuration) { - getSdk.then(function(sdk) { - NativeCodePush.getLocalPackage(function(err, localPackage) { - var queryPackage = {appVersion: configuration.appVersion}; - if (!err && localPackage && localPackage.appVersion === configuration.appVersion) { - queryPackage = localPackage; - } else if (err) { - console.log(err); - } + var config; + var sdk; + return getConfiguration() + .then((configResult) => { + config = configResult; + return getSdk(); + }) + .then((sdkResult) => { + sdk = sdkResult; + return NativeCodePush.getLocalPackage(); + }) + .then((localPackage) => { + var queryPackage = {appVersion: config.appVersion}; + if (localPackage && localPackage.appVersion === config.appVersion) { + queryPackage = localPackage; + } else if (err) { + console.log(err); + } - sdk.queryUpdateWithCurrentPackage(queryPackage, callback); - }); + sdk.queryUpdateWithCurrentPackage(queryPackage, callback); }); - }); } function download(updatePackage) { diff --git a/CodePush.m b/CodePush.m index 17b4815..2c66845 100644 --- a/CodePush.m +++ b/CodePush.m @@ -189,7 +189,8 @@ RCT_EXPORT_METHOD(removeLocalPackage: (RCTResponseSenderBlock)callback) } -RCT_EXPORT_METHOD(getLocalPackage: (RCTResponseSenderBlock)callback) +RCT_EXPORT_METHOD(getLocalPackage:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject) { NSString *path = [CodePush getPackagePath]; @@ -199,7 +200,7 @@ RCT_EXPORT_METHOD(getLocalPackage: (RCTResponseSenderBlock)callback) NSError* readError; NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&readError]; if (readError) { - callback(@[RCTMakeError(@"Error finding local package ", readError, [[NSDictionary alloc] initWithObjectsAndKeys:path,@"packagePath", nil]), [NSNull null]]); + reject(readError); } else { NSError * parseError; NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding]; @@ -207,9 +208,9 @@ RCT_EXPORT_METHOD(getLocalPackage: (RCTResponseSenderBlock)callback) options:kNilOptions error:&parseError]; if (parseError) { - callback(@[RCTMakeError(@"Error parsing contents of local package ", parseError, [[NSDictionary alloc] initWithObjectsAndKeys:path,@"packagePath", nil]), [NSNull null]]); + reject(parseError); } else { - callback(@[[NSNull null], json]); + resolve(json); } } }); diff --git a/Examples/CodePushDemoApp/index.ios.js b/Examples/CodePushDemoApp/index.ios.js index 5d1c03c..bbd792d 100644 --- a/Examples/CodePushDemoApp/index.ios.js +++ b/Examples/CodePushDemoApp/index.ios.js @@ -22,7 +22,7 @@ var CodePushDemoApp = React.createClass({ this.fetchData(); }, fetchData: function() { - CodePush.checkForUpdate((err, update) => { + CodePush.checkForUpdate().done((update) => { this.setState({ update: update }); }); },