mirror of
https://github.com/zhigang1992/react-native-code-push.git
synced 2026-06-10 15:49:36 +08:00
fix ios install to overwrite pending
This commit is contained in:
@@ -69,6 +69,7 @@ failCallback:(void (^)(NSError *err))failCallback;
|
||||
@interface CodePushPackage : NSObject
|
||||
|
||||
+ (void)installPackage:(NSDictionary *)updatePackage
|
||||
removePendingUpdate:(BOOL)removePendingUpdate
|
||||
error:(NSError **)error;
|
||||
|
||||
+ (NSDictionary *)getCurrentPackage:(NSError **)error;
|
||||
|
||||
@@ -446,6 +446,7 @@ RCT_EXPORT_METHOD(installUpdate:(NSDictionary*)updatePackage
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||
NSError *error;
|
||||
[CodePushPackage installPackage:updatePackage
|
||||
removePendingUpdate:[self isPendingUpdate:nil]
|
||||
error:&error];
|
||||
|
||||
if (error) {
|
||||
|
||||
@@ -449,6 +449,7 @@ NSString * const UnzippedFolderName = @"unzipped";
|
||||
}
|
||||
|
||||
+ (void)installPackage:(NSDictionary *)updatePackage
|
||||
removePendingUpdate:(BOOL)removePendingUpdate
|
||||
error:(NSError **)error
|
||||
{
|
||||
NSString *packageHash = updatePackage[@"packageHash"];
|
||||
@@ -458,19 +459,32 @@ NSString * const UnzippedFolderName = @"unzipped";
|
||||
return;
|
||||
}
|
||||
|
||||
NSString *previousPackageHash = [self getPreviousPackageHash:error];
|
||||
if (!*error && previousPackageHash && ![previousPackageHash isEqualToString:packageHash]) {
|
||||
NSString *previousPackageFolderPath = [self getPackageFolderPath:previousPackageHash];
|
||||
// Error in deleting old package will not cause the entire operation to fail.
|
||||
NSError *deleteError;
|
||||
[[NSFileManager defaultManager] removeItemAtPath:previousPackageFolderPath
|
||||
error:&deleteError];
|
||||
if (deleteError) {
|
||||
NSLog(@"Error deleting old package: %@", deleteError);
|
||||
if (!removePendingUpdate) {
|
||||
NSString *currentPackageFolderPath = [self getCurrentPackageFolderPath:error];
|
||||
if (!*error && currentPackageFolderPath) {
|
||||
// Error in deleting pending package will not cause the entire operation to fail.
|
||||
NSError *deleteError;
|
||||
[[NSFileManager defaultManager] removeItemAtPath:currentPackageFolderPath
|
||||
error:&deleteError];
|
||||
if (deleteError) {
|
||||
NSLog(@"Error deleting pending package: %@", deleteError);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
NSString *previousPackageHash = [self getPreviousPackageHash:error];
|
||||
if (!*error && previousPackageHash && ![previousPackageHash isEqualToString:packageHash]) {
|
||||
NSString *previousPackageFolderPath = [self getPackageFolderPath:previousPackageHash];
|
||||
// Error in deleting old package will not cause the entire operation to fail.
|
||||
NSError *deleteError;
|
||||
[[NSFileManager defaultManager] removeItemAtPath:previousPackageFolderPath
|
||||
error:&deleteError];
|
||||
if (deleteError) {
|
||||
NSLog(@"Error deleting old package: %@", deleteError);
|
||||
}
|
||||
}
|
||||
[info setValue:info[@"currentPackage"] forKey:@"previousPackage"];
|
||||
}
|
||||
|
||||
[info setValue:info[@"currentPackage"] forKey:@"previousPackage"];
|
||||
[info setValue:packageHash forKey:@"currentPackage"];
|
||||
|
||||
[self updateCurrentPackageInfo:info
|
||||
|
||||
Reference in New Issue
Block a user