mirror of
				https://gitcode.com/gh_mirrors/re/react-native-pushy.git
				synced 2025-10-31 21:33:12 +08:00 
			
		
		
		
	Refactor ios rollback
This commit is contained in:
		| @@ -84,7 +84,6 @@ RCT_EXPORT_MODULE(RCTPushy); | |||||||
|         } |         } | ||||||
|         else { |         else { | ||||||
|             NSString *curVersion = pushyInfo[paramCurrentVersion]; |             NSString *curVersion = pushyInfo[paramCurrentVersion]; | ||||||
|             NSString *lastVersion = pushyInfo[paramLastVersion]; |  | ||||||
|              |              | ||||||
|             BOOL isFirstTime = [pushyInfo[paramIsFirstTime] boolValue]; |             BOOL isFirstTime = [pushyInfo[paramIsFirstTime] boolValue]; | ||||||
|             BOOL isFirstLoadOK = [pushyInfo[paramIsFirstLoadOk] boolValue]; |             BOOL isFirstLoadOK = [pushyInfo[paramIsFirstLoadOk] boolValue]; | ||||||
| @@ -92,23 +91,7 @@ RCT_EXPORT_MODULE(RCTPushy); | |||||||
|             NSString *loadVersion = curVersion; |             NSString *loadVersion = curVersion; | ||||||
|             BOOL needRollback = (!ignoreRollback && isFirstTime == NO && isFirstLoadOK == NO) || loadVersion.length<=0; |             BOOL needRollback = (!ignoreRollback && isFirstTime == NO && isFirstLoadOK == NO) || loadVersion.length<=0; | ||||||
|             if (needRollback) { |             if (needRollback) { | ||||||
|                 loadVersion = lastVersion; |                 loadVersion = [self rollback]; | ||||||
|                  |  | ||||||
|                 if (lastVersion.length) { |  | ||||||
|                     // roll back to last version |  | ||||||
|                     [defaults setObject:@{paramCurrentVersion:lastVersion, |  | ||||||
|                                           paramIsFirstTime:@(NO), |  | ||||||
|                                           paramIsFirstLoadOk:@(YES), |  | ||||||
|                                           paramPackageVersion:curPackageVersion} |  | ||||||
|                                  forKey:keyPushyInfo]; |  | ||||||
|                 } |  | ||||||
|                 else { |  | ||||||
|                     // roll back to bundle |  | ||||||
|                     [defaults setObject:nil forKey:keyPushyInfo]; |  | ||||||
|                 } |  | ||||||
|                 [defaults setObject:@(YES) forKey:keyRolledBackMarked]; |  | ||||||
|                 [defaults synchronize]; |  | ||||||
|                 // ...need clear files later |  | ||||||
|             } |             } | ||||||
|             else if (isFirstTime && !ignoreRollback){ |             else if (isFirstTime && !ignoreRollback){ | ||||||
|                 // bundleURL may be called many times, ignore rollbacks before process restarted again. |                 // bundleURL may be called many times, ignore rollbacks before process restarted again. | ||||||
| @@ -121,13 +104,15 @@ RCT_EXPORT_MODULE(RCTPushy); | |||||||
|                 [defaults synchronize]; |                 [defaults synchronize]; | ||||||
|             } |             } | ||||||
|              |              | ||||||
|             if (loadVersion.length) { |             NSString *downloadDir = [RCTPushy downloadDir]; | ||||||
|                 NSString *downloadDir = [RCTPushy downloadDir]; |             while (loadVersion.length) { | ||||||
|                  |  | ||||||
|                 NSString *bundlePath = [[downloadDir stringByAppendingPathComponent:loadVersion] stringByAppendingPathComponent:BUNDLE_FILE_NAME]; |                 NSString *bundlePath = [[downloadDir stringByAppendingPathComponent:loadVersion] stringByAppendingPathComponent:BUNDLE_FILE_NAME]; | ||||||
|                 if ([[NSFileManager defaultManager] fileExistsAtPath:bundlePath isDirectory:NULL]) { |                 if ([[NSFileManager defaultManager] fileExistsAtPath:bundlePath isDirectory:NULL]) { | ||||||
|                     NSURL *bundleURL = [NSURL fileURLWithPath:bundlePath]; |                     NSURL *bundleURL = [NSURL fileURLWithPath:bundlePath]; | ||||||
|                     return bundleURL; |                     return bundleURL; | ||||||
|  |                 } else { | ||||||
|  |                     RCTLogError(@"RCTPushy -- bundle version %@ not found", loadVersion); | ||||||
|  |                     loadVersion = [self rollback]; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -136,6 +121,29 @@ RCT_EXPORT_MODULE(RCTPushy); | |||||||
|     return [RCTPushy binaryBundleURL]; |     return [RCTPushy binaryBundleURL]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | + (NSString *) rollback { | ||||||
|  |     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; | ||||||
|  |      | ||||||
|  |     NSDictionary *pushyInfo = [defaults dictionaryForKey:keyPushyInfo]; | ||||||
|  |     NSString *lastVersion = pushyInfo[paramLastVersion]; | ||||||
|  |     NSString *curPackageVersion = [RCTPushy packageVersion]; | ||||||
|  |     if (lastVersion.length) { | ||||||
|  |         // roll back to last version | ||||||
|  |         [defaults setObject:@{paramCurrentVersion:lastVersion, | ||||||
|  |                               paramIsFirstTime:@(NO), | ||||||
|  |                               paramIsFirstLoadOk:@(YES), | ||||||
|  |                               paramPackageVersion:curPackageVersion} | ||||||
|  |                      forKey:keyPushyInfo]; | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         // roll back to bundle | ||||||
|  |         [defaults setObject:nil forKey:keyPushyInfo]; | ||||||
|  |     } | ||||||
|  |     [defaults setObject:@(YES) forKey:keyRolledBackMarked]; | ||||||
|  |     [defaults synchronize]; | ||||||
|  |     return lastVersion; | ||||||
|  | } | ||||||
|  |  | ||||||
| + (BOOL)requiresMainQueueSetup { | + (BOOL)requiresMainQueueSetup { | ||||||
|     // only set to YES if your module initialization relies on calling UIKit! |     // only set to YES if your module initialization relies on calling UIKit! | ||||||
| 	return NO; | 	return NO; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 sunnylqm
					sunnylqm