react-native-ota-hot-update 2.1.15 → 2.2.0

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 (41) hide show
  1. package/README.md +16 -2
  2. package/android/generated/java/com/otahotupdate/NativeOtaHotUpdateSpec.java +8 -0
  3. package/android/generated/jni/RNOtaHotUpdateSpec-generated.cpp +12 -0
  4. package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/RNOtaHotUpdateSpecJSI-generated.cpp +14 -0
  5. package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/RNOtaHotUpdateSpecJSI.h +18 -0
  6. package/android/src/main/java/com/otahotupdate/CrashHandler.kt +55 -0
  7. package/android/src/main/java/com/otahotupdate/OtaHotUpdate.kt +15 -23
  8. package/android/src/main/java/com/otahotupdate/OtaHotUpdateModule.kt +36 -95
  9. package/android/src/main/java/com/otahotupdate/SharedPrefs.kt +1 -0
  10. package/android/src/main/java/com/otahotupdate/Utils.kt +94 -0
  11. package/android/src/oldarch/OtaHotUpdateSpec.kt +2 -0
  12. package/ios/OtaHotUpdate.mm +76 -10
  13. package/ios/generated/RNOtaHotUpdateSpec/RNOtaHotUpdateSpec-generated.mm +14 -0
  14. package/ios/generated/RNOtaHotUpdateSpec/RNOtaHotUpdateSpec.h +6 -0
  15. package/ios/generated/RNOtaHotUpdateSpecJSI-generated.cpp +14 -0
  16. package/ios/generated/RNOtaHotUpdateSpecJSI.h +18 -0
  17. package/lib/commonjs/NativeOtaHotUpdate.js.map +1 -1
  18. package/lib/commonjs/index.js +45 -27
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/module/NativeOtaHotUpdate.js.map +1 -1
  21. package/lib/module/index.js +45 -27
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/typescript/commonjs/src/NativeOtaHotUpdate.d.ts +2 -0
  24. package/lib/typescript/commonjs/src/NativeOtaHotUpdate.d.ts.map +1 -1
  25. package/lib/typescript/commonjs/src/index.d.ts +5 -1
  26. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/src/type.d.ts +10 -0
  28. package/lib/typescript/commonjs/src/type.d.ts.map +1 -1
  29. package/lib/typescript/module/src/NativeOtaHotUpdate.d.ts +2 -0
  30. package/lib/typescript/module/src/NativeOtaHotUpdate.d.ts.map +1 -1
  31. package/lib/typescript/module/src/index.d.ts +5 -1
  32. package/lib/typescript/module/src/index.d.ts.map +1 -1
  33. package/lib/typescript/module/src/type.d.ts +10 -0
  34. package/lib/typescript/module/src/type.d.ts.map +1 -1
  35. package/package.json +2 -13
  36. package/plugin/build/index.js +1 -1
  37. package/plugin/src/index.ts +1 -1
  38. package/react-native.config.js +1 -1
  39. package/src/NativeOtaHotUpdate.ts +2 -0
  40. package/src/index.tsx +52 -30
  41. package/src/type.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA+C5D,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3E;AACD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AAOD,iBAAS,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AACD,iBAAe,kBAAkB,oBAGhC;AACD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AACD,iBAAe,QAAQ,kBAEtB;AACD,iBAAS,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,QAWlD;AAKD,iBAAe,iBAAiB,CAC9B,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,iBA8CtB;;;;;;;;;;;mCAgE8B,MAAM;;;;;;;;;;;;;;;;oBA5LX,CAAC;iBAEd,CAAC;;;qCA2H4B,eAAe;;;AAmDzD,wBAiBE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAgD5D,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3E;AACD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AAOD,iBAAS,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASnD;AACD,iBAAS,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AACD,iBAAe,kBAAkB,oBAGhC;AACD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AACD,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAO1D;AACD,iBAAe,QAAQ,kBAEtB;AACD,iBAAS,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,QAWlD;AAKD,iBAAe,iBAAiB,CAC9B,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,YAAY,iBA+CtB;;;;;;;;;;;;;mCAkE8B,MAAM;;;;;;;;;;;;;;;;oBAlNX,CAAC;iBAEd,CAAC;;;qCA+I4B,eAAe;;;AAmDzD,wBAmBE"}
@@ -24,11 +24,21 @@ export interface UpdateOption {
24
24
  * Default: `false`.
25
25
  */
26
26
  restartAfterInstall?: boolean;
27
+ /**
28
+ * Delay in milliseconds before restarting the app after installing the update.
29
+ * Default: 300ms.
30
+ */
31
+ restartDelay?: number;
27
32
  /**
28
33
  * Custom extension for the bundle file, if applicable.
29
34
  * For example: '.jsbundle'.
30
35
  */
31
36
  extensionBundle?: string;
37
+ /**
38
+ * Metadata for the update.
39
+ * Can contain information such as version details, description, etc.
40
+ */
41
+ metadata?: any;
32
42
  }
33
43
  /**
34
44
  * Options for updating a Git repository.
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAE5C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,IAAI,IAAI,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,gBAAgB,CAAC,IAAI,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAE5C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,IAAI,IAAI,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,gBAAgB,CAAC,IAAI,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -5,7 +5,9 @@ export interface Spec extends TurboModule {
5
5
  deleteBundle(i: number): Promise<boolean>;
6
6
  restart(): void;
7
7
  getCurrentVersion(a: number): Promise<string>;
8
+ getUpdateMetadata(a: number): Promise<string>;
8
9
  setCurrentVersion(version: string): Promise<boolean>;
10
+ setUpdateMetadata(metadata: string): Promise<boolean>;
9
11
  rollbackToPreviousBundle(a: number): Promise<boolean>;
10
12
  }
11
13
  declare const _default: Spec;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeOtaHotUpdate.d.ts","sourceRoot":"","sources":["../../../../src/NativeOtaHotUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;;AAED,wBAAsE"}
1
+ {"version":3,"file":"NativeOtaHotUpdate.d.ts","sourceRoot":"","sources":["../../../../src/NativeOtaHotUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;;AAED,wBAAsE"}
@@ -2,12 +2,14 @@ import type { DownloadManager } from './download';
2
2
  import type { UpdateGitOption, UpdateOption } from './type';
3
3
  declare function setupBundlePath(path: string, extension?: string): Promise<boolean>;
4
4
  declare function setupExactBundlePath(path: string): Promise<boolean>;
5
+ declare function getUpdateMetadata(): Promise<object | null>;
5
6
  declare function rollbackToPreviousBundle(): Promise<boolean>;
6
7
  declare function getVersionAsNumber(): Promise<number>;
7
8
  declare function setCurrentVersion(version: number): Promise<boolean>;
9
+ declare function setUpdateMetadata(metadata: any): Promise<boolean>;
8
10
  declare function resetApp(): Promise<void>;
9
11
  declare function removeBundle(restartAfterRemoved?: boolean): void;
10
- declare function downloadBundleUri(downloadManager: DownloadManager, uri: string, version: number, option?: UpdateOption): Promise<void>;
12
+ declare function downloadBundleUri(downloadManager: DownloadManager, uri: string, version?: number, option?: UpdateOption): Promise<void>;
11
13
  declare const _default: {
12
14
  setupBundlePath: typeof setupBundlePath;
13
15
  setupExactBundlePath: typeof setupExactBundlePath;
@@ -16,6 +18,8 @@ declare const _default: {
16
18
  resetApp: typeof resetApp;
17
19
  getCurrentVersion: typeof getVersionAsNumber;
18
20
  setCurrentVersion: typeof setCurrentVersion;
21
+ getUpdateMetadata: typeof getUpdateMetadata;
22
+ setUpdateMetadata: typeof setUpdateMetadata;
19
23
  rollbackToPreviousBundle: typeof rollbackToPreviousBundle;
20
24
  git: {
21
25
  removeGitUpdate: (folder?: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA+C5D,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3E;AACD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AAOD,iBAAS,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AACD,iBAAe,kBAAkB,oBAGhC;AACD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AACD,iBAAe,QAAQ,kBAEtB;AACD,iBAAS,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,QAWlD;AAKD,iBAAe,iBAAiB,CAC9B,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,iBA8CtB;;;;;;;;;;;mCAgE8B,MAAM;;;;;;;;;;;;;;;;oBA5LX,CAAC;iBAEd,CAAC;;;qCA2H4B,eAAe;;;AAmDzD,wBAiBE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAgD5D,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3E;AACD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AAOD,iBAAS,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASnD;AACD,iBAAS,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AACD,iBAAe,kBAAkB,oBAGhC;AACD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AACD,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAO1D;AACD,iBAAe,QAAQ,kBAEtB;AACD,iBAAS,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,QAWlD;AAKD,iBAAe,iBAAiB,CAC9B,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,YAAY,iBA+CtB;;;;;;;;;;;;;mCAkE8B,MAAM;;;;;;;;;;;;;;;;oBAlNX,CAAC;iBAEd,CAAC;;;qCA+I4B,eAAe;;;AAmDzD,wBAmBE"}
@@ -24,11 +24,21 @@ export interface UpdateOption {
24
24
  * Default: `false`.
25
25
  */
26
26
  restartAfterInstall?: boolean;
27
+ /**
28
+ * Delay in milliseconds before restarting the app after installing the update.
29
+ * Default: 300ms.
30
+ */
31
+ restartDelay?: number;
27
32
  /**
28
33
  * Custom extension for the bundle file, if applicable.
29
34
  * For example: '.jsbundle'.
30
35
  */
31
36
  extensionBundle?: string;
37
+ /**
38
+ * Metadata for the update.
39
+ * Can contain information such as version details, description, etc.
40
+ */
41
+ metadata?: any;
32
42
  }
33
43
  /**
34
44
  * Options for updating a Git repository.
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAE5C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,IAAI,IAAI,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,gBAAgB,CAAC,IAAI,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAE5C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,IAAI,IAAI,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,gBAAgB,CAAC,IAAI,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB"}
package/package.json CHANGED
@@ -1,22 +1,11 @@
1
1
  {
2
2
  "name": "react-native-ota-hot-update",
3
- "version": "2.1.15",
3
+ "version": "2.2.0",
4
4
  "description": "Hot update for react native",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
7
7
  "module": "./lib/module/index.js",
8
- "exports": {
9
- ".": {
10
- "import": {
11
- "types": "./lib/typescript/module/src/index.d.ts",
12
- "default": "./lib/module/index.js"
13
- },
14
- "require": {
15
- "types": "./lib/typescript/commonjs/src/index.d.ts",
16
- "default": "./lib/commonjs/index.js"
17
- }
18
- }
19
- },
8
+ "types": "./lib/typescript/module/src/index.d.ts",
20
9
  "files": [
21
10
  "src",
22
11
  "lib",
@@ -6,7 +6,7 @@ const withAndroidAction = (config) => {
6
6
  config.modResults.contents = config.modResults.contents.replace(/override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED/g, `
7
7
  override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
8
8
 
9
- override fun getJSBundleFile(): String = OtaHotUpdate.bundleJS`);
9
+ override fun getJSBundleFile(): String = OtaHotUpdate.bundleJS(this@MainApplication)`);
10
10
  config.modResults.contents = config.modResults.contents.replace(/import expo.modules.ReactNativeHostWrapper/g, `
11
11
  import expo.modules.ReactNativeHostWrapper
12
12
  import com.otahotupdate.OtaHotUpdate`);
@@ -6,7 +6,7 @@ const withAndroidAction: any = (config: any) => {
6
6
  `
7
7
  override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
8
8
 
9
- override fun getJSBundleFile(): String = OtaHotUpdate.bundleJS`
9
+ override fun getJSBundleFile(): String = OtaHotUpdate.bundleJS(this@MainApplication)`
10
10
  );
11
11
  config.modResults.contents = config.modResults.contents.replace(
12
12
  /import expo.modules.ReactNativeHostWrapper/g,
@@ -6,7 +6,7 @@ module.exports = {
6
6
  platforms: {
7
7
  android: {
8
8
  cmakeListsPath: 'generated/jni/CMakeLists.txt',
9
- packageInstance: 'new OtaHotUpdate(getApplicationContext())',
9
+ packageInstance: 'new OtaHotUpdate()',
10
10
  },
11
11
  },
12
12
  },
@@ -7,7 +7,9 @@ export interface Spec extends TurboModule {
7
7
  deleteBundle(i: number): Promise<boolean>;
8
8
  restart(): void;
9
9
  getCurrentVersion(a: number): Promise<string>;
10
+ getUpdateMetadata(a: number): Promise<string>;
10
11
  setCurrentVersion(version: string): Promise<boolean>;
12
+ setUpdateMetadata(metadata: string): Promise<boolean>;
11
13
  rollbackToPreviousBundle(a: number): Promise<boolean>;
12
14
  }
13
15
 
package/src/index.tsx CHANGED
@@ -36,6 +36,7 @@ const downloadBundleFile = async (
36
36
  const res = await downloadManager
37
37
  .config({
38
38
  fileCache: Platform.OS === 'android',
39
+ path: !!downloadManager?.fs?.dirs?.LibraryDir && Platform.OS === 'ios' ? `${downloadManager.fs.dirs.LibraryDir}/${new Date().valueOf()}_hotupdate.zip` : undefined
39
40
  })
40
41
  .fetch('GET', uri, {
41
42
  ...headers,
@@ -59,6 +60,16 @@ function deleteBundlePath(): Promise<boolean> {
59
60
  function getCurrentVersion(): Promise<string> {
60
61
  return RNhotupdate.getCurrentVersion(0);
61
62
  }
63
+ function getUpdateMetadata(): Promise<object | null> {
64
+ return RNhotupdate.getUpdateMetadata(0)
65
+ .then((metadataString: string | null) => {
66
+ try {
67
+ return metadataString ? JSON.parse(metadataString) : null;
68
+ } catch (error) {
69
+ return Promise.reject(new Error('Error parsing metadata'));
70
+ }
71
+ });
72
+ }
62
73
  function rollbackToPreviousBundle(): Promise<boolean> {
63
74
  return RNhotupdate.rollbackToPreviousBundle(0);
64
75
  }
@@ -69,6 +80,14 @@ async function getVersionAsNumber() {
69
80
  function setCurrentVersion(version: number): Promise<boolean> {
70
81
  return RNhotupdate.setCurrentVersion(version + '');
71
82
  }
83
+ function setUpdateMetadata(metadata: any): Promise<boolean> {
84
+ try {
85
+ const metadataString = JSON.stringify(metadata);
86
+ return RNhotupdate.setUpdateMetadata(metadataString);
87
+ } catch (error) {
88
+ return Promise.reject(new Error('Failed to stringify metadata'));
89
+ }
90
+ }
72
91
  async function resetApp() {
73
92
  RNhotupdate.restart();
74
93
  }
@@ -91,26 +110,23 @@ const installFail = (option?: UpdateOption, e?: any) => {
91
110
  async function downloadBundleUri(
92
111
  downloadManager: DownloadManager,
93
112
  uri: string,
94
- version: number,
113
+ version?: number,
95
114
  option?: UpdateOption
96
115
  ) {
97
116
  if (!uri) {
98
- installFail(option, 'Please give a valid URL!');
99
- return;
117
+ return installFail(option, 'Please give a valid URL!');
100
118
  }
101
- if (!version) {
102
- installFail(option, 'Please give a valid version!');
103
- return;
104
- }
105
- const currentVersion = await getVersionAsNumber();
106
- if (version <= currentVersion) {
107
- installFail(
108
- option,
109
- 'Please give a bigger version than the current version, the current version now has setted by: ' +
119
+ if (version) {
120
+ const currentVersion = await getVersionAsNumber();
121
+ if (version <= currentVersion) {
122
+ return installFail(
123
+ option,
124
+ 'Please give a bigger version than the current version, the current version now has setted by: ' +
110
125
  currentVersion
111
- );
112
- return;
126
+ );
127
+ }
113
128
  }
129
+
114
130
  try {
115
131
  const path = await downloadBundleFile(
116
132
  downloadManager,
@@ -118,22 +134,26 @@ async function downloadBundleUri(
118
134
  option?.headers,
119
135
  option?.progress
120
136
  );
121
- if (path) {
122
- setupBundlePath(path, option?.extensionBundle).then((success) => {
123
- if (success) {
124
- setCurrentVersion(version);
125
- option?.updateSuccess?.();
126
- if (option?.restartAfterInstall) {
127
- setTimeout(() => {
128
- resetApp();
129
- }, 300);
130
- }
131
- } else {
132
- installFail(option);
133
- }
134
- });
135
- } else {
136
- installFail(option);
137
+ if (!path) {
138
+ return installFail(option);
139
+ }
140
+
141
+ const success = await setupBundlePath(path, option?.extensionBundle);
142
+ if (!success) {
143
+ return installFail(option);
144
+ }
145
+ if (version) {
146
+ setCurrentVersion(version);
147
+ }
148
+ if (option?.metadata) {
149
+ setUpdateMetadata(option.metadata);
150
+ }
151
+ option?.updateSuccess?.();
152
+
153
+ if (option?.restartAfterInstall) {
154
+ setTimeout(() => {
155
+ resetApp();
156
+ }, option?.restartDelay || 300);
137
157
  }
138
158
  } catch (e) {
139
159
  installFail(option, e);
@@ -198,6 +218,8 @@ export default {
198
218
  resetApp,
199
219
  getCurrentVersion: getVersionAsNumber,
200
220
  setCurrentVersion,
221
+ getUpdateMetadata,
222
+ setUpdateMetadata,
201
223
  rollbackToPreviousBundle,
202
224
  git: {
203
225
  checkForGitUpdate,
package/src/type.ts CHANGED
@@ -29,11 +29,23 @@ export interface UpdateOption {
29
29
  */
30
30
  restartAfterInstall?: boolean;
31
31
 
32
+ /**
33
+ * Delay in milliseconds before restarting the app after installing the update.
34
+ * Default: 300ms.
35
+ */
36
+ restartDelay?: number;
37
+
32
38
  /**
33
39
  * Custom extension for the bundle file, if applicable.
34
40
  * For example: '.jsbundle'.
35
41
  */
36
42
  extensionBundle?: string;
43
+
44
+ /**
45
+ * Metadata for the update.
46
+ * Can contain information such as version details, description, etc.
47
+ */
48
+ metadata?: any
37
49
  }
38
50
 
39
51
  /**