Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit 3d47206

Browse files
committed
Merge pull request #34 from Microsoft/is-first-run
Is first run
2 parents 98bd662 + 5551cde commit 3d47206

File tree

3 files changed

+35
-8
lines changed

3 files changed

+35
-8
lines changed

CodePush.ios.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ function getCurrentPackage() {
6161
})
6262
.then((failedUpdate) => {
6363
localPackage.failedApply = failedUpdate;
64+
return NativeCodePush.isFirstRun(localPackage.packageHash);
65+
})
66+
.then((isFirstRun) => {
67+
localPackage.isFirstRun = isFirstRun;
6468
resolve(localPackage);
6569
})
6670
.catch(reject)

CodePush.m

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ @implementation CodePush
99

1010
NSTimer *_timer;
1111
BOOL usingTestFolder = NO;
12+
BOOL didUpdate = NO;
1213

1314
NSString * const FailedUpdatesKey = @"FAILED_UPDATES";
1415
NSString * const UpdateBundleFileName = @"app.jsbundle";
@@ -112,15 +113,16 @@ - (void)startRollbackTimer:(int)rollbackTimeout
112113

113114
if (error) {
114115
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];
123120

121+
if (0 != rollbackTimeout) {
122+
dispatch_async(dispatch_get_main_queue(), ^{
123+
[self startRollbackTimer:rollbackTimeout];
124+
});
125+
}
124126
}
125127
});
126128
}
@@ -177,6 +179,19 @@ - (void)startRollbackTimer:(int)rollbackTimeout
177179
resolve(@(isFailedHash));
178180
}
179181

182+
RCT_EXPORT_METHOD(isFirstRun:(NSString *)packageHash
183+
resolve:(RCTPromiseResolveBlock)resolve
184+
rejecter:(RCTPromiseRejectBlock)reject)
185+
{
186+
NSError *error;
187+
BOOL isFirstRun = didUpdate
188+
&& nil != packageHash
189+
&& [packageHash length] > 0
190+
&& [packageHash isEqualToString:[CodePushPackage getCurrentPackageHash:&error]];
191+
192+
resolve(@(isFirstRun));
193+
}
194+
180195
RCT_EXPORT_METHOD(notifyApplicationReady:(RCTPromiseResolveBlock)resolve
181196
rejecter:(RCTPromiseRejectBlock)reject)
182197
{

CodePushPackage.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,20 @@ + (NSString *)getCurrentPackageFolderPath:(NSError **)error
7575
+ (NSString *)getCurrentPackageHash:(NSError **)error
7676
{
7777
NSDictionary *info = [self getCurrentPackageInfo:error];
78+
if (*error) {
79+
return NULL;
80+
}
81+
7882
return info[@"currentPackage"];
7983
}
8084

8185
+ (NSString *)getPreviousPackageHash:(NSError **)error
8286
{
8387
NSDictionary *info = [self getCurrentPackageInfo:error];
88+
if (*error) {
89+
return NULL;
90+
}
91+
8492
return info[@"previousPackage"];
8593
}
8694

0 commit comments

Comments
 (0)