From ee3b9e6f3baaf126b76630024b9f1b7ccadae3c3 Mon Sep 17 00:00:00 2001 From: Geoffrey Goh Date: Wed, 25 Nov 2015 18:29:01 -0800 Subject: [PATCH 1/2] delete-old-packages --- AlertAdapter.js | 2 +- CodePush.xcodeproj/project.pbxproj | 2 ++ CodePushPackage.m | 9 ++++++++ .../DownloadProgressTest.js | 2 +- .../DownloadProgressTests/TestPackages.js | 2 +- .../InstallUpdateTests/TestPackage.js | 2 +- .../microsoft/codepush/react/CodePush.java | 2 +- .../codepush/react/CodePushPackage.java | 5 +++++ .../codepush/react/CodePushUtils.java | 21 +++++++++++++++++++ package-mixins.js | 2 +- 10 files changed, 43 insertions(+), 6 deletions(-) diff --git a/AlertAdapter.js b/AlertAdapter.js index 4ea43c6..7277a23 100644 --- a/AlertAdapter.js +++ b/AlertAdapter.js @@ -1,6 +1,6 @@ 'use strict'; -var Platform = require("Platform"); +var Platform = require("react-native").Platform; var Alert; if (Platform.OS === "android") { diff --git a/CodePush.xcodeproj/project.pbxproj b/CodePush.xcodeproj/project.pbxproj index f35e615..a95de0a 100644 --- a/CodePush.xcodeproj/project.pbxproj +++ b/CodePush.xcodeproj/project.pbxproj @@ -217,6 +217,7 @@ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/node_modules/react-native/React/**", "$(SRCROOT)/Examples/CodePushDemoApp/node_modules/react-native/React/**", + "$(SRCROOT)/../react-native/React/**", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; @@ -233,6 +234,7 @@ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/node_modules/react-native/React/**", "$(SRCROOT)/Examples/CodePushDemoApp/node_modules/react-native/React/**", + "$(SRCROOT)/../react-native/React/**", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; diff --git a/CodePushPackage.m b/CodePushPackage.m index cb39daf..9e849a6 100644 --- a/CodePushPackage.m +++ b/CodePushPackage.m @@ -218,6 +218,15 @@ NSString * const UpdateBundleFileName = @"app.jsbundle"; return; } + NSString *previousPackageHash = [self getPreviousPackageHash:error]; + if (!*error && previousPackageHash && ![previousPackageHash isEqualToString:packageHash]) { + NSString *previousPackageFolderPath = [self getPackageFolderPath:previousPackageHash]; + [[NSFileManager defaultManager] removeItemAtPath:previousPackageFolderPath error:error]; + if (*error) { + return; + } + } + [info setValue:info[@"currentPackage"] forKey:@"previousPackage"]; [info setValue:packageHash forKey:@"currentPackage"]; diff --git a/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/DownloadProgressTest.js b/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/DownloadProgressTest.js index 63b876b..8442b8a 100644 --- a/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/DownloadProgressTest.js +++ b/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/DownloadProgressTest.js @@ -5,7 +5,7 @@ var { DeviceEventEmitter } = require("react-native"); var CodePushSdk = require("react-native-code-push"); var NativeCodePush = require("react-native").NativeModules.CodePush; var RCTTestModule = require('NativeModules').TestModule || {}; -var Platform = require("Platform"); +var Platform = require("react-native").Platform; var { Text, diff --git a/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/TestPackages.js b/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/TestPackages.js index 852d12d..a3744c9 100644 --- a/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/TestPackages.js +++ b/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/TestPackages.js @@ -1,4 +1,4 @@ -var Platform = require("Platform"); +var Platform = require("react-native").Platform; var packages = { smallPackage: { diff --git a/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/TestPackage.js b/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/TestPackage.js index 85db85c..dad2162 100644 --- a/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/TestPackage.js +++ b/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/TestPackage.js @@ -1,4 +1,4 @@ -var Platform = require("Platform"); +var Platform = require("react-native").Platform; var testPackage = { description: "Angry flappy birds", 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 a9a9550..d2139ba 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 @@ -275,7 +275,7 @@ public class CodePush { savePendingUpdate(pendingHash, rollbackTimeout); } - if (installMode != CodePushInstallMode.IMMEDIATE.getValue()) { + if (installMode == CodePushInstallMode.IMMEDIATE.getValue()) { loadBundle(); } else if (installMode == CodePushInstallMode.ON_NEXT_RESUME.getValue()) { // Ensure we do not add the listener twice. 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 603b17b..04c51e9 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 @@ -170,6 +170,11 @@ public class CodePushPackage { public void installPackage(ReadableMap updatePackage) throws IOException { String packageHash = CodePushUtils.tryGetString(updatePackage, PACKAGE_HASH_KEY); WritableMap info = getCurrentPackageInfo(); + String previousPackageHash = getPreviousPackageHash(); + if (previousPackageHash != null && !previousPackageHash.equals(packageHash)) { + CodePushUtils.deleteDirectoryAtPath(getPackageFolderPath(previousPackageHash)); + } + info.putString(PREVIOUS_PACKAGE_KEY, CodePushUtils.tryGetString(info, CURRENT_PACKAGE_KEY)); info.putString(CURRENT_PACKAGE_KEY, packageHash); updateCurrentPackageInfo(info); 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 0892f3a..ae02351 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 @@ -61,6 +61,27 @@ public class CodePushUtils { } } + public static void deleteDirectoryAtPath(String directoryPath) { + deleteDirectory(new File(directoryPath)); + } + + public static void deleteDirectory(File directory) { + if (directory.exists()) { + File[] files = directory.listFiles(); + if (files != null) { + for (int i=0; i { From d2cf60598cb2bff3934c72e5b5ec932fdd48d722 Mon Sep 17 00:00:00 2001 From: Geoffrey Goh Date: Wed, 25 Nov 2015 18:34:42 -0800 Subject: [PATCH 2/2] var {Platform} --- AlertAdapter.js | 2 +- .../DownloadProgressTests/DownloadProgressTest.js | 3 +-- .../CodePushDemoAppTests/DownloadProgressTests/TestPackages.js | 2 +- .../CodePushDemoAppTests/InstallUpdateTests/TestPackage.js | 2 +- package-mixins.js | 3 +-- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/AlertAdapter.js b/AlertAdapter.js index 7277a23..2fce5d0 100644 --- a/AlertAdapter.js +++ b/AlertAdapter.js @@ -1,6 +1,6 @@ 'use strict'; -var Platform = require("react-native").Platform; +var { Platform } = require("react-native"); var Alert; if (Platform.OS === "android") { diff --git a/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/DownloadProgressTest.js b/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/DownloadProgressTest.js index 8442b8a..75c61ed 100644 --- a/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/DownloadProgressTest.js +++ b/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/DownloadProgressTest.js @@ -1,11 +1,10 @@ "use strict"; var React = require("react-native"); -var { DeviceEventEmitter } = require("react-native"); +var { Platform, DeviceEventEmitter } = require("react-native"); var CodePushSdk = require("react-native-code-push"); var NativeCodePush = require("react-native").NativeModules.CodePush; var RCTTestModule = require('NativeModules').TestModule || {}; -var Platform = require("react-native").Platform; var { Text, diff --git a/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/TestPackages.js b/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/TestPackages.js index a3744c9..960ade2 100644 --- a/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/TestPackages.js +++ b/Examples/CodePushDemoApp/CodePushDemoAppTests/DownloadProgressTests/TestPackages.js @@ -1,4 +1,4 @@ -var Platform = require("react-native").Platform; +var { Platform } = require("react-native"); var packages = { smallPackage: { diff --git a/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/TestPackage.js b/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/TestPackage.js index dad2162..b80776c 100644 --- a/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/TestPackage.js +++ b/Examples/CodePushDemoApp/CodePushDemoAppTests/InstallUpdateTests/TestPackage.js @@ -1,4 +1,4 @@ -var Platform = require("react-native").Platform; +var { Platform } = require("react-native"); var testPackage = { description: "Angry flappy birds", diff --git a/package-mixins.js b/package-mixins.js index f339817..fe8b825 100644 --- a/package-mixins.js +++ b/package-mixins.js @@ -1,5 +1,4 @@ -var Platform = require("react-native").Platform; -var { DeviceEventEmitter } = require("react-native"); +var { Platform, DeviceEventEmitter } = require("react-native"); module.exports = (NativeCodePush) => { var remote = {