From e0bc8b00d23d6f5c88423bd9a22337ac358bb73c Mon Sep 17 00:00:00 2001 From: Nickolay Toropov Date: Thu, 24 May 2018 13:52:59 +0300 Subject: [PATCH] Fixed app crash caused by multiple callback invocation from java code. (#1289) Added CodePushUtils.log method for logging exceptions. --- .../codepush/react/CodePushDialog.java | 24 +++++++++++-------- .../codepush/react/CodePushUtils.java | 4 ++++ 2 files changed, 18 insertions(+), 10 deletions(-) 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 index e4d39cd..f1cecdd 100644 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java +++ b/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java @@ -57,16 +57,20 @@ public class CodePushDialog extends ReactContextBaseJavaModule{ 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."); + try { + 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."); + } + } catch (Throwable e) { + CodePushUtils.log(e); } } }; diff --git a/android/app/src/main/java/com/microsoft/codepush/react/CodePushUtils.java b/android/app/src/main/java/com/microsoft/codepush/react/CodePushUtils.java index 8bb7ac4..7c41a80 100644 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePushUtils.java +++ b/android/app/src/main/java/com/microsoft/codepush/react/CodePushUtils.java @@ -203,6 +203,10 @@ public class CodePushUtils { Log.d(CodePushConstants.REACT_NATIVE_LOG_TAG, "[CodePush] " + message); } + public static void log(Throwable tr) { + Log.e(CodePushConstants.REACT_NATIVE_LOG_TAG, "[CodePush] Exception", tr); + } + public static void logBundleUrl(String path) { log("Loading JS bundle from \"" + path + "\""); }