@@ -9,6 +9,7 @@ @implementation CodePush
9
9
10
10
NSTimer *_timer;
11
11
BOOL usingTestFolder = NO ;
12
+ BOOL didUpdate = NO ;
12
13
13
14
NSString * const FailedUpdatesKey = @" FAILED_UPDATES" ;
14
15
NSString * const UpdateBundleFileName = @" app.jsbundle" ;
@@ -112,15 +113,16 @@ - (void)startRollbackTimer:(int)rollbackTimeout
112
113
113
114
if (error) {
114
115
reject (error);
115
- }
116
-
117
- [self loadBundle ];
118
-
119
- if (0 != rollbackTimeout) {
120
- dispatch_async (dispatch_get_main_queue (), ^{
121
- [self startRollbackTimer: rollbackTimeout];
122
- });
116
+ } else {
117
+ didUpdate = YES ;
118
+
119
+ [self loadBundle ];
123
120
121
+ if (0 != rollbackTimeout) {
122
+ dispatch_async (dispatch_get_main_queue (), ^{
123
+ [self startRollbackTimer: rollbackTimeout];
124
+ });
125
+ }
124
126
}
125
127
});
126
128
}
@@ -177,6 +179,19 @@ - (void)startRollbackTimer:(int)rollbackTimeout
177
179
resolve (@(isFailedHash));
178
180
}
179
181
182
+ RCT_EXPORT_METHOD (isFirstRun:(NSString *)packageHash
183
+ resolve:(RCTPromiseResolveBlock)resolve
184
+ rejecter:(RCTPromiseRejectBlock)reject)
185
+ {
186
+ NSError *error;
187
+ BOOL isFirstRun = (nil != packageHash
188
+ && [packageHash length ] > 0
189
+ && [packageHash isEqualToString: [CodePushPackage getCurrentPackageHash: &error]]
190
+ && didUpdate);
191
+ resolve (@(isFirstRun));
192
+ }
193
+
194
+
180
195
RCT_EXPORT_METHOD (notifyApplicationReady:(RCTPromiseResolveBlock)resolve
181
196
rejecter:(RCTPromiseRejectBlock)reject)
182
197
{
0 commit comments