From 142859e0df549ccd577145918857c4a06b1a8a17 Mon Sep 17 00:00:00 2001 From: Geoffrey Goh Date: Thu, 4 Feb 2016 13:29:30 -0800 Subject: [PATCH] fix invalid jsbundle issue --- CodePush.h | 2 +- CodePush.m | 4 ++++ CodePushPackage.m | 5 +++++ .../main/java/com/microsoft/codepush/react/CodePush.java | 6 +++++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CodePush.h b/CodePush.h index 437587f..34e191c 100644 --- a/CodePush.h +++ b/CodePush.h @@ -80,7 +80,7 @@ failCallback:(void (^)(NSError *err))failCallback; error:(NSError **)error; + (NSString *)getPackageFolderPath:(NSString *)packageHash; - ++ (BOOL)isCodePushError:(NSError *)err; + (void)downloadPackage:(NSDictionary *)updatePackage progressCallback:(void (^)(long long, long long))progressCallback diff --git a/CodePush.m b/CodePush.m index 982a12e..317e310 100644 --- a/CodePush.m +++ b/CodePush.m @@ -391,6 +391,10 @@ RCT_EXPORT_METHOD(downloadUpdate:(NSDictionary*)updatePackage } // The download failed failCallback:^(NSError *err) { + if ([CodePushPackage isCodePushError:err]) { + [self saveFailedUpdate:updatePackage]; + } + reject([NSString stringWithFormat: @"%lu", (long)err.code], err.localizedDescription, err); }]; }); diff --git a/CodePushPackage.m b/CodePushPackage.m index a31f51a..888c080 100644 --- a/CodePushPackage.m +++ b/CodePushPackage.m @@ -193,6 +193,11 @@ NSString * const UnzippedFolderName = @"unzipped"; return [[self getCodePushPath] stringByAppendingPathComponent:packageHash]; } ++ (BOOL)isCodePushError:(NSError *)err +{ + return err != nil && [CodePushErrorDomain isEqualToString:err.domain]; +} + + (void)downloadPackage:(NSDictionary *)updatePackage progressCallback:(void (^)(long long, long long))progressCallback doneCallback:(void (^)())doneCallback 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 a247724..61560fe 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 @@ -298,7 +298,7 @@ public class CodePush { removePendingUpdate(); } - private void saveFailedUpdate(WritableMap failedPackage) { + private void saveFailedUpdate(ReadableMap failedPackage) { SharedPreferences settings = applicationContext.getSharedPreferences(CODE_PUSH_PREFERENCES, 0); String failedUpdatesString = settings.getString(FAILED_UPDATES_KEY, null); JSONArray failedUpdates; @@ -379,6 +379,10 @@ public class CodePush { } catch (IOException e) { e.printStackTrace(); promise.reject(e.getMessage()); + } catch (CodePushInvalidUpdateException e) { + e.printStackTrace(); + saveFailedUpdate(updatePackage); + promise.reject(e.getMessage()); } return null;