mirror of
				https://gitcode.com/gh_mirrors/re/react-native-pushy.git
				synced 2025-10-31 13:23:12 +08:00 
			
		
		
		
	Refactor ios rollback
This commit is contained in:
		| @@ -84,7 +84,6 @@ RCT_EXPORT_MODULE(RCTPushy); | ||||
|         } | ||||
|         else { | ||||
|             NSString *curVersion = pushyInfo[paramCurrentVersion]; | ||||
|             NSString *lastVersion = pushyInfo[paramLastVersion]; | ||||
|              | ||||
|             BOOL isFirstTime = [pushyInfo[paramIsFirstTime] boolValue]; | ||||
|             BOOL isFirstLoadOK = [pushyInfo[paramIsFirstLoadOk] boolValue]; | ||||
| @@ -92,23 +91,7 @@ RCT_EXPORT_MODULE(RCTPushy); | ||||
|             NSString *loadVersion = curVersion; | ||||
|             BOOL needRollback = (!ignoreRollback && isFirstTime == NO && isFirstLoadOK == NO) || loadVersion.length<=0; | ||||
|             if (needRollback) { | ||||
|                 loadVersion = lastVersion; | ||||
|                  | ||||
|                 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 | ||||
|                 loadVersion = [self rollback]; | ||||
|             } | ||||
|             else if (isFirstTime && !ignoreRollback){ | ||||
|                 // bundleURL may be called many times, ignore rollbacks before process restarted again. | ||||
| @@ -121,13 +104,15 @@ RCT_EXPORT_MODULE(RCTPushy); | ||||
|                 [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]; | ||||
|                 if ([[NSFileManager defaultManager] fileExistsAtPath:bundlePath isDirectory:NULL]) { | ||||
|                     NSURL *bundleURL = [NSURL fileURLWithPath:bundlePath]; | ||||
|                     return bundleURL; | ||||
|                 } else { | ||||
|                     RCTLogError(@"RCTPushy -- bundle version %@ not found", loadVersion); | ||||
|                     loadVersion = [self rollback]; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| @@ -136,6 +121,29 @@ RCT_EXPORT_MODULE(RCTPushy); | ||||
|     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 { | ||||
|     // only set to YES if your module initialization relies on calling UIKit! | ||||
| 	return NO; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 sunnylqm
					sunnylqm