Merge pull request #184 from Microsoft/fix-invalid-jsbundle-issue

Prevent crashes after downloading zip updates containing no valid jsbundle extension
This commit is contained in:
Geoffrey Goh
2016-02-04 16:25:29 -08:00
4 changed files with 15 additions and 2 deletions

View File

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

View File

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

View File

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

View File

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