mirror of
				https://gitcode.com/gh_mirrors/re/react-native-pushy.git
				synced 2025-10-31 21:33:12 +08:00 
			
		
		
		
	bug fixed
This commit is contained in:
		| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 lvbingru
					lvbingru