From 2733af711e8a6c91a77e535b4c8fb1f6d8a71c8b Mon Sep 17 00:00:00 2001 From: Geoffrey Goh Date: Fri, 5 Feb 2016 17:04:27 -0800 Subject: [PATCH] fix android install to overwrite pending --- .../com/microsoft/codepush/react/CodePush.java | 2 +- .../codepush/react/CodePushPackage.java | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) 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 61560fe..8d07647 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 @@ -481,7 +481,7 @@ public class CodePush { @Override protected Void doInBackground(Object... params) { try { - codePushPackage.installPackage(updatePackage); + codePushPackage.installPackage(updatePackage, isPendingUpdate(null)); String pendingHash = CodePushUtils.tryGetString(updatePackage, codePushPackage.PACKAGE_HASH_KEY); if (pendingHash == null) { diff --git a/android/app/src/main/java/com/microsoft/codepush/react/CodePushPackage.java b/android/app/src/main/java/com/microsoft/codepush/react/CodePushPackage.java index faa20b9..714d459 100644 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePushPackage.java +++ b/android/app/src/main/java/com/microsoft/codepush/react/CodePushPackage.java @@ -259,15 +259,23 @@ public class CodePushPackage { CodePushUtils.writeReadableMapToFile(updatePackage, bundlePath); } - public void installPackage(ReadableMap updatePackage) throws IOException { + public void installPackage(ReadableMap updatePackage, boolean removePendingUpdate) throws IOException { String packageHash = CodePushUtils.tryGetString(updatePackage, PACKAGE_HASH_KEY); WritableMap info = getCurrentPackageInfo(); - String previousPackageHash = getPreviousPackageHash(); - if (previousPackageHash != null && !previousPackageHash.equals(packageHash)) { - FileUtils.deleteDirectoryAtPath(getPackageFolderPath(previousPackageHash)); + if (removePendingUpdate) { + String currentPackageFolderPath = getCurrentPackageFolderPath(); + if (currentPackageFolderPath != null) { + FileUtils.deleteDirectoryAtPath(currentPackageFolderPath); + } + } else { + String previousPackageHash = getPreviousPackageHash(); + if (previousPackageHash != null && !previousPackageHash.equals(packageHash)) { + FileUtils.deleteDirectoryAtPath(getPackageFolderPath(previousPackageHash)); + } + + info.putString(PREVIOUS_PACKAGE_KEY, CodePushUtils.tryGetString(info, CURRENT_PACKAGE_KEY)); } - info.putString(PREVIOUS_PACKAGE_KEY, CodePushUtils.tryGetString(info, CURRENT_PACKAGE_KEY)); info.putString(CURRENT_PACKAGE_KEY, packageHash); updateCurrentPackageInfo(info); }