|
1 | 1 | 'use strict';
|
2 | 2 |
|
| 3 | +var { AlertIOS } = require("react-native"); |
3 | 4 | var NativeCodePush = require("react-native").NativeModules.CodePush;
|
| 5 | +var packageMixins = require("./package-mixins")(NativeCodePush); |
4 | 6 | var requestFetchAdapter = require("./request-fetch-adapter.js");
|
5 | 7 | var Sdk = require("code-push/script/acquisition-sdk").AcquisitionManager;
|
6 |
| -var packageMixins = require("./package-mixins")(NativeCodePush); |
7 | 8 |
|
8 |
| -var { AlertIOS } = require("react-native"); |
| 9 | +function checkForUpdate() { |
| 10 | + var config; |
| 11 | + var sdk; |
| 12 | + |
| 13 | + return getConfiguration() |
| 14 | + .then((configResult) => { |
| 15 | + config = configResult; |
| 16 | + return getSdk(); |
| 17 | + }) |
| 18 | + .then((sdkResult) => { |
| 19 | + sdk = sdkResult; |
| 20 | + return getCurrentPackage(); |
| 21 | + }) |
| 22 | + .then((localPackage) => { |
| 23 | + var queryPackage = { appVersion: config.appVersion }; |
| 24 | + if (localPackage && localPackage.appVersion === config.appVersion) { |
| 25 | + queryPackage = localPackage; |
| 26 | + } |
9 | 27 |
|
10 |
| -// This function is only used for tests. Replaces the default SDK, configuration and native bridge |
11 |
| -function setUpTestDependencies(providedTestSdk, providedTestConfig, testNativeBridge){ |
12 |
| - if (providedTestSdk) testSdk = providedTestSdk; |
13 |
| - if (providedTestConfig) testConfig = providedTestConfig; |
14 |
| - if (testNativeBridge) NativeCodePush = testNativeBridge; |
| 28 | + return new Promise((resolve, reject) => { |
| 29 | + sdk.queryUpdateWithCurrentPackage(queryPackage, (err, update) => { |
| 30 | + if (err) { |
| 31 | + return reject(err); |
| 32 | + } |
| 33 | + |
| 34 | + // Ignore updates that require a newer app version, |
| 35 | + // since the end-user couldn't reliably install it |
| 36 | + if (!update || update.updateAppVersion) { |
| 37 | + return resolve(null); |
| 38 | + } |
| 39 | + |
| 40 | + update = Object.assign(update, packageMixins.remote); |
| 41 | + |
| 42 | + NativeCodePush.isFailedUpdate(update.packageHash) |
| 43 | + .then((isFailedHash) => { |
| 44 | + update.failedInstall = isFailedHash; |
| 45 | + resolve(update); |
| 46 | + }) |
| 47 | + .catch(reject) |
| 48 | + .done(); |
| 49 | + }) |
| 50 | + }); |
| 51 | + }); |
15 | 52 | }
|
16 |
| -var testConfig; |
17 |
| -var testSdk; |
| 53 | + |
| 54 | +var isConfigValid = true; |
18 | 55 |
|
19 | 56 | var getConfiguration = (() => {
|
20 | 57 | var config;
|
21 | 58 | return function getConfiguration() {
|
22 |
| - if (config) { |
| 59 | + if (config && isConfigValid) { |
23 | 60 | return Promise.resolve(config);
|
24 | 61 | } else if (testConfig) {
|
25 | 62 | return Promise.resolve(testConfig);
|
26 | 63 | } else {
|
27 | 64 | return NativeCodePush.getConfiguration()
|
28 | 65 | .then((configuration) => {
|
29 | 66 | if (!config) config = configuration;
|
| 67 | + isConfigValid = true; |
30 | 68 | return config;
|
31 | 69 | });
|
32 | 70 | }
|
@@ -71,54 +109,33 @@ function getCurrentPackage() {
|
71 | 109 | });
|
72 | 110 | }
|
73 | 111 |
|
74 |
| -function checkForUpdate() { |
75 |
| - var config; |
76 |
| - var sdk; |
77 |
| - |
78 |
| - return getConfiguration() |
79 |
| - .then((configResult) => { |
80 |
| - config = configResult; |
81 |
| - return getSdk(); |
82 |
| - }) |
83 |
| - .then((sdkResult) => { |
84 |
| - sdk = sdkResult; |
85 |
| - return getCurrentPackage(); |
86 |
| - }) |
87 |
| - .then((localPackage) => { |
88 |
| - var queryPackage = { appVersion: config.appVersion }; |
89 |
| - if (localPackage && localPackage.appVersion === config.appVersion) { |
90 |
| - queryPackage = localPackage; |
91 |
| - } |
| 112 | +/* Logs messages to console with the [CodePush] prefix */ |
| 113 | +function log(message) { |
| 114 | + console.log(`[CodePush] ${message}`) |
| 115 | +} |
92 | 116 |
|
93 |
| - return new Promise((resolve, reject) => { |
94 |
| - sdk.queryUpdateWithCurrentPackage(queryPackage, (err, update) => { |
95 |
| - if (err) { |
96 |
| - return reject(err); |
97 |
| - } |
98 |
| - |
99 |
| - // Ignore updates that require a newer app version, |
100 |
| - // since the end-user couldn't reliably install it |
101 |
| - if (!update || update.updateAppVersion) { |
102 |
| - return resolve(null); |
103 |
| - } |
| 117 | +function restartApp(rollbackTimeout = 0) { |
| 118 | + NativeCodePush.restartApp(rollbackTimeout); |
| 119 | +} |
104 | 120 |
|
105 |
| - update = Object.assign(update, packageMixins.remote); |
106 |
| - |
107 |
| - NativeCodePush.isFailedUpdate(update.packageHash) |
108 |
| - .then((isFailedHash) => { |
109 |
| - update.failedInstall = isFailedHash; |
110 |
| - resolve(update); |
111 |
| - }) |
112 |
| - .catch(reject) |
113 |
| - .done(); |
114 |
| - }) |
115 |
| - }); |
116 |
| - }); |
| 121 | +function setDeploymentKey(deploymentKey) { |
| 122 | + return NativeCodePush.setDeploymentKey(deploymentKey) |
| 123 | + .then(() => { |
| 124 | + // Mark the local copy of the config data |
| 125 | + // as invalid since we just modified it |
| 126 | + // on the native end. |
| 127 | + isConfigValid = false; |
| 128 | + }); |
117 | 129 | }
|
118 | 130 |
|
119 |
| -/* Logs messages to console with the [CodePush] prefix */ |
120 |
| -function log(message) { |
121 |
| - console.log(`[CodePush] ${message}`) |
| 131 | +var testConfig; |
| 132 | +var testSdk; |
| 133 | + |
| 134 | +// This function is only used for tests. Replaces the default SDK, configuration and native bridge |
| 135 | +function setUpTestDependencies(providedTestSdk, providedTestConfig, testNativeBridge) { |
| 136 | + if (providedTestSdk) testSdk = providedTestSdk; |
| 137 | + if (providedTestConfig) testConfig = providedTestConfig; |
| 138 | + if (testNativeBridge) NativeCodePush = testNativeBridge; |
122 | 139 | }
|
123 | 140 |
|
124 | 141 | /**
|
@@ -271,6 +288,8 @@ var CodePush = {
|
271 | 288 | getCurrentPackage: getCurrentPackage,
|
272 | 289 | log: log,
|
273 | 290 | notifyApplicationReady: NativeCodePush.notifyApplicationReady,
|
| 291 | + restartApp: restartApp, |
| 292 | + setDeploymentKey: setDeploymentKey, |
274 | 293 | setUpTestDependencies: setUpTestDependencies,
|
275 | 294 | sync: sync,
|
276 | 295 | InstallMode: {
|
|
0 commit comments