fix android install to overwrite pending

This commit is contained in:
Geoffrey Goh
2016-02-05 17:04:27 -08:00
parent e34f51445b
commit 2733af711e
2 changed files with 14 additions and 6 deletions

View File

@@ -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) {

View File

@@ -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);
}