mirror of
https://github.com/zhigang1992/react-native-code-push.git
synced 2026-06-10 23:59:42 +08:00
76 lines
2.1 KiB
JavaScript
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;
|