diff --git a/AlertAdapter.js b/AlertAdapter.js deleted file mode 100644 index 2fce5d025..000000000 --- a/AlertAdapter.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -var { Platform } = require("react-native"); -var Alert; - -if (Platform.OS === "android") { - var CodePushDialog = require("react-native").NativeModules.CodePushDialog; - Alert = { - alert: function(title, message, buttons) { - if (buttons.length > 2) { - throw "Can only show 2 buttons for Android dialog."; - } - - var button1Text = buttons[0] ? buttons[0].text : null; - var button2Text = buttons[1] ? buttons[1].text : null; - - CodePushDialog.showDialog( - title, message, button1Text, button2Text, - (buttonPressedId) => { - buttons[buttonPressedId].onPress && buttons[buttonPressedId].onPress(); - }, - (error) => { - throw error; - }); - } - }; -} else if (Platform.OS === "ios") { - var { AlertIOS } = require("react-native"); - Alert = AlertIOS; -} - -module.exports = { - Alert: Alert -} \ No newline at end of file diff --git a/CodePush.js b/CodePush.js index 183ff6541..89bda6917 100644 --- a/CodePush.js +++ b/CodePush.js @@ -1,6 +1,6 @@ 'use strict'; -var { Alert } = require("./AlertAdapter"); +var { Alert } = require("react-native"); var NativeCodePush = require("react-native").NativeModules.CodePush; var PackageMixins = require("./package-mixins")(NativeCodePush); var requestFetchAdapter = require("./request-fetch-adapter.js"); diff --git a/CodePushPackage.m b/CodePushPackage.m index 4cb98dc90..bcff1f8dc 100644 --- a/CodePushPackage.m +++ b/CodePushPackage.m @@ -434,7 +434,7 @@ + (void)copyEntriesInFolder:(NSString *)sourceFolder } } - [[NSFileManager defaultManager] moveItemAtPath:fullFilePath toPath:destFileName error:error]; + [[NSFileManager defaultManager] copyItemAtPath:fullFilePath toPath:destFileName error:error]; if (*error) { return; } diff --git a/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/resources/remotePackage.js b/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/resources/remotePackage.js index 5d3e57a68..9c167691b 100644 --- a/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/resources/remotePackage.js +++ b/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/resources/remotePackage.js @@ -1,4 +1,4 @@ -export default { +module.exports = { description: "Angry flappy birds", appVersion: "1.5.0", label: "2.4.0", diff --git a/Examples/CodePushDemoApp/android/app/build.gradle b/Examples/CodePushDemoApp/android/app/build.gradle index 630bf3861..14a6f6395 100644 --- a/Examples/CodePushDemoApp/android/app/build.gradle +++ b/Examples/CodePushDemoApp/android/app/build.gradle @@ -27,6 +27,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.0.0' - compile 'com.facebook.react:react-native:0.15.1' + compile 'com.facebook.react:react-native:0.17.0' compile project(':react-native-code-push') } diff --git a/Examples/CodePushDemoApp/android/app/proguard-rules.pro b/Examples/CodePushDemoApp/android/app/proguard-rules.pro index a92fa177e..ffa8c9f64 100644 --- a/Examples/CodePushDemoApp/android/app/proguard-rules.pro +++ b/Examples/CodePushDemoApp/android/app/proguard-rules.pro @@ -15,3 +15,46 @@ #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} + +# Disabling obfuscation is useful if you collect stack traces from production crashes +# (unless you are using a system that supports de-obfuscate the stack traces). +-dontobfuscate + +# React Native + +# Keep our interfaces so they can be used by other ProGuard rules. +# See http://sourceforge.net/p/proguard/bugs/466/ +-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip +-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters + +# Do not strip any method/class that is annotated with @DoNotStrip +-keep @com.facebook.proguard.annotations.DoNotStrip class * +-keepclassmembers class * { + @com.facebook.proguard.annotations.DoNotStrip *; +} + +-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { + void set*(***); + *** get*(); +} + +-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } +-keep class * extends com.facebook.react.bridge.NativeModule { *; } +-keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.ReactProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.ReactPropGroup ; } + +# okhttp + +-keepattributes Signature +-keepattributes *Annotation* +-keep class com.squareup.okhttp.** { *; } +-keep interface com.squareup.okhttp.** { *; } +-dontwarn com.squareup.okhttp.** + +# okio + +-keep class sun.misc.Unsafe { *; } +-dontwarn java.nio.file.* +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement +-dontwarn okio.** diff --git a/Examples/CodePushDemoApp/android/build.gradle b/Examples/CodePushDemoApp/android/build.gradle index 32bc6f5df..ccdfc4e3d 100644 --- a/Examples/CodePushDemoApp/android/build.gradle +++ b/Examples/CodePushDemoApp/android/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.3.0' + classpath 'com.android.tools.build:gradle:1.3.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/Examples/CodePushDemoApp/package.json b/Examples/CodePushDemoApp/package.json index 0ea078048..b604b32d7 100644 --- a/Examples/CodePushDemoApp/package.json +++ b/Examples/CodePushDemoApp/package.json @@ -6,7 +6,7 @@ "start": "node_modules/react-native/packager/packager.sh --root ../../" }, "dependencies": { - "react-native": "0.15.0", + "react-native": "0.17.0", "react-native-button": "^1.2.0", "react-native-code-push": "file:../../" }, diff --git a/android/app/build.gradle b/android/app/build.gradle index 3dc2a4e4e..e7ed48e63 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -24,5 +24,5 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.0.0' - compile 'com.facebook.react:react-native:0.15.1' + compile 'com.facebook.react:react-native:0.17.0' } \ No newline at end of file diff --git a/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java b/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java index 4ccb030cd..f22053bd0 100644 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java +++ b/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java @@ -501,11 +501,7 @@ private class CodePushReactPackage implements ReactPackage { public List createNativeModules(ReactApplicationContext reactApplicationContext) { List nativeModules = new ArrayList<>(); CodePush.this.codePushNativeModule = new CodePushNativeModule(reactApplicationContext); - CodePushDialog dialogModule = new CodePushDialog(reactApplicationContext, mainActivity); - nativeModules.add(CodePush.this.codePushNativeModule); - nativeModules.add(dialogModule); - return nativeModules; } diff --git a/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java b/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java deleted file mode 100644 index 6261934a8..000000000 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.microsoft.codepush.react; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.support.v4.app.FragmentActivity; - -import com.facebook.react.bridge.Callback; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; -import com.facebook.react.bridge.ReactMethod; - -public class CodePushDialog extends ReactContextBaseJavaModule{ - - Activity mainActivity; - - public CodePushDialog(ReactApplicationContext reactContext, Activity mainActivity) { - super(reactContext); - this.mainActivity = mainActivity; - } - - @ReactMethod - public void showDialog(String title, String message, String button1Text, String button2Text, - final Callback successCallback, Callback errorCallback) { - - FragmentActivity fragmentActivity = null; - try { - fragmentActivity = (FragmentActivity) mainActivity; - } catch (ClassCastException e) { - errorCallback.invoke("Unable to show dialog, main activity is not a FragmentActivity"); - return; - } - - AlertDialog.Builder builder = new AlertDialog.Builder(fragmentActivity); - - builder.setCancelable(false); - - DialogInterface.OnClickListener clickListener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - switch (which) { - case DialogInterface.BUTTON_POSITIVE: - successCallback.invoke(0); - break; - case DialogInterface.BUTTON_NEGATIVE: - successCallback.invoke(1); - break; - default: - throw new CodePushUnknownException("Unknown button ID pressed."); - } - } - }; - - if (title != null) { - builder.setTitle(title); - } - - if (message != null) { - builder.setMessage(message); - } - - if (button1Text != null) { - builder.setPositiveButton(button1Text, clickListener); - } - - if (button2Text != null) { - builder.setNegativeButton(button2Text, clickListener); - } - - AlertDialog dialog = builder.create(); - dialog.show(); - } - - @Override - public String getName() { - return "CodePushDialog"; - } -} diff --git a/package.json b/package.json index acf1dfc73..2a7eee902 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,6 @@ "semver": "^5.1.0" }, "devDependencies": { - "react-native": "0.15.0" + "react-native": "0.17.0" } }