react-native-bspatch 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +145 -42
  2. package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +117 -17
  3. package/cpp/CMakeLists.txt +9 -1
  4. package/cpp/bsdiff/bspatch.c +14 -3
  5. package/cpp/bsdiff/bspatch_wrapper.c +124 -40
  6. package/ios/RNBsPatch.mm +142 -1
  7. package/lib/commonjs/NativeBsPatch.js.map +1 -1
  8. package/lib/commonjs/ota/OtaProvider.js +61 -12
  9. package/lib/commonjs/ota/OtaProvider.js.map +1 -1
  10. package/lib/commonjs/ota/otaCore.js +43 -20
  11. package/lib/commonjs/ota/otaCore.js.map +1 -1
  12. package/lib/commonjs/ota/otaMetadata.js +41 -5
  13. package/lib/commonjs/ota/otaMetadata.js.map +1 -1
  14. package/lib/commonjs/ota/storage/CustomStorage.js +23 -3
  15. package/lib/commonjs/ota/storage/CustomStorage.js.map +1 -1
  16. package/lib/commonjs/ota/storage/GitHubRawStorage.js +3 -0
  17. package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +1 -1
  18. package/lib/commonjs/ota/storage/GitHubReleaseStorage.js +3 -0
  19. package/lib/commonjs/ota/storage/GitHubReleaseStorage.js.map +1 -1
  20. package/lib/module/NativeBsPatch.js.map +1 -1
  21. package/lib/module/ota/OtaProvider.js +61 -12
  22. package/lib/module/ota/OtaProvider.js.map +1 -1
  23. package/lib/module/ota/otaCore.js +43 -20
  24. package/lib/module/ota/otaCore.js.map +1 -1
  25. package/lib/module/ota/otaMetadata.js +38 -3
  26. package/lib/module/ota/otaMetadata.js.map +1 -1
  27. package/lib/module/ota/storage/CustomStorage.js +23 -3
  28. package/lib/module/ota/storage/CustomStorage.js.map +1 -1
  29. package/lib/module/ota/storage/GitHubRawStorage.js +3 -0
  30. package/lib/module/ota/storage/GitHubRawStorage.js.map +1 -1
  31. package/lib/module/ota/storage/GitHubReleaseStorage.js +3 -0
  32. package/lib/module/ota/storage/GitHubReleaseStorage.js.map +1 -1
  33. package/lib/typescript/NativeBsPatch.d.ts +11 -0
  34. package/lib/typescript/NativeBsPatch.d.ts.map +1 -1
  35. package/lib/typescript/ota/OtaProvider.d.ts.map +1 -1
  36. package/lib/typescript/ota/otaCore.d.ts +3 -1
  37. package/lib/typescript/ota/otaCore.d.ts.map +1 -1
  38. package/lib/typescript/ota/otaMetadata.d.ts +6 -0
  39. package/lib/typescript/ota/otaMetadata.d.ts.map +1 -1
  40. package/lib/typescript/ota/storage/CustomStorage.d.ts.map +1 -1
  41. package/lib/typescript/ota/storage/GitHubRawStorage.d.ts.map +1 -1
  42. package/lib/typescript/ota/storage/GitHubReleaseStorage.d.ts.map +1 -1
  43. package/lib/typescript/ota/types.d.ts +6 -2
  44. package/lib/typescript/ota/types.d.ts.map +1 -1
  45. package/package.json +3 -1
  46. package/react-native-bspatch.podspec +6 -1
  47. package/src/NativeBsPatch.ts +17 -0
  48. package/src/ota/OtaProvider.tsx +80 -23
  49. package/src/ota/otaCore.ts +54 -24
  50. package/src/ota/otaMetadata.ts +46 -4
  51. package/src/ota/storage/CustomStorage.ts +26 -3
  52. package/src/ota/storage/GitHubRawStorage.ts +5 -0
  53. package/src/ota/storage/GitHubReleaseStorage.ts +5 -0
  54. package/src/ota/types.ts +6 -2
  55. package/tools/build_ota.sh +366 -18
  56. package/tools/bump_version.js +133 -0
  57. package/tools/generate_keys.js +75 -0
  58. package/tools/setup_project.js +69 -4
  59. package/tools/update_registry.js +51 -1
@@ -5,6 +5,7 @@
5
5
  #include <string.h>
6
6
  #include <sys/types.h>
7
7
  #include <sys/stat.h>
8
+ #include <sys/mman.h>
8
9
  #include <unistd.h>
9
10
  #include <fcntl.h>
10
11
  #include "bspatch.h"
@@ -52,69 +53,135 @@ static int bz2_read(const struct bspatch_stream* stream, void* buffer, int lengt
52
53
  int apply_bspatch(const char *oldfile, const char *newfile, const char *patchfile)
53
54
  {
54
55
  FILE * f;
55
- int fd = -1;
56
+ int fd_old = -1;
57
+ int fd_new = -1;
56
58
  int bz2err;
57
59
  uint8_t header[24];
58
- uint8_t *old = NULL, *new_buf = NULL;
59
- int64_t oldsize, newsize;
60
+ uint8_t *old = NULL;
61
+ uint8_t *new_buf = NULL;
62
+ int64_t oldsize = 0, newsize = 0;
63
+ int old_mmapped = 0, new_mmapped = 0;
60
64
  BZFILE* bz2 = NULL;
61
65
  struct bspatch_stream stream;
62
- struct stat sb;
66
+ struct stat sb_old;
63
67
 
64
68
  /* Open patch file */
65
- if ((f = fopen(patchfile, "r")) == NULL) {
66
- LOGE("Failed to open patch file: %s", patchfile);
69
+ if ((f = fopen(patchfile, "rb")) == NULL) {
70
+ LOGE("Failed to open patch file: %s", patchfile);
67
71
  return -1;
68
72
  }
69
73
 
70
74
  /* Read header */
71
75
  if (fread(header, 1, 24, f) != 24) {
72
- LOGE("Failed to read header from patch file");
76
+ LOGE("Failed to read header from patch file");
73
77
  fclose(f);
74
78
  return -1;
75
79
  }
76
80
 
77
81
  /* Check for appropriate magic */
78
82
  if (memcmp(header, "ENDSLEY/BSDIFF43", 16) != 0) {
79
- LOGE("Invalid magic in patch header");
83
+ LOGE("Invalid magic in patch header");
80
84
  fclose(f);
81
85
  return -1;
82
86
  }
83
87
 
84
88
  /* Read lengths from header */
85
89
  newsize = wrapper_offtin(header + 16);
86
- if(newsize < 0) {
87
- LOGE("Invalid newsize in patch header");
90
+ if (newsize < 0) {
91
+ LOGE("Invalid newsize in patch header: %lld", (long long)newsize);
88
92
  fclose(f);
89
93
  return -1;
90
94
  }
91
95
 
92
- /* Close patch file and re-open it via libbzip2 at the right places */
93
- if(((fd=open(oldfile,O_RDONLY,0))<0) ||
94
- ((oldsize=lseek(fd,0,SEEK_END))==-1) ||
95
- ((old=malloc(oldsize+1))==NULL) ||
96
- (lseek(fd,0,SEEK_SET)!=0) ||
97
- (read(fd,old,oldsize)!=oldsize) ||
98
- (fstat(fd, &sb)) ||
99
- (close(fd)==-1)) {
100
- LOGE("Failed reading oldfile (fd=%d, oldsize=%lld)", fd, (long long)oldsize);
101
- if (fd >= 0) close(fd);
102
- if (old) free(old);
96
+ /* Open and map old file */
97
+ if ((fd_old = open(oldfile, O_RDONLY, 0)) < 0) {
98
+ LOGE("Failed to open oldfile: %s", oldfile);
103
99
  fclose(f);
104
100
  return -1;
105
101
  }
106
102
 
107
- if((new_buf=malloc(newsize+1))==NULL) {
108
- LOGE("Failed to allocate memory for new_buf (%lld)", (long long)newsize);
109
- free(old);
103
+ if (fstat(fd_old, &sb_old) != 0) {
104
+ LOGE("Failed to stat oldfile: %s", oldfile);
105
+ close(fd_old);
110
106
  fclose(f);
111
107
  return -1;
112
108
  }
109
+ oldsize = sb_old.st_size;
110
+
111
+ if (oldsize > 0) {
112
+ old = (uint8_t *)mmap(NULL, (size_t)oldsize, PROT_READ, MAP_SHARED, fd_old, 0);
113
+ if (old != MAP_FAILED) {
114
+ old_mmapped = 1;
115
+ #if defined(MADV_SEQUENTIAL)
116
+ madvise(old, (size_t)oldsize, MADV_SEQUENTIAL);
117
+ #endif
118
+ } else {
119
+ /* Fallback to malloc if mmap fails */
120
+ old = (uint8_t *)malloc((size_t)oldsize + 1);
121
+ if (old == NULL || read(fd_old, old, (size_t)oldsize) != oldsize) {
122
+ LOGE("Failed to read oldfile into memory");
123
+ if (old) free(old);
124
+ close(fd_old);
125
+ fclose(f);
126
+ return -1;
127
+ }
128
+ old_mmapped = 0;
129
+ }
130
+ }
131
+
132
+ /* Open and map new file */
133
+ mode_t mode = sb_old.st_mode ? sb_old.st_mode : 0644;
134
+ if ((fd_new = open(newfile, O_RDWR | O_CREAT | O_TRUNC, mode)) < 0) {
135
+ LOGE("Failed to open/create newfile: %s", newfile);
136
+ if (old_mmapped) munmap(old, (size_t)oldsize);
137
+ else if (old) free(old);
138
+ close(fd_old);
139
+ fclose(f);
140
+ return -1;
141
+ }
142
+
143
+ if (newsize > 0) {
144
+ if (ftruncate(fd_new, (off_t)newsize) != 0) {
145
+ LOGE("Failed to ftruncate newfile to size %lld", (long long)newsize);
146
+ if (old_mmapped) munmap(old, (size_t)oldsize);
147
+ else if (old) free(old);
148
+ close(fd_old);
149
+ close(fd_new);
150
+ fclose(f);
151
+ return -1;
152
+ }
153
+
154
+ new_buf = (uint8_t *)mmap(NULL, (size_t)newsize, PROT_READ | PROT_WRITE, MAP_SHARED, fd_new, 0);
155
+ if (new_buf != MAP_FAILED) {
156
+ new_mmapped = 1;
157
+ #if defined(MADV_SEQUENTIAL)
158
+ madvise(new_buf, (size_t)newsize, MADV_SEQUENTIAL);
159
+ #endif
160
+ } else {
161
+ /* Fallback to malloc if mmap fails */
162
+ new_buf = (uint8_t *)malloc((size_t)newsize + 1);
163
+ if (new_buf == NULL) {
164
+ LOGE("Failed to allocate memory for new_buf (%lld)", (long long)newsize);
165
+ if (old_mmapped) munmap(old, (size_t)oldsize);
166
+ else if (old) free(old);
167
+ close(fd_old);
168
+ close(fd_new);
169
+ fclose(f);
170
+ return -1;
171
+ }
172
+ new_mmapped = 0;
173
+ }
174
+ }
113
175
 
176
+ /* Initialize bzip2 stream */
114
177
  if (NULL == (bz2 = BZ2_bzReadOpen(&bz2err, f, 0, 0, NULL, 0))) {
115
- LOGE("BZ2_bzReadOpen failed: err=%d", bz2err);
116
- free(new_buf);
117
- free(old);
178
+ LOGE("BZ2_bzReadOpen failed: err=%d", bz2err);
179
+ if (new_mmapped) munmap(new_buf, (size_t)newsize);
180
+ else if (new_buf) free(new_buf);
181
+ if (old_mmapped) munmap(old, (size_t)oldsize);
182
+ else if (old) free(old);
183
+ close(fd_old);
184
+ close(fd_new);
118
185
  fclose(f);
119
186
  return -1;
120
187
  }
@@ -122,29 +189,46 @@ int apply_bspatch(const char *oldfile, const char *newfile, const char *patchfil
122
189
  stream.read = bz2_read;
123
190
  stream.opaque = bz2;
124
191
  if (bspatch(old, oldsize, new_buf, newsize, &stream)) {
125
- LOGE("bspatch core logic failed");
192
+ LOGE("bspatch core logic failed");
126
193
  BZ2_bzReadClose(&bz2err, bz2);
127
- free(new_buf);
128
- free(old);
194
+ if (new_mmapped) munmap(new_buf, (size_t)newsize);
195
+ else if (new_buf) free(new_buf);
196
+ if (old_mmapped) munmap(old, (size_t)oldsize);
197
+ else if (old) free(old);
198
+ close(fd_old);
199
+ close(fd_new);
129
200
  fclose(f);
130
201
  return -1;
131
202
  }
132
203
 
133
- /* Clean up the bzip2 reads */
204
+ /* Clean up bzip2 and patch file */
134
205
  BZ2_bzReadClose(&bz2err, bz2);
135
206
  fclose(f);
136
207
 
137
- /* Write the new file */
138
- if(((fd=open(newfile,O_CREAT|O_TRUNC|O_WRONLY,sb.st_mode))<0) ||
139
- (write(fd,new_buf,newsize)!=newsize) || (close(fd)==-1)) {
140
- if (fd >= 0) close(fd);
208
+ /* Finalize new file */
209
+ int ret = 0;
210
+ if (new_mmapped) {
211
+ if (msync(new_buf, (size_t)newsize, MS_SYNC) != 0) {
212
+ LOGE("msync failed on newfile");
213
+ ret = -1;
214
+ }
215
+ munmap(new_buf, (size_t)newsize);
216
+ } else if (new_buf) {
217
+ if (write(fd_new, new_buf, (size_t)newsize) != newsize) {
218
+ LOGE("Failed writing newfile");
219
+ ret = -1;
220
+ }
141
221
  free(new_buf);
142
- free(old);
143
- return -1;
144
222
  }
145
223
 
146
- free(new_buf);
147
- free(old);
224
+ /* Clean up old file and descriptors */
225
+ if (old_mmapped) {
226
+ munmap(old, (size_t)oldsize);
227
+ } else if (old) {
228
+ free(old);
229
+ }
230
+ close(fd_old);
231
+ close(fd_new);
148
232
 
149
- return 0; // Success
233
+ return ret;
150
234
  }
package/ios/RNBsPatch.mm CHANGED
@@ -2,6 +2,9 @@
2
2
  #import <Foundation/Foundation.h>
3
3
  #import <UIKit/UIKit.h>
4
4
  #import <zlib.h>
5
+ #import <CommonCrypto/CommonHMAC.h>
6
+ #import <CommonCrypto/CommonDigest.h>
7
+ #import <Security/Security.h>
5
8
  #import <React/RCTLog.h>
6
9
  #import <React/RCTReloadCommand.h>
7
10
  #import <SSZipArchive/SSZipArchive.h>
@@ -151,10 +154,148 @@ RCT_EXPORT_METHOD(decompressGzip:(NSString *)sourcePath
151
154
  });
152
155
  }
153
156
 
157
+ RCT_EXPORT_METHOD(verifySignature:(NSString *)filePath
158
+ signature:(NSString *)signature
159
+ publicKey:(NSString *)publicKey
160
+ resolve:(RCTPromiseResolveBlock)resolve
161
+ reject:(RCTPromiseRejectBlock)reject)
162
+ {
163
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
164
+ NSString *cleanKey = [publicKey stringByReplacingOccurrencesOfString:@"-----BEGIN PUBLIC KEY-----" withString:@""];
165
+ cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"-----END PUBLIC KEY-----" withString:@""];
166
+ cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"-----BEGIN RSA PUBLIC KEY-----" withString:@""];
167
+ cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"-----END RSA PUBLIC KEY-----" withString:@""];
168
+ cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"\n" withString:@""];
169
+ cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"\r" withString:@""];
170
+ cleanKey = [cleanKey stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
171
+
172
+ NSData *keyData = [[NSData alloc] initWithBase64EncodedString:cleanKey options:NSDataBase64DecodingIgnoreUnknownCharacters];
173
+ NSData *expectedSig = [[NSData alloc] initWithBase64EncodedString:signature options:NSDataBase64DecodingIgnoreUnknownCharacters];
174
+
175
+ if (!keyData || !expectedSig) {
176
+ resolve(@(NO));
177
+ return;
178
+ }
179
+
180
+ // Calculate SHA256 of file stream
181
+ NSInputStream *stream = [NSInputStream inputStreamWithFileAtPath:filePath];
182
+ if (!stream) {
183
+ resolve(@(NO));
184
+ return;
185
+ }
186
+ [stream open];
187
+
188
+ CC_SHA256_CTX shaCtx;
189
+ CC_SHA256_Init(&shaCtx);
190
+ uint8_t buffer[65536];
191
+ while ([stream hasBytesAvailable]) {
192
+ NSInteger bytesRead = [stream read:buffer maxLength:sizeof(buffer)];
193
+ if (bytesRead > 0) {
194
+ CC_SHA256_Update(&shaCtx, buffer, (CC_LONG)bytesRead);
195
+ } else if (bytesRead < 0) {
196
+ [stream close];
197
+ resolve(@(NO));
198
+ return;
199
+ }
200
+ }
201
+ [stream close];
202
+
203
+ unsigned char sha256[CC_SHA256_DIGEST_LENGTH];
204
+ CC_SHA256_Final(sha256, &shaCtx);
205
+ NSData *sha256Data = [NSData dataWithBytes:sha256 length:CC_SHA256_DIGEST_LENGTH];
206
+
207
+ // 1. Try RSA Public Key
208
+ NSDictionary *rsaParams = @{
209
+ (id)kSecAttrKeyType: (id)kSecAttrKeyTypeRSA,
210
+ (id)kSecAttrKeyClass: (id)kSecAttrKeyClassPublic,
211
+ };
212
+ CFErrorRef rsaErr = NULL;
213
+ SecKeyRef rsaKey = SecKeyCreateWithData((__bridge CFDataRef)keyData, (__bridge CFDictionaryRef)rsaParams, &rsaErr);
214
+ if (rsaKey) {
215
+ CFErrorRef verifyErr = NULL;
216
+ Boolean isValid = SecKeyVerifySignature(
217
+ rsaKey,
218
+ kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA256,
219
+ (__bridge CFDataRef)sha256Data,
220
+ (__bridge CFDataRef)expectedSig,
221
+ &verifyErr
222
+ );
223
+ CFRelease(rsaKey);
224
+ if (!verifyErr) {
225
+ resolve(@(isValid ? YES : NO));
226
+ return;
227
+ }
228
+ }
229
+
230
+ // 2. Try ECDSA Public Key
231
+ NSDictionary *ecParams = @{
232
+ (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom,
233
+ (id)kSecAttrKeyClass: (id)kSecAttrKeyClassPublic,
234
+ };
235
+ CFErrorRef ecErr = NULL;
236
+ SecKeyRef ecKey = SecKeyCreateWithData((__bridge CFDataRef)keyData, (__bridge CFDictionaryRef)ecParams, &ecErr);
237
+ if (ecKey) {
238
+ CFErrorRef verifyErr = NULL;
239
+ Boolean isValid = SecKeyVerifySignature(
240
+ ecKey,
241
+ kSecKeyAlgorithmECDSASignatureDigestX962SHA256,
242
+ (__bridge CFDataRef)sha256Data,
243
+ (__bridge CFDataRef)expectedSig,
244
+ &verifyErr
245
+ );
246
+ CFRelease(ecKey);
247
+ if (!verifyErr) {
248
+ resolve(@(isValid ? YES : NO));
249
+ return;
250
+ }
251
+ }
252
+
253
+ // 3. Fallback: HMAC-SHA256
254
+ NSInputStream *hmacStream = [NSInputStream inputStreamWithFileAtPath:filePath];
255
+ if (!hmacStream) {
256
+ resolve(@(NO));
257
+ return;
258
+ }
259
+ [hmacStream open];
260
+
261
+ CCHmacContext ctx;
262
+ CCHmacInit(&ctx, kCCHmacAlgSHA256, keyData.bytes, keyData.length);
263
+ while ([hmacStream hasBytesAvailable]) {
264
+ NSInteger bytesRead = [hmacStream read:buffer maxLength:sizeof(buffer)];
265
+ if (bytesRead > 0) {
266
+ CCHmacUpdate(&ctx, buffer, (CC_LONG)bytesRead);
267
+ } else if (bytesRead < 0) {
268
+ [hmacStream close];
269
+ resolve(@(NO));
270
+ return;
271
+ }
272
+ }
273
+ [hmacStream close];
274
+
275
+ unsigned char hmac[CC_SHA256_DIGEST_LENGTH];
276
+ CCHmacFinal(&ctx, hmac);
277
+
278
+ BOOL isValid = (expectedSig.length == CC_SHA256_DIGEST_LENGTH) &&
279
+ (memcmp(expectedSig.bytes, hmac, CC_SHA256_DIGEST_LENGTH) == 0);
280
+ resolve(@(isValid));
281
+ });
282
+ }
283
+
284
+ RCT_EXPORT_METHOD(getAppVersion:(RCTPromiseResolveBlock)resolve
285
+ reject:(RCTPromiseRejectBlock)reject)
286
+ {
287
+ NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
288
+ if (!version || version.length == 0) {
289
+ reject(@"ERR_NO_VERSION", @"CFBundleShortVersionString is missing in iOS Info.plist", nil);
290
+ } else {
291
+ resolve(version);
292
+ }
293
+ }
294
+
154
295
  - (NSData *)decompressGzipData:(NSData *)compressed {
155
296
  // Decompress gzip using zlib directly
156
297
  // gzip adds a 10-byte header + 8-byte footer over the raw zlib stream
157
- const size_t chunkSize = 32768;
298
+ const size_t chunkSize = 65536;
158
299
  z_stream strm;
159
300
  memset(&strm, 0, sizeof(strm));
160
301
 
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAkDpCC,gCAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAmEpCC,gCAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
@@ -34,8 +34,10 @@ function OtaProvider({
34
34
  const [metrics, setMetrics] = (0, _react.useState)(null);
35
35
  const [patches, setPatches] = (0, _react.useState)([]);
36
36
  const [isInitialized, setIsInitialized] = (0, _react.useState)(false);
37
+ const [isUpdateReady, setIsUpdateReady] = (0, _react.useState)(false);
37
38
  const appState = (0, _react.useRef)(_reactNative.AppState.currentState);
38
39
  const isCheckingRef = (0, _react.useRef)(false);
40
+ const pendingReloadRef = (0, _react.useRef)(false);
39
41
  const bootstrapDone = (0, _react.useRef)(false);
40
42
  const progressRef = (0, _react.useRef)(0);
41
43
  const isDebugUpdateEnabled = !__DEV__ || config.allowDebugUpdates === true;
@@ -46,6 +48,21 @@ function OtaProvider({
46
48
  progressRef.current = nextProgress;
47
49
  setProgress(nextProgress);
48
50
  }, []);
51
+ const getEffectiveConfig = (0, _react.useCallback)(async () => {
52
+ if (config.appVersion) return config;
53
+ try {
54
+ const nativeVer = await _NativeBsPatch.default.getAppVersion();
55
+ if (!nativeVer) {
56
+ throw new Error('Native appVersion is empty');
57
+ }
58
+ return {
59
+ ...config,
60
+ appVersion: nativeVer
61
+ };
62
+ } catch (e) {
63
+ throw new Error(`[OtaProvider] Failed to auto-detect appVersion from native: ${e.message}. ` + `Please set versionName (Android) / CFBundleShortVersionString (iOS), or provide config.appVersion explicitly.`);
64
+ }
65
+ }, [config]);
49
66
 
50
67
  /**
51
68
  * Core apply update logic — separated so it can be mapped to button clicks
@@ -61,10 +78,11 @@ function OtaProvider({
61
78
  return;
62
79
  }
63
80
  try {
81
+ const effectiveConfig = await getEffectiveConfig();
64
82
  setStatus(_types.OtaStatus.DOWNLOADING);
65
83
  progressRef.current = 0;
66
84
  setProgress(0);
67
- await (0, _otaCore.applyOtaPatchInternal)(directPatch, config, (s, msg, m) => {
85
+ await (0, _otaCore.applyOtaPatchInternal)(directPatch, effectiveConfig, (s, msg, m) => {
68
86
  setMessage(msg);
69
87
  setStatus(s);
70
88
  if (m) {
@@ -80,7 +98,7 @@ function OtaProvider({
80
98
  setStatus(_types.OtaStatus.ERROR);
81
99
  setMessage(`Update failed: ${error.message}`);
82
100
  }
83
- }, [config, setProgressIfChanged]);
101
+ }, [getEffectiveConfig, setProgressIfChanged]);
84
102
 
85
103
  /**
86
104
  * Exposed method for manual trigger
@@ -94,6 +112,34 @@ function OtaProvider({
94
112
  }
95
113
  await executeApplyUpdate(patches, currentVersion, latestVersion);
96
114
  }, [currentVersion, executeApplyUpdate, isDebugUpdateEnabled, latestVersion, patches]);
115
+ const downloadBackgroundUpdate = (0, _react.useCallback)(async (patchList, localV, targetV) => {
116
+ const directPatch = patchList.find(p => p.fromVersion === localV && p.toVersion === targetV && p.platform === _reactNative.Platform.OS);
117
+ if (!directPatch) return;
118
+ try {
119
+ const effectiveConfig = await getEffectiveConfig();
120
+ await (0, _otaCore.applyOtaPatchInternal)(directPatch, effectiveConfig, (s, msg, m) => {
121
+ if (s === _types.OtaStatus.SUCCESS) {
122
+ setIsUpdateReady(true);
123
+ pendingReloadRef.current = true;
124
+ setStatus(_types.OtaStatus.UP_TO_DATE);
125
+ setMessage(`Update V${targetV} ready for next launch`);
126
+ if (m) {
127
+ setMetrics(m);
128
+ (0, _otaAssetResolver.initOtaAssetResolver)(targetV);
129
+ }
130
+ }
131
+ }, () => {},
132
+ // silent: background doesn't spam progress
133
+ {
134
+ autoReload: false
135
+ } // Do NOT reload immediately
136
+ );
137
+ } catch (e) {
138
+ if (__DEV__) {
139
+ console.warn('[OtaProvider] Silent background update failed:', e);
140
+ }
141
+ }
142
+ }, [getEffectiveConfig]);
97
143
 
98
144
  /**
99
145
  * Check for updates from the manifest.
@@ -112,10 +158,11 @@ function OtaProvider({
112
158
  setIsChecking(true);
113
159
  setStatus(_types.OtaStatus.CHECKING);
114
160
  setMessage('Checking for updates...');
115
- const log = (0, _otaLogger.createOtaLogger)(config.onEvent);
161
+ const effectiveConfig = await getEffectiveConfig();
162
+ const log = (0, _otaLogger.createOtaLogger)(effectiveConfig.onEvent);
116
163
  log.emit(_otaLogger.OtaEvent.CHECK_UPDATE);
117
164
  try {
118
- const remotePatches = await (0, _otaCore.fetchOtaManifest)(config);
165
+ const remotePatches = await (0, _otaCore.fetchOtaManifest)(effectiveConfig);
119
166
  const metadata = await (0, _otaMetadata.loadMetadata)(config.baseAppVersion);
120
167
  const localV = metadata.currentVersion;
121
168
  console.log('[OtaProvider] checkUpdates | localV:', localV, 'remotePatches count:', remotePatches.length);
@@ -150,12 +197,7 @@ function OtaProvider({
150
197
  isCheckingRef.current = false;
151
198
  setIsChecking(false);
152
199
  }
153
- }, [config, executeApplyUpdate, isDebugUpdateEnabled]);
154
- const downloadBackgroundUpdate = async (patchList, localV, targetV) => {
155
- const directPatch = patchList.find(p => p.fromVersion === localV && p.toVersion === targetV);
156
- if (!directPatch) return;
157
- console.warn('[OtaProvider] BACKGROUND_DOWNLOAD mode is not yet implemented. ' + 'Patches were found but no download occurred. ' + 'Use MANUAL or ON_APP_START mode for now.');
158
- };
200
+ }, [config, executeApplyUpdate, isDebugUpdateEnabled, downloadBackgroundUpdate, getEffectiveConfig]);
159
201
 
160
202
  /**
161
203
  * Bootstrap: runs once on mount.
@@ -224,10 +266,15 @@ function OtaProvider({
224
266
  }, []);
225
267
 
226
268
  /**
227
- * AppState listener for ON_APP_FOREGROUND mode
269
+ * AppState listener for ON_APP_FOREGROUND mode and silent background reload
228
270
  */
229
271
  (0, _react.useEffect)(() => {
230
272
  const subscription = _reactNative.AppState.addEventListener('change', nextAppState => {
273
+ // When going into background: if update is downloaded and ready, reload bundle silently
274
+ if (appState.current === 'active' && nextAppState.match(/inactive|background/) && pendingReloadRef.current) {
275
+ pendingReloadRef.current = false;
276
+ _NativeBsPatch.default.reloadBundle();
277
+ }
231
278
  if (appState.current.match(/inactive|background/) && nextAppState === 'active' && bootstrapDone.current) {
232
279
  const mode = config.updateMode ?? _types.OtaUpdateMode.MANUAL;
233
280
  if (mode === _types.OtaUpdateMode.ON_APP_FOREGROUND) {
@@ -275,10 +322,12 @@ function OtaProvider({
275
322
  pendingCount,
276
323
  isChecking,
277
324
  metrics,
325
+ isUpdateReady,
278
326
  applyUpdate,
279
327
  resetToFactory,
280
328
  markAsHealthy,
281
- checkUpdate: checkUpdates
329
+ checkUpdate: checkUpdates,
330
+ reloadBundle: () => _NativeBsPatch.default.reloadBundle()
282
331
  };
283
332
 
284
333
  // Logic to determine if we should block the UI
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeBlobUtil","_interopRequireDefault","_NativeBsPatch","_otaAssetResolver","_otaCore","_otaLogger","_otaMetadata","_types","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OtaContext","createContext","undefined","OtaProvider","children","config","loadingView","useLoadingView","status","setStatus","useState","OtaStatus","IDLE","message","setMessage","progress","setProgress","currentVersion","setCurrentVersion","baseAppVersion","latestVersion","setLatestVersion","pendingCount","setPendingCount","isChecking","setIsChecking","metrics","setMetrics","patches","setPatches","isInitialized","setIsInitialized","appState","useRef","AppState","currentState","isCheckingRef","bootstrapDone","progressRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","setProgressIfChanged","useCallback","nextProgress","current","executeApplyUpdate","patchList","currentVer","targetVer","console","log","directPatch","find","p","fromVersion","toVersion","platform","Platform","OS","warn","ERROR","DOWNLOADING","applyOtaPatchInternal","s","msg","m","initOtaAssetResolver","percent","error","applyUpdate","UP_TO_DATE","checkUpdates","CHECKING","createOtaLogger","onEvent","emit","OtaEvent","CHECK_UPDATE","remotePatches","fetchOtaManifest","metadata","loadMetadata","localV","length","platformPatches","filter","maxV","Math","max","map","UPDATE_AVAILABLE","updateMode","OtaUpdateMode","BACKGROUND_DOWNLOAD","downloadBackgroundUpdate","ON_APP_START","ON_APP_FOREGROUND","targetV","useEffect","bootstrap","ReactNativeBlobUtil","fs","ls","dirs","DocumentDir","then","dir","startsWith","unlink","catch","markAsHealthy","mode","MANUAL","subscription","addEventListener","nextAppState","match","remove","MARK_HEALTHY","markHealthy","NativeBsPatch","resetToFactory","APPLYING","RESET_FACTORY","otaDir","exists","trashDir","Date","now","mv","reloadBundle","value","checkUpdate","isBlocking","useMemo","jsx","Provider","View","style","styles","loadingContainer","jsxs","loadingCard","ActivityIndicator","size","color","Text","loadingTitle","loadingText","progressText","toFixed","useOta","context","useContext","Error","StyleSheet","create","flex","justifyContent","alignItems","backgroundColor","paddingHorizontal","width","maxWidth","borderRadius","paddingVertical","borderWidth","borderColor","marginTop","fontSize","fontWeight","lineHeight","textAlign"],"sourceRoot":"../../../src","sources":["ota/OtaProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeBlobUtil","_interopRequireDefault","_NativeBsPatch","_otaAssetResolver","_otaCore","_otaLogger","_otaMetadata","_types","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OtaContext","createContext","undefined","OtaProvider","children","config","loadingView","useLoadingView","status","setStatus","useState","OtaStatus","IDLE","message","setMessage","progress","setProgress","currentVersion","setCurrentVersion","baseAppVersion","latestVersion","setLatestVersion","pendingCount","setPendingCount","isChecking","setIsChecking","metrics","setMetrics","patches","setPatches","isInitialized","setIsInitialized","isUpdateReady","setIsUpdateReady","appState","useRef","AppState","currentState","isCheckingRef","pendingReloadRef","bootstrapDone","progressRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","setProgressIfChanged","useCallback","nextProgress","current","getEffectiveConfig","appVersion","nativeVer","NativeBsPatch","getAppVersion","Error","executeApplyUpdate","patchList","currentVer","targetVer","console","log","directPatch","find","p","fromVersion","toVersion","platform","Platform","OS","warn","ERROR","effectiveConfig","DOWNLOADING","applyOtaPatchInternal","s","msg","m","initOtaAssetResolver","percent","error","applyUpdate","UP_TO_DATE","downloadBackgroundUpdate","localV","targetV","SUCCESS","autoReload","checkUpdates","CHECKING","createOtaLogger","onEvent","emit","OtaEvent","CHECK_UPDATE","remotePatches","fetchOtaManifest","metadata","loadMetadata","length","platformPatches","filter","maxV","Math","max","map","UPDATE_AVAILABLE","updateMode","OtaUpdateMode","BACKGROUND_DOWNLOAD","ON_APP_START","ON_APP_FOREGROUND","useEffect","bootstrap","ReactNativeBlobUtil","fs","ls","dirs","DocumentDir","then","dir","startsWith","unlink","catch","markAsHealthy","mode","MANUAL","subscription","addEventListener","nextAppState","match","reloadBundle","remove","MARK_HEALTHY","markHealthy","resetToFactory","APPLYING","RESET_FACTORY","otaDir","exists","trashDir","Date","now","mv","value","checkUpdate","isBlocking","useMemo","jsx","Provider","View","style","styles","loadingContainer","jsxs","loadingCard","ActivityIndicator","size","color","Text","loadingTitle","loadingText","progressText","toFixed","useOta","context","useContext","StyleSheet","create","flex","justifyContent","alignItems","backgroundColor","paddingHorizontal","width","maxWidth","borderRadius","paddingVertical","borderWidth","borderColor","marginTop","fontSize","fontWeight","lineHeight","textAlign"],"sourceRoot":"../../../src","sources":["ota/OtaProvider.tsx"],"mappings":"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","ignoreList":[]}