Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit c5ec811

Browse files
committed
feedback
1 parent a636482 commit c5ec811

File tree

16 files changed

+68
-167
lines changed

16 files changed

+68
-167
lines changed

CodePush.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
var requestFetchAdapter = require("./request-fetch-adapter.js");
44
var Sdk = require("code-push/script/acquisition-sdk").AcquisitionManager;
5-
var { NativeCodePush, PackageMixins, Alert } = require("./CodePushNativePlatformAdapter");
5+
var NativeCodePush = require("react-native").NativeModules.CodePush;
6+
var PackageMixins = require("./package-mixins")(NativeCodePush);
7+
var { Alert } = require("./CodePushNativePlatformAdapter");
68

79
function checkForUpdate(deploymentKey = null) {
810
var config, sdk;

CodePushNativePlatformAdapter.js

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,9 @@
11
'use strict';
22

3-
var NativeCodePush = require("react-native").NativeModules.CodePush;
4-
53
var Platform = require("Platform");
64
var Alert;
75

86
if (Platform.OS === "android") {
9-
/*
10-
* Promisify native methods. Assumes that every native method takes
11-
* two callback functions, resolve and reject.
12-
*/
13-
var methodsToPromisify = [
14-
"installUpdate",
15-
"downloadUpdate",
16-
"getConfiguration",
17-
"getCurrentPackage",
18-
"isFailedUpdate",
19-
"isFirstRun",
20-
"notifyApplicationReady",
21-
"setDeploymentKey"
22-
];
23-
24-
methodsToPromisify.forEach((methodName) => {
25-
var aMethod = NativeCodePush[methodName];
26-
NativeCodePush[methodName] = function() {
27-
var args = [].slice.apply(arguments);
28-
return new Promise((resolve, reject) => {
29-
args.push(resolve);
30-
args.push(reject);
31-
aMethod.apply(this, args);
32-
});
33-
}
34-
});
35-
367
var CodePushDialog = require("react-native").NativeModules.CodePushDialog;
378
Alert = {
389
alert: function(title, message, buttons) {
@@ -58,10 +29,6 @@ if (Platform.OS === "android") {
5829
Alert = AlertIOS;
5930
}
6031

61-
var PackageMixins = require("./package-mixins")(NativeCodePush);
62-
6332
module.exports = {
64-
NativeCodePush: NativeCodePush,
65-
PackageMixins: PackageMixins,
6633
Alert: Alert
6734
}

Examples/CodePushDemoApp/android/app/src/main/java/com/microsoft/codepushdemoapp/MainActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
1111
import com.facebook.react.shell.MainReactPackage;
1212
import com.facebook.soloader.SoLoader;
13-
import com.microsoft.reactnativecodepush.CodePush;
13+
import com.microsoft.codepush.react.CodePush;
1414

1515
public class MainActivity extends FragmentActivity implements DefaultHardwareBackBtnHandler {
1616

@@ -25,7 +25,7 @@ protected void onCreate(Bundle savedInstanceState) {
2525
super.onCreate(savedInstanceState);
2626
mReactRootView = new ReactRootView(this);
2727

28-
codePush = new CodePush("DEPLOYMENT_KEY_HERE", this);
28+
codePush = new CodePush("d73bf5d8-4fbd-4e55-a837-accd328a21ba", this);
2929

3030
ReactInstanceManager.Builder builder = ReactInstanceManager.builder()
3131
.setApplication(getApplication())

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ After installing the plugin and sync-ing your Android Studio project with Gradle
112112
```java
113113
...
114114
// 1. Import the plugin class
115-
import com.microsoft.reactnativecodepush.CodePush;
115+
import com.microsoft.codepush.react.CodePush;
116116
117117
// 2. Optional: extend FragmentActivity if you intend to show a dialog prompting users about updates.
118118
public class MainActivity extends FragmentActivity implements DefaultHardwareBackBtnHandler {
@@ -122,7 +122,6 @@ After installing the plugin and sync-ing your Android Studio project with Gradle
122122
protected void onCreate(Bundle savedInstanceState) {
123123
...
124124
// 3. Initialize CodePush with your deployment key and an instance of your MainActivity.
125-
// You can also set the deployment key in code by assigning the key to the `[CodePushConfig current].deploymentKey` property.*
126125
CodePush codePush = new CodePush("d73bf5d8-4fbd-4e55-a837-accd328a21ba", this);
127126
...
128127
mReactInstanceManager = ReactInstanceManager.builder()

android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2-
package="com.microsoft.reactnativecodepush">
2+
package="com.microsoft.codepush.react">
33

44
<uses-permission android:name="android.permission.INTERNET" />
55

android/app/src/main/java/com/microsoft/reactnativecodepush/CodePush.java renamed to android/app/src/main/java/com/microsoft/codepush/react/CodePush.java

Lines changed: 51 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package com.microsoft.reactnativecodepush;
1+
package com.microsoft.codepush.react;
22

33
import com.facebook.react.ReactPackage;
4-
import com.facebook.react.bridge.Callback;
54
import com.facebook.react.bridge.JavaScriptModule;
65
import com.facebook.react.bridge.LifecycleEventListener;
76
import com.facebook.react.bridge.NativeModule;
87
import com.facebook.react.bridge.ReactApplicationContext;
98
import com.facebook.react.bridge.ReactContextBaseJavaModule;
109
import com.facebook.react.bridge.ReactMethod;
10+
import com.facebook.react.bridge.Promise;
1111
import com.facebook.react.bridge.ReadableMap;
1212
import com.facebook.react.bridge.WritableMap;
1313
import com.facebook.react.bridge.WritableNativeMap;
@@ -19,6 +19,8 @@
1919
import android.content.Context;
2020
import android.content.Intent;
2121
import android.content.SharedPreferences;
22+
import android.content.pm.PackageInfo;
23+
import android.content.pm.PackageManager;
2224

2325
import org.json.JSONException;
2426
import org.json.JSONObject;
@@ -35,8 +37,6 @@
3537

3638
public class CodePush {
3739

38-
private String deploymentKey;
39-
4040
private boolean resumablePendingUpdateAvailable = false;
4141
private boolean didUpdate = false;
4242
private Timer timer;
@@ -55,7 +55,12 @@ public class CodePush {
5555
private CodePushPackage codePushPackage;
5656
private CodePushReactPackage codePushReactPackage;
5757
private CodePushNativeModule codePushNativeModule;
58-
private CodePushConfig codePushConfig;
58+
59+
// Config properties.
60+
private String deploymentKey;
61+
private String appVersion;
62+
private int buildVersion;
63+
private final String serverUrl = "https://codepush.azurewebsites.net/";
5964

6065
private Activity mainActivity;
6166
private Context applicationContext;
@@ -66,7 +71,17 @@ public CodePush(String deploymentKey, Activity mainActivity) {
6671
this.codePushPackage = new CodePushPackage(mainActivity.getFilesDir().getAbsolutePath());
6772
this.mainActivity = mainActivity;
6873
this.applicationContext = mainActivity.getApplicationContext();
69-
this.codePushConfig = new CodePushConfig(deploymentKey, this.applicationContext);
74+
this.deploymentKey = deploymentKey;
75+
76+
PackageInfo pInfo = null;
77+
try {
78+
pInfo = applicationContext.getPackageManager().getPackageInfo(applicationContext.getPackageName(), 0);
79+
appVersion = pInfo.versionName;
80+
buildVersion = pInfo.versionCode;
81+
} catch (PackageManager.NameNotFoundException e) {
82+
throw new CodePushUnknownException("Unable to get package info for " + applicationContext.getPackageName(), e);
83+
}
84+
7085
checkForPendingUpdate(/*needsRestart*/ false);
7186
}
7287

@@ -113,12 +128,14 @@ private void checkForPendingUpdate(boolean needsRestart) {
113128
JSONObject pendingUpdateJSON = new JSONObject(pendingUpdateString);
114129
String pendingHash = pendingUpdateJSON.getString(PENDING_UPDATE_HASH_KEY);
115130
String currentHash = codePushPackage.getCurrentPackageHash();
116-
if (pendingHash.equals(currentHash)) {
117-
int rollbackTimeout = pendingUpdateJSON.getInt(PENDING_UPDATE_ROLLBACK_TIMEOUT_KEY);
118-
initializeUpdateWithRollbackTimeout(rollbackTimeout, needsRestart);
119-
120-
settings.edit().remove(PENDING_UPDATE_KEY).commit();
131+
if (!pendingHash.equals(currentHash)) {
132+
throw new CodePushUnknownException("Pending hash " + pendingHash +
133+
" and current hash " + currentHash + " are different");
121134
}
135+
136+
int rollbackTimeout = pendingUpdateJSON.getInt(PENDING_UPDATE_ROLLBACK_TIMEOUT_KEY);
137+
initializeUpdateWithRollbackTimeout(rollbackTimeout, needsRestart);
138+
settings.edit().remove(PENDING_UPDATE_KEY).commit();
122139
} catch (JSONException e) {
123140
// Should not happen.
124141
throw new CodePushUnknownException("Unable to parse pending update metadata " +
@@ -136,16 +153,6 @@ private void checkForPendingUpdateDuringResume() {
136153
}
137154
}
138155

139-
private WritableMap constantsToExport() {
140-
// Export the values of the CodePushInstallMode enum
141-
// so that the script-side can easily stay in sync
142-
WritableMap map = new WritableNativeMap();
143-
map.putInt("codePushInstallModeImmediate", CodePushInstallMode.IMMEDIATE.getValue());
144-
map.putInt("codePushInstallModeOnNextRestart", CodePushInstallMode.ON_NEXT_RESTART.getValue());
145-
map.putInt("codePushInstallModeOnNextResume", CodePushInstallMode.ON_NEXT_RESUME.getValue());
146-
return map;
147-
}
148-
149156
private void initializeUpdateWithRollbackTimeout(int rollbackTimeout, boolean needsRestart) {
150157
didUpdate = true;
151158

@@ -248,15 +255,13 @@ public void run() {
248255
private class CodePushNativeModule extends ReactContextBaseJavaModule {
249256

250257
private void loadBundle() {
251-
String assetsBundleFileUrl = CodePush.this.getBundleUrl(CodePush.this.assetsBundleFileName);
252258
Intent intent = mainActivity.getIntent();
253259
mainActivity.finish();
254260
mainActivity.startActivity(intent);
255261
}
256262

257263
@ReactMethod
258-
public void installUpdate(ReadableMap updatePackage, int rollbackTimeout, int installMode,
259-
Callback resolve, Callback reject) {
264+
public void installUpdate(ReadableMap updatePackage, int rollbackTimeout, int installMode, Promise promise) {
260265
try {
261266
codePushPackage.installPackage(updatePackage);
262267
if (installMode != CodePushInstallMode.IMMEDIATE.getValue()) {
@@ -268,15 +273,15 @@ public void installUpdate(ReadableMap updatePackage, int rollbackTimeout, int in
268273
savePendingUpdate(pendingHash, rollbackTimeout);
269274
}
270275
}
271-
resolve.invoke("");
276+
promise.resolve("");
272277
} catch (IOException e) {
273278
e.printStackTrace();
274-
reject.invoke(e.getMessage());
279+
promise.reject(e.getMessage());
275280
}
276281
}
277282

278283
@ReactMethod
279-
public void downloadUpdate(final ReadableMap updatePackage, final Callback resolve, final Callback reject) {
284+
public void downloadUpdate(final ReadableMap updatePackage, final Promise promise) {
280285
try {
281286
codePushPackage.downloadPackage(applicationContext, updatePackage, new DownloadProgressCallback() {
282287
@Override
@@ -288,51 +293,56 @@ public void call(DownloadProgress downloadProgress) {
288293
});
289294

290295
WritableMap newPackage = codePushPackage.getPackage(CodePushUtils.tryGetString(updatePackage, codePushPackage.PACKAGE_HASH_KEY));
291-
resolve.invoke(newPackage);
296+
promise.resolve(newPackage);
292297
} catch (IOException e) {
293298
e.printStackTrace();
294-
reject.invoke(e.getMessage());
299+
promise.reject(e.getMessage());
295300
}
296301
}
297302

298303
@ReactMethod
299-
public void getConfiguration(Callback resolve, Callback reject) {
300-
resolve.invoke(codePushConfig.getConfiguration());
304+
public void getConfiguration(Promise promise) {
305+
WritableNativeMap configMap = new WritableNativeMap();
306+
configMap.putString("appVersion", appVersion);
307+
configMap.putInt("buildVersion", buildVersion);
308+
configMap.putString("deploymentKey", deploymentKey);
309+
configMap.putString("serverUrl", serverUrl);
310+
promise.resolve(configMap);
301311
}
302312

303313
@ReactMethod
304-
public void getCurrentPackage(Callback resolve, Callback reject) {
314+
public void getCurrentPackage(Promise promise) {
305315
try {
306-
resolve.invoke(codePushPackage.getCurrentPackage());
316+
promise.resolve(codePushPackage.getCurrentPackage());
307317
} catch (IOException e) {
308318
e.printStackTrace();
309-
reject.invoke(e.getMessage());
319+
promise.reject(e.getMessage());
310320
}
311321
}
312322

313323
@ReactMethod
314-
public void isFailedUpdate(String packageHash, Callback resolve, Callback reject) {
315-
resolve.invoke(isFailedHash(packageHash));
324+
public void isFailedUpdate(String packageHash, Promise promise) {
325+
promise.resolve(isFailedHash(packageHash));
316326
}
317327

318328
@ReactMethod
319-
public void isFirstRun(String packageHash, Callback resolve, Callback reject) {
329+
public void isFirstRun(String packageHash, Promise promise) {
320330
try {
321331
boolean isFirstRun = didUpdate
322332
&& packageHash != null
323333
&& packageHash.length() > 0
324334
&& packageHash.equals(codePushPackage.getCurrentPackageHash());
325-
resolve.invoke(isFirstRun);
335+
promise.resolve(isFirstRun);
326336
} catch (IOException e) {
327337
e.printStackTrace();
328-
reject.invoke(e.getMessage());
338+
promise.reject(e.getMessage());
329339
}
330340
}
331341

332342
@ReactMethod
333-
public void notifyApplicationReady(Callback resolve, Callback reject) {
343+
public void notifyApplicationReady(Promise promise) {
334344
cancelRollbackTimer();
335-
resolve.invoke("");
345+
promise.resolve("");
336346
}
337347

338348
@ReactMethod

android/app/src/main/java/com/microsoft/reactnativecodepush/CodePushDialog.java renamed to android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.microsoft.reactnativecodepush;
1+
package com.microsoft.codepush.react;
22

33
import android.app.Activity;
44
import android.app.AlertDialog;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.microsoft.reactnativecodepush;
1+
package com.microsoft.codepush.react;
22

33
public enum CodePushInstallMode {
44
IMMEDIATE(0),
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.microsoft.reactnativecodepush;
1+
package com.microsoft.codepush.react;
22

33
import java.net.MalformedURLException;
44

android/app/src/main/java/com/microsoft/reactnativecodepush/CodePushPackage.java renamed to android/app/src/main/java/com/microsoft/codepush/react/CodePushPackage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.microsoft.reactnativecodepush;
1+
package com.microsoft.codepush.react;
22

33
import android.content.Context;
44

0 commit comments

Comments
 (0)