@onekeyfe/react-native-bundle-update 1.1.39 → 1.1.41

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.
@@ -95,7 +95,7 @@ P2Q5dClenjjjVA==
95
95
  object BundleUpdateStoreAndroid {
96
96
  private val bcProvider = BouncyCastleProvider()
97
97
  private const val PREFS_NAME = "BundleUpdatePrefs"
98
- private const val NATIVE_VERSION_PREFS_NAME = "NativeVersionPrefs"
98
+ internal const val NATIVE_VERSION_PREFS_NAME = "NativeVersionPrefs"
99
99
  private const val CURRENT_BUNDLE_VERSION_KEY = "currentBundleVersion"
100
100
 
101
101
  fun getDownloadBundleDir(context: Context): String {
@@ -207,6 +207,47 @@ object BundleUpdateStoreAndroid {
207
207
  prefs.edit().putString("nativeVersion", nativeVersion).apply()
208
208
  }
209
209
 
210
+ fun getBuildNumber(context: Context): String {
211
+ return try {
212
+ val pm = context.packageManager
213
+ val pi = pm.getPackageInfo(context.packageName, 0)
214
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
215
+ pi.longVersionCode.toString()
216
+ } else {
217
+ @Suppress("DEPRECATION")
218
+ pi.versionCode.toString()
219
+ }
220
+ } catch (e: Exception) {
221
+ OneKeyLog.error("BundleUpdate", "Error getting build number: ${e.message}")
222
+ ""
223
+ }
224
+ }
225
+
226
+ fun getNativeBuildNumber(context: Context): String {
227
+ val prefs = context.getSharedPreferences(NATIVE_VERSION_PREFS_NAME, Context.MODE_PRIVATE)
228
+ return prefs.getString("nativeBuildNumber", "") ?: ""
229
+ }
230
+
231
+ fun setNativeBuildNumber(context: Context, buildNumber: String) {
232
+ val prefs = context.getSharedPreferences(NATIVE_VERSION_PREFS_NAME, Context.MODE_PRIVATE)
233
+ prefs.edit().putString("nativeBuildNumber", buildNumber).apply()
234
+ }
235
+
236
+ fun clearNativeVersionPrefs(context: Context) {
237
+ val prefs = context.getSharedPreferences(NATIVE_VERSION_PREFS_NAME, Context.MODE_PRIVATE)
238
+ prefs.edit().remove("nativeVersion").remove("nativeBuildNumber").apply()
239
+ }
240
+
241
+ fun getBuiltinBundleVersion(context: Context): String {
242
+ return try {
243
+ val appInfo = context.packageManager.getApplicationInfo(context.packageName, android.content.pm.PackageManager.GET_META_DATA)
244
+ appInfo.metaData?.getString("BUNDLE_VERSION") ?: ""
245
+ } catch (e: Exception) {
246
+ OneKeyLog.error("BundleUpdate", "Error getting builtin bundle version: ${e.message}")
247
+ ""
248
+ }
249
+ }
250
+
210
251
  fun calculateSHA256(filePath: String): String? {
211
252
  return try {
212
253
  val digest = MessageDigest.getInstance("SHA-256")
@@ -513,6 +554,16 @@ object BundleUpdateStoreAndroid {
513
554
  if (currentAppVersion != prevNativeVersion) {
514
555
  OneKeyLog.info("BundleUpdate", "currentAppVersion is not equal to prevNativeVersion $currentAppVersion $prevNativeVersion")
515
556
  clearUpdateBundleData(context)
557
+ clearNativeVersionPrefs(context)
558
+ return null
559
+ }
560
+
561
+ val currentBuildNumber = getBuildNumber(context)
562
+ val prevBuildNumber = getNativeBuildNumber(context)
563
+ if (currentBuildNumber.isNotEmpty() && prevBuildNumber.isNotEmpty() && currentBuildNumber != prevBuildNumber) {
564
+ OneKeyLog.info("BundleUpdate", "buildNumber changed from $prevBuildNumber to $currentBuildNumber, clearing bundle data")
565
+ clearUpdateBundleData(context)
566
+ clearNativeVersionPrefs(context)
516
567
  return null
517
568
  }
518
569
 
@@ -1008,6 +1059,8 @@ class ReactNativeBundleUpdate : HybridReactNativeBundleUpdateSpec() {
1008
1059
  BundleUpdateStoreAndroid.setCurrentBundleVersionAndSignature(context, folderName, signature)
1009
1060
  val nativeVersion = BundleUpdateStoreAndroid.getAppVersion(context) ?: ""
1010
1061
  BundleUpdateStoreAndroid.setNativeVersion(context, nativeVersion)
1062
+ val buildNumber = BundleUpdateStoreAndroid.getBuildNumber(context)
1063
+ BundleUpdateStoreAndroid.setNativeBuildNumber(context, buildNumber)
1011
1064
 
1012
1065
  // Manage fallback data
1013
1066
  try {
@@ -1097,6 +1150,7 @@ class ReactNativeBundleUpdate : HybridReactNativeBundleUpdateSpec() {
1097
1150
  OneKeyLog.info("BundleUpdate", "clearAllJSBundleData: deleted bundle dir")
1098
1151
  }
1099
1152
  BundleUpdateStoreAndroid.clearUpdateBundleData(context)
1153
+ BundleUpdateStoreAndroid.clearNativeVersionPrefs(context)
1100
1154
 
1101
1155
  OneKeyLog.info("BundleUpdate", "clearAllJSBundleData: completed successfully")
1102
1156
  TestResult(success = true, message = "Successfully cleared all JS bundle data")
@@ -1197,6 +1251,24 @@ class ReactNativeBundleUpdate : HybridReactNativeBundleUpdateSpec() {
1197
1251
  }
1198
1252
  }
1199
1253
 
1254
+ override fun getNativeBuildNumber(): Promise<String> {
1255
+ return Promise.async {
1256
+ val context = getContext()
1257
+ val buildNumber = BundleUpdateStoreAndroid.getBuildNumber(context)
1258
+ OneKeyLog.info("BundleUpdate", "getNativeBuildNumber: $buildNumber")
1259
+ buildNumber
1260
+ }
1261
+ }
1262
+
1263
+ override fun getBuiltinBundleVersion(): Promise<String> {
1264
+ return Promise.async {
1265
+ val context = getContext()
1266
+ val version = BundleUpdateStoreAndroid.getBuiltinBundleVersion(context)
1267
+ OneKeyLog.info("BundleUpdate", "getBuiltinBundleVersion: $version")
1268
+ version
1269
+ }
1270
+ }
1271
+
1200
1272
  override fun testVerification(): Promise<Boolean> {
1201
1273
  return Promise.async {
1202
1274
  val testSignature = """-----BEGIN PGP SIGNED MESSAGE-----
@@ -67,6 +67,7 @@ P2Q5dClenjjjVA==
67
67
  public class BundleUpdateStore: NSObject {
68
68
  private static let bundlePrefsKey = "currentBundleVersion"
69
69
  private static let nativeVersionKey = "nativeVersion"
70
+ private static let nativeBuildNumberKey = "nativeBuildNumber"
70
71
 
71
72
  public static func documentDirectory() -> String {
72
73
  NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
@@ -178,6 +179,29 @@ public class BundleUpdateStore: NSObject {
178
179
  UserDefaults.standard.synchronize()
179
180
  }
180
181
 
182
+ public static func getCurrentNativeBuildNumber() -> String {
183
+ Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? ""
184
+ }
185
+
186
+ public static func getNativeBuildNumber() -> String? {
187
+ UserDefaults.standard.string(forKey: nativeBuildNumberKey)
188
+ }
189
+
190
+ public static func setNativeBuildNumber(_ buildNumber: String) {
191
+ UserDefaults.standard.set(buildNumber, forKey: nativeBuildNumberKey)
192
+ UserDefaults.standard.synchronize()
193
+ }
194
+
195
+ public static func clearNativeVersionPrefs() {
196
+ let ud = UserDefaults.standard
197
+ ud.removeObject(forKey: nativeVersionKey)
198
+ ud.removeObject(forKey: nativeBuildNumberKey)
199
+ }
200
+
201
+ public static func getBuiltinBundleVersion() -> String {
202
+ Bundle.main.infoDictionary?["BUNDLE_VERSION"] as? String ?? ""
203
+ }
204
+
181
205
  public static func getMetadataFilePath(_ currentBundleVersion: String) -> String? {
182
206
  let path = (bundleDir() as NSString)
183
207
  .appendingPathComponent(currentBundleVersion)
@@ -402,6 +426,21 @@ public class BundleUpdateStore: NSObject {
402
426
  deleteSignatureFile(cbv)
403
427
  ud.removeObject(forKey: "currentBundleVersion")
404
428
  }
429
+ clearNativeVersionPrefs()
430
+ ud.synchronize()
431
+ return nil
432
+ }
433
+
434
+ let currentBuildNumber = getCurrentNativeBuildNumber()
435
+ let prevBuildNumber = getNativeBuildNumber()
436
+ if !currentBuildNumber.isEmpty, let prev = prevBuildNumber, !prev.isEmpty, currentBuildNumber != prev {
437
+ OneKeyLog.info("BundleUpdate", "buildNumber changed from \(prev) to \(currentBuildNumber), clearing bundle data")
438
+ let ud = UserDefaults.standard
439
+ if let cbv = ud.string(forKey: "currentBundleVersion") {
440
+ deleteSignatureFile(cbv)
441
+ ud.removeObject(forKey: "currentBundleVersion")
442
+ }
443
+ clearNativeVersionPrefs()
405
444
  ud.synchronize()
406
445
  return nil
407
446
  }
@@ -972,6 +1011,8 @@ class ReactNativeBundleUpdate: HybridReactNativeBundleUpdateSpec {
972
1011
  }
973
1012
  let currentNativeVersion = BundleUpdateStore.getCurrentNativeVersion()
974
1013
  BundleUpdateStore.setNativeVersion(currentNativeVersion)
1014
+ let currentBuildNumber = BundleUpdateStore.getCurrentNativeBuildNumber()
1015
+ BundleUpdateStore.setNativeBuildNumber(currentBuildNumber)
975
1016
  ud.synchronize()
976
1017
 
977
1018
  // Manage fallback data
@@ -1059,7 +1100,7 @@ class ReactNativeBundleUpdate: HybridReactNativeBundleUpdateSpec {
1059
1100
  ud.removeObject(forKey: "currentBundleVersion")
1060
1101
  OneKeyLog.info("BundleUpdate", "clearAllJSBundleData: removed currentBundleVersion=\(cbv)")
1061
1102
  }
1062
- ud.removeObject(forKey: "nativeVersion")
1103
+ BundleUpdateStore.clearNativeVersionPrefs()
1063
1104
  ud.synchronize()
1064
1105
 
1065
1106
  OneKeyLog.info("BundleUpdate", "clearAllJSBundleData: completed successfully")
@@ -1157,6 +1198,22 @@ class ReactNativeBundleUpdate: HybridReactNativeBundleUpdateSpec {
1157
1198
  }
1158
1199
  }
1159
1200
 
1201
+ func getNativeBuildNumber() throws -> Promise<String> {
1202
+ return Promise.async {
1203
+ let buildNumber = BundleUpdateStore.getCurrentNativeBuildNumber()
1204
+ OneKeyLog.info("BundleUpdate", "getNativeBuildNumber: \(buildNumber)")
1205
+ return buildNumber
1206
+ }
1207
+ }
1208
+
1209
+ func getBuiltinBundleVersion() throws -> Promise<String> {
1210
+ return Promise.async {
1211
+ let version = BundleUpdateStore.getBuiltinBundleVersion()
1212
+ OneKeyLog.info("BundleUpdate", "getBuiltinBundleVersion: \(version)")
1213
+ return version
1214
+ }
1215
+ }
1216
+
1160
1217
  func testVerification() throws -> Promise<Bool> {
1161
1218
  return Promise.async {
1162
1219
  let testSignature = """
@@ -87,6 +87,8 @@ export interface ReactNativeBundleUpdate extends HybridObject<{
87
87
  getJsBundlePath(): string;
88
88
  getJsBundlePathAsync(): Promise<string>;
89
89
  getNativeAppVersion(): Promise<string>;
90
+ getNativeBuildNumber(): Promise<string>;
91
+ getBuiltinBundleVersion(): Promise<string>;
90
92
  testVerification(): Promise<boolean>;
91
93
  testSkipVerification(): Promise<boolean>;
92
94
  isSkipGpgVerificationAllowed(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ReactNativeBundleUpdate.nitro.d.ts","sourceRoot":"","sources":["../../../src/ReactNativeBundleUpdate.nitro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReactNativeBundleUpdate.nitro.d.ts","sourceRoot":"","sources":["../../../src/ReactNativeBundleUpdate.nitro.ts"],"names":[],"mappings":"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"}
@@ -316,6 +316,38 @@ namespace margelo::nitro::reactnativebundleupdate {
316
316
  return __promise;
317
317
  }();
318
318
  }
319
+ std::shared_ptr<Promise<std::string>> JHybridReactNativeBundleUpdateSpec::getNativeBuildNumber() {
320
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getNativeBuildNumber");
321
+ auto __result = method(_javaPart);
322
+ return [&]() {
323
+ auto __promise = Promise<std::string>::create();
324
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
325
+ auto __result = jni::static_ref_cast<jni::JString>(__boxedResult);
326
+ __promise->resolve(__result->toStdString());
327
+ });
328
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
329
+ jni::JniException __jniError(__throwable);
330
+ __promise->reject(std::make_exception_ptr(__jniError));
331
+ });
332
+ return __promise;
333
+ }();
334
+ }
335
+ std::shared_ptr<Promise<std::string>> JHybridReactNativeBundleUpdateSpec::getBuiltinBundleVersion() {
336
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getBuiltinBundleVersion");
337
+ auto __result = method(_javaPart);
338
+ return [&]() {
339
+ auto __promise = Promise<std::string>::create();
340
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
341
+ auto __result = jni::static_ref_cast<jni::JString>(__boxedResult);
342
+ __promise->resolve(__result->toStdString());
343
+ });
344
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
345
+ jni::JniException __jniError(__throwable);
346
+ __promise->reject(std::make_exception_ptr(__jniError));
347
+ });
348
+ return __promise;
349
+ }();
350
+ }
319
351
  std::shared_ptr<Promise<bool>> JHybridReactNativeBundleUpdateSpec::testVerification() {
320
352
  static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("testVerification");
321
353
  auto __result = method(_javaPart);
@@ -69,6 +69,8 @@ namespace margelo::nitro::reactnativebundleupdate {
69
69
  std::string getJsBundlePath() override;
70
70
  std::shared_ptr<Promise<std::string>> getJsBundlePathAsync() override;
71
71
  std::shared_ptr<Promise<std::string>> getNativeAppVersion() override;
72
+ std::shared_ptr<Promise<std::string>> getNativeBuildNumber() override;
73
+ std::shared_ptr<Promise<std::string>> getBuiltinBundleVersion() override;
72
74
  std::shared_ptr<Promise<bool>> testVerification() override;
73
75
  std::shared_ptr<Promise<bool>> testSkipVerification() override;
74
76
  bool isSkipGpgVerificationAllowed() override;
@@ -106,6 +106,14 @@ abstract class HybridReactNativeBundleUpdateSpec: HybridObject() {
106
106
  @Keep
107
107
  abstract fun getNativeAppVersion(): Promise<String>
108
108
 
109
+ @DoNotStrip
110
+ @Keep
111
+ abstract fun getNativeBuildNumber(): Promise<String>
112
+
113
+ @DoNotStrip
114
+ @Keep
115
+ abstract fun getBuiltinBundleVersion(): Promise<String>
116
+
109
117
  @DoNotStrip
110
118
  @Keep
111
119
  abstract fun testVerification(): Promise<Boolean>
@@ -218,6 +218,22 @@ namespace margelo::nitro::reactnativebundleupdate {
218
218
  auto __value = std::move(__result.value());
219
219
  return __value;
220
220
  }
221
+ inline std::shared_ptr<Promise<std::string>> getNativeBuildNumber() override {
222
+ auto __result = _swiftPart.getNativeBuildNumber();
223
+ if (__result.hasError()) [[unlikely]] {
224
+ std::rethrow_exception(__result.error());
225
+ }
226
+ auto __value = std::move(__result.value());
227
+ return __value;
228
+ }
229
+ inline std::shared_ptr<Promise<std::string>> getBuiltinBundleVersion() override {
230
+ auto __result = _swiftPart.getBuiltinBundleVersion();
231
+ if (__result.hasError()) [[unlikely]] {
232
+ std::rethrow_exception(__result.error());
233
+ }
234
+ auto __value = std::move(__result.value());
235
+ return __value;
236
+ }
221
237
  inline std::shared_ptr<Promise<bool>> testVerification() override {
222
238
  auto __result = _swiftPart.testVerification();
223
239
  if (__result.hasError()) [[unlikely]] {
@@ -29,6 +29,8 @@ public protocol HybridReactNativeBundleUpdateSpec_protocol: HybridObject {
29
29
  func getJsBundlePath() throws -> String
30
30
  func getJsBundlePathAsync() throws -> Promise<String>
31
31
  func getNativeAppVersion() throws -> Promise<String>
32
+ func getNativeBuildNumber() throws -> Promise<String>
33
+ func getBuiltinBundleVersion() throws -> Promise<String>
32
34
  func testVerification() throws -> Promise<Bool>
33
35
  func testSkipVerification() throws -> Promise<Bool>
34
36
  func isSkipGpgVerificationAllowed() throws -> Bool
@@ -394,6 +394,44 @@ open class HybridReactNativeBundleUpdateSpec_cxx {
394
394
  }
395
395
  }
396
396
 
397
+ @inline(__always)
398
+ public final func getNativeBuildNumber() -> bridge.Result_std__shared_ptr_Promise_std__string___ {
399
+ do {
400
+ let __result = try self.__implementation.getNativeBuildNumber()
401
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__string__ in
402
+ let __promise = bridge.create_std__shared_ptr_Promise_std__string__()
403
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__string__(__promise)
404
+ __result
405
+ .then({ __result in __promiseHolder.resolve(std.string(__result)) })
406
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
407
+ return __promise
408
+ }()
409
+ return bridge.create_Result_std__shared_ptr_Promise_std__string___(__resultCpp)
410
+ } catch (let __error) {
411
+ let __exceptionPtr = __error.toCpp()
412
+ return bridge.create_Result_std__shared_ptr_Promise_std__string___(__exceptionPtr)
413
+ }
414
+ }
415
+
416
+ @inline(__always)
417
+ public final func getBuiltinBundleVersion() -> bridge.Result_std__shared_ptr_Promise_std__string___ {
418
+ do {
419
+ let __result = try self.__implementation.getBuiltinBundleVersion()
420
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__string__ in
421
+ let __promise = bridge.create_std__shared_ptr_Promise_std__string__()
422
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__string__(__promise)
423
+ __result
424
+ .then({ __result in __promiseHolder.resolve(std.string(__result)) })
425
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
426
+ return __promise
427
+ }()
428
+ return bridge.create_Result_std__shared_ptr_Promise_std__string___(__resultCpp)
429
+ } catch (let __error) {
430
+ let __exceptionPtr = __error.toCpp()
431
+ return bridge.create_Result_std__shared_ptr_Promise_std__string___(__exceptionPtr)
432
+ }
433
+ }
434
+
397
435
  @inline(__always)
398
436
  public final func testVerification() -> bridge.Result_std__shared_ptr_Promise_bool___ {
399
437
  do {
@@ -29,6 +29,8 @@ namespace margelo::nitro::reactnativebundleupdate {
29
29
  prototype.registerHybridMethod("getJsBundlePath", &HybridReactNativeBundleUpdateSpec::getJsBundlePath);
30
30
  prototype.registerHybridMethod("getJsBundlePathAsync", &HybridReactNativeBundleUpdateSpec::getJsBundlePathAsync);
31
31
  prototype.registerHybridMethod("getNativeAppVersion", &HybridReactNativeBundleUpdateSpec::getNativeAppVersion);
32
+ prototype.registerHybridMethod("getNativeBuildNumber", &HybridReactNativeBundleUpdateSpec::getNativeBuildNumber);
33
+ prototype.registerHybridMethod("getBuiltinBundleVersion", &HybridReactNativeBundleUpdateSpec::getBuiltinBundleVersion);
32
34
  prototype.registerHybridMethod("testVerification", &HybridReactNativeBundleUpdateSpec::testVerification);
33
35
  prototype.registerHybridMethod("testSkipVerification", &HybridReactNativeBundleUpdateSpec::testSkipVerification);
34
36
  prototype.registerHybridMethod("isSkipGpgVerificationAllowed", &HybridReactNativeBundleUpdateSpec::isSkipGpgVerificationAllowed);
@@ -101,6 +101,8 @@ namespace margelo::nitro::reactnativebundleupdate {
101
101
  virtual std::string getJsBundlePath() = 0;
102
102
  virtual std::shared_ptr<Promise<std::string>> getJsBundlePathAsync() = 0;
103
103
  virtual std::shared_ptr<Promise<std::string>> getNativeAppVersion() = 0;
104
+ virtual std::shared_ptr<Promise<std::string>> getNativeBuildNumber() = 0;
105
+ virtual std::shared_ptr<Promise<std::string>> getBuiltinBundleVersion() = 0;
104
106
  virtual std::shared_ptr<Promise<bool>> testVerification() = 0;
105
107
  virtual std::shared_ptr<Promise<bool>> testSkipVerification() = 0;
106
108
  virtual bool isSkipGpgVerificationAllowed() = 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/react-native-bundle-update",
3
- "version": "1.1.39",
3
+ "version": "1.1.41",
4
4
  "description": "react-native-bundle-update",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -109,6 +109,8 @@ export interface ReactNativeBundleUpdate
109
109
  getJsBundlePath(): string;
110
110
  getJsBundlePathAsync(): Promise<string>;
111
111
  getNativeAppVersion(): Promise<string>;
112
+ getNativeBuildNumber(): Promise<string>;
113
+ getBuiltinBundleVersion(): Promise<string>;
112
114
 
113
115
  // Verification & testing
114
116
  testVerification(): Promise<boolean>;