@@ -7,7 +7,6 @@ @implementation CodePush
7
7
8
8
RCT_EXPORT_MODULE ()
9
9
10
- RCTBridge *_bridge;
11
10
NSTimer *_timer;
12
11
BOOL usingTestFolder = NO ;
13
12
@@ -38,34 +37,28 @@ + (NSURL *)getBundleUrl
38
37
}
39
38
40
39
// Internal API methods
41
- + (void )cancelRollbackTimer
40
+ - (void )cancelRollbackTimer
42
41
{
43
42
dispatch_async (dispatch_get_main_queue (), ^{
44
43
[_timer invalidate ];
45
44
});
46
45
}
47
46
48
- + (BOOL )isFailedHash : (NSString *)packageHash {
47
+ - (BOOL )isFailedHash : (NSString *)packageHash {
49
48
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults ];
50
49
NSMutableArray *failedUpdates = [preferences objectForKey: FailedUpdatesKey];
51
50
return (failedUpdates != nil && [failedUpdates containsObject: packageHash]);
52
51
}
53
52
54
- + (void )loadBundle
53
+ - (void )loadBundle
55
54
{
56
- dispatch_async (dispatch_get_main_queue (), ^{
57
- RCTRootView *rootView = [[RCTRootView alloc ] initWithBundleURL: [self getBundleUrl ]
58
- moduleName: [CodePushConfig getRootComponent ]
59
- initialProperties: nil
60
- launchOptions: nil ];
61
-
62
- UIViewController *rootViewController = [[UIViewController alloc ] init ];
63
- rootViewController.view = rootView;
64
- [UIApplication sharedApplication ].delegate .window .rootViewController = rootViewController;
65
- });
55
+ // Reset the runtime's bundle to be
56
+ // the latest URL, and then force a refresh
57
+ _bridge.bundleURL = [CodePush getBundleUrl ];
58
+ [_bridge reload ];
66
59
}
67
60
68
- + (void )rollbackPackage
61
+ - (void )rollbackPackage
69
62
{
70
63
NSError *error;
71
64
NSString *packageHash = [CodePushPackage getCurrentPackageHash: &error];
@@ -79,7 +72,7 @@ + (void)rollbackPackage
79
72
[self loadBundle ];
80
73
}
81
74
82
- + (void )saveFailedUpdate : (NSString *)packageHash {
75
+ - (void )saveFailedUpdate : (NSString *)packageHash {
83
76
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults ];
84
77
NSMutableArray *failedUpdates = [preferences objectForKey: FailedUpdatesKey];
85
78
if (failedUpdates == nil ) {
@@ -95,7 +88,7 @@ + (void)saveFailedUpdate:(NSString *)packageHash {
95
88
[preferences synchronize ];
96
89
}
97
90
98
- + (void )startRollbackTimer : (int )rollbackTimeout
91
+ - (void )startRollbackTimer : (int )rollbackTimeout
99
92
{
100
93
double timeoutInSeconds = rollbackTimeout / 1000 ;
101
94
_timer = [NSTimer scheduledTimerWithTimeInterval: timeoutInSeconds
@@ -121,11 +114,11 @@ + (void)startRollbackTimer:(int)rollbackTimeout
121
114
reject (error);
122
115
}
123
116
124
- [CodePush loadBundle ];
117
+ [self loadBundle ];
125
118
126
119
if (0 != rollbackTimeout) {
127
120
dispatch_async (dispatch_get_main_queue (), ^{
128
- [CodePush startRollbackTimer: rollbackTimeout];
121
+ [self startRollbackTimer: rollbackTimeout];
129
122
});
130
123
131
124
}
@@ -177,23 +170,23 @@ + (void)startRollbackTimer:(int)rollbackTimeout
177
170
}
178
171
179
172
RCT_EXPORT_METHOD (isFailedUpdate:(NSString *)packageHash
180
- resolve:(RCTPromiseResolveBlock)resolve
181
- reject:(RCTPromiseRejectBlock)reject)
173
+ resolve:(RCTPromiseResolveBlock)resolve
174
+ reject:(RCTPromiseRejectBlock)reject)
182
175
{
183
- BOOL isFailedHash = [CodePush isFailedHash: packageHash];
176
+ BOOL isFailedHash = [self isFailedHash: packageHash];
184
177
resolve (@(isFailedHash));
185
178
}
186
179
187
180
RCT_EXPORT_METHOD (notifyApplicationReady:(RCTPromiseResolveBlock)resolve
188
- rejecter:(RCTPromiseRejectBlock)reject)
181
+ rejecter:(RCTPromiseRejectBlock)reject)
189
182
{
190
- [CodePush cancelRollbackTimer ];
183
+ [self cancelRollbackTimer ];
191
184
resolve ([NSNull null ]);
192
185
}
193
186
194
187
RCT_EXPORT_METHOD (setUsingTestFolder:(BOOL )shouldUseTestFolder)
195
188
{
196
189
usingTestFolder = shouldUseTestFolder;
197
190
}
198
-
191
+
199
192
@end
0 commit comments