From 31e1b8ca9d64cba9911f36f3f63182f90ce4a1d5 Mon Sep 17 00:00:00 2001 From: Geoffrey Goh Date: Wed, 29 Jun 2016 15:54:45 -0700 Subject: [PATCH] no-op if the pending update is already installed --- .../microsoft/codepush/react/CodePushUpdateManager.java | 7 +++++++ ios/CodePush/CodePushPackage.m | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateManager.java b/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateManager.java index 294d06c..e7b8e95 100644 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateManager.java +++ b/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateManager.java @@ -275,6 +275,13 @@ public class CodePushUpdateManager { public void installPackage(ReadableMap updatePackage, boolean removePendingUpdate) { String packageHash = CodePushUtils.tryGetString(updatePackage, CodePushConstants.PACKAGE_HASH_KEY); WritableMap info = getCurrentPackageInfo(); + + String currentPackageHash = CodePushUtils.tryGetString(info, CodePushConstants.CURRENT_PACKAGE_KEY); + if (packageHash != null && packageHash.equals(currentPackageHash)) { + // The current package is already the one being installed, so we should no-op. + return; + } + if (removePendingUpdate) { String currentPackageFolderPath = getCurrentPackageFolderPath(); if (currentPackageFolderPath != null) { diff --git a/ios/CodePush/CodePushPackage.m b/ios/CodePush/CodePushPackage.m index e5d830f..8d9f88f 100644 --- a/ios/CodePush/CodePushPackage.m +++ b/ios/CodePush/CodePushPackage.m @@ -454,6 +454,11 @@ static NSString *const UnzippedFolderName = @"unzipped"; return; } + if (packageHash && [packageHash isEqualToString:info[@"currentPackage"]]) { + // The current package is already the one being installed, so we should no-op. + return; + } + if (removePendingUpdate) { NSString *currentPackageFolderPath = [self getCurrentPackageFolderPath:error]; if (!*error && currentPackageFolderPath) {