Files
react-native-code-push/HybridMobileDeploy.ios.js

76 lines
2.1 KiB
JavaScript

/**
* @providesModule HybridMobileDeploy
* @flow
*/
'use strict';
var NativeHybridMobileDeploy = require('react-native').NativeModules.HybridMobileDeploy;
var requestFetchAdapter = require("./request-fetch-adapter.js");
var semver = require('semver');
var Sdk = require("code-push/script/acquisition-sdk").AcquisitionManager;
var sdk;
var config;
function getConfiguration(callback) {
if (config) {
setImmediate(function() {
callback(/*error=*/ null, config);
});
} else {
NativeHybridMobileDeploy.getConfiguration(function(err, configuration) {
if (err) callback(err);
config = configuration;
callback(/*error=*/ null, config);
});
}
}
function getSdk(callback) {
if (sdk) {
setImmediate(function() {
callback(/*error=*/ null, sdk);
});
} else {
getConfiguration(function(err, configuration) {
sdk = new Sdk(requestFetchAdapter, configuration);
callback(/*error=*/ null, sdk);
});
}
}
function queryUpdate(callback) {
getConfiguration(function(err, configuration) {
if (err) callback(err);
getSdk(function(err, sdk) {
if (err) callback(err);
NativeHybridMobileDeploy.getLocalPackage(function(err, localPackage) {
if(err){
console.log(err);
var pkg = {appVersion: configuration.appVersion};
sdk.queryUpdateWithCurrentPackage(pkg, callback);
}else if(localPackage == null){
var pkg = {appVersion: configuration.appVersion};
sdk.queryUpdateWithCurrentPackage(pkg, callback);
}else{
sdk.queryUpdateWithCurrentPackage(localPackage, callback);
}
});
});
});
}
function installUpdate(update) {
// use the downloaded package info. native code will save the package info
// so that the client knows what the current package version is.
NativeHybridMobileDeploy.installUpdate(update, JSON.stringify(update), (err) => console.log(err));
}
var HybridMobileDeploy = {
getConfiguration: getConfiguration,
queryUpdate: queryUpdate,
installUpdate: installUpdate
};
module.exports = HybridMobileDeploy;