mirror of
https://github.com/zhigang1992/react-native-code-push.git
synced 2026-06-11 08:04:23 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}];
|
||||
});
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user