bug fixed
This commit is contained in:
parent
11ef71b978
commit
e2e95d6a23
@ -361,8 +361,11 @@ RCT_EXPORT_METHOD(markSuccess)
|
|||||||
callback(error);
|
callback(error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSDictionary *copies = json[@"copies"];
|
NSDictionary *copies = json[@"copies"];
|
||||||
[_fileManager copyFiles:copies fromDir:sourceOrigin toDir:unzipDir completionHandler:^(NSError *error) {
|
NSDictionary *deletes = json[@"deletes"];
|
||||||
|
|
||||||
|
[_fileManager copyFiles:copies fromDir:sourceOrigin toDir:unzipDir deletes:deletes completionHandler:^(NSError *error) {
|
||||||
if (error) {
|
if (error) {
|
||||||
callback(error);
|
callback(error);
|
||||||
}
|
}
|
||||||
@ -392,7 +395,7 @@ RCT_EXPORT_METHOD(markSuccess)
|
|||||||
|
|
||||||
for(NSString *fileName in list) {
|
for(NSString *fileName in list) {
|
||||||
if (![fileName isEqualToString:curVersion]) {
|
if (![fileName isEqualToString:curVersion]) {
|
||||||
[_fileManager removeFile:curVersion completionHandler:nil];
|
[_fileManager removeFile:[downloadDir stringByAppendingPathComponent:fileName] completionHandler:nil];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
- (void)copyFiles:(NSDictionary *)filesDic
|
- (void)copyFiles:(NSDictionary *)filesDic
|
||||||
fromDir:(NSString *)fromDir
|
fromDir:(NSString *)fromDir
|
||||||
toDir:(NSString *)toDir
|
toDir:(NSString *)toDir
|
||||||
|
deletes:(NSDictionary *)deletes
|
||||||
completionHandler:(void (^)(NSError *error))completionHandler;
|
completionHandler:(void (^)(NSError *error))completionHandler;
|
||||||
|
|
||||||
- (void)removeFile:(NSString *)filePath
|
- (void)removeFile:(NSString *)filePath
|
||||||
|
@ -91,9 +91,27 @@
|
|||||||
- (void)copyFiles:(NSDictionary *)filesDic
|
- (void)copyFiles:(NSDictionary *)filesDic
|
||||||
fromDir:(NSString *)fromDir
|
fromDir:(NSString *)fromDir
|
||||||
toDir:(NSString *)toDir
|
toDir:(NSString *)toDir
|
||||||
|
deletes:(NSDictionary *)deletes
|
||||||
completionHandler:(void (^)(NSError *error))completionHandler
|
completionHandler:(void (^)(NSError *error))completionHandler
|
||||||
{
|
{
|
||||||
dispatch_async(_opQueue, ^{
|
dispatch_async(_opQueue, ^{
|
||||||
|
NSFileManager *fm = [NSFileManager defaultManager];
|
||||||
|
|
||||||
|
// merge old files
|
||||||
|
if (deletes!= nil) {
|
||||||
|
NSError *error = nil;
|
||||||
|
NSString *srcDir = [fromDir stringByAppendingPathComponent:@"assets"];
|
||||||
|
NSString *desDir = [toDir stringByAppendingPathComponent:@"assets"];
|
||||||
|
[self _mergeContentsOfPath:srcDir intoPath:desDir deletes:deletes error:&error];
|
||||||
|
if (error) {
|
||||||
|
if (completionHandler) {
|
||||||
|
completionHandler(error);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy files
|
||||||
for (NSString *to in filesDic.allKeys) {
|
for (NSString *to in filesDic.allKeys) {
|
||||||
NSString *from = filesDic[to];
|
NSString *from = filesDic[to];
|
||||||
if (from.length <=0) {
|
if (from.length <=0) {
|
||||||
@ -102,8 +120,11 @@ completionHandler:(void (^)(NSError *error))completionHandler
|
|||||||
NSString *fromPath = [fromDir stringByAppendingPathComponent:from];
|
NSString *fromPath = [fromDir stringByAppendingPathComponent:from];
|
||||||
NSString *toPath = [toDir stringByAppendingPathComponent:to];
|
NSString *toPath = [toDir stringByAppendingPathComponent:to];
|
||||||
|
|
||||||
|
if ([fm fileExistsAtPath:toPath]) {
|
||||||
|
[fm removeItemAtPath:toPath error:nil];
|
||||||
|
}
|
||||||
NSError *error = nil;
|
NSError *error = nil;
|
||||||
[[NSFileManager defaultManager] copyItemAtPath:fromPath toPath:toPath error:&error];
|
[fm copyItemAtPath:fromPath toPath:toPath error:&error];
|
||||||
if (error) {
|
if (error) {
|
||||||
if (completionHandler) {
|
if (completionHandler) {
|
||||||
completionHandler(error);
|
completionHandler(error);
|
||||||
@ -129,4 +150,44 @@ completionHandler:(void (^)(NSError *error))completionHandler
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)_mergeContentsOfPath:(NSString *)srcDir intoPath:(NSString *)dstDir deletes:(NSDictionary *)deletes error:(NSError**)err
|
||||||
|
{
|
||||||
|
NSFileManager *fm = [NSFileManager defaultManager];
|
||||||
|
NSDirectoryEnumerator *srcDirEnum = [fm enumeratorAtPath:srcDir];
|
||||||
|
NSString *subPath;
|
||||||
|
while ((subPath = [srcDirEnum nextObject])) {
|
||||||
|
|
||||||
|
NSString *srcFullPath = [srcDir stringByAppendingPathComponent:subPath];
|
||||||
|
NSString *potentialDstPath = [dstDir stringByAppendingPathComponent:subPath];
|
||||||
|
|
||||||
|
BOOL isDirectory = ([fm fileExistsAtPath:srcFullPath isDirectory:&isDirectory] && isDirectory);
|
||||||
|
if (isDirectory) {
|
||||||
|
if (![fm fileExistsAtPath:potentialDstPath isDirectory:nil]) {
|
||||||
|
[fm createDirectoryAtPath:potentialDstPath withIntermediateDirectories:YES attributes:nil error:err];
|
||||||
|
if (err && *err) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
BOOL inDeletes = NO;
|
||||||
|
if (deletes) {
|
||||||
|
NSString *path = [@"assets" stringByAppendingPathComponent:subPath];
|
||||||
|
for (NSString *del in deletes) {
|
||||||
|
if ([subPath isEqualToString:path]) {
|
||||||
|
inDeletes = YES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!inDeletes && ![fm fileExistsAtPath:potentialDstPath]) {
|
||||||
|
[fm copyItemAtPath:srcFullPath toPath:potentialDstPath error:err];
|
||||||
|
if (err && *err) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
Loading…
Reference in New Issue
Block a user