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.
- package/README.md +16 -2
- package/android/generated/java/com/otahotupdate/NativeOtaHotUpdateSpec.java +8 -0
- package/android/generated/jni/RNOtaHotUpdateSpec-generated.cpp +12 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/RNOtaHotUpdateSpecJSI-generated.cpp +14 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/RNOtaHotUpdateSpecJSI.h +18 -0
- package/android/src/main/java/com/otahotupdate/CrashHandler.kt +55 -0
- package/android/src/main/java/com/otahotupdate/OtaHotUpdate.kt +15 -23
- package/android/src/main/java/com/otahotupdate/OtaHotUpdateModule.kt +36 -95
- package/android/src/main/java/com/otahotupdate/SharedPrefs.kt +1 -0
- package/android/src/main/java/com/otahotupdate/Utils.kt +94 -0
- package/android/src/oldarch/OtaHotUpdateSpec.kt +2 -0
- package/ios/OtaHotUpdate.mm +76 -10
- package/ios/generated/RNOtaHotUpdateSpec/RNOtaHotUpdateSpec-generated.mm +14 -0
- package/ios/generated/RNOtaHotUpdateSpec/RNOtaHotUpdateSpec.h +6 -0
- package/ios/generated/RNOtaHotUpdateSpecJSI-generated.cpp +14 -0
- package/ios/generated/RNOtaHotUpdateSpecJSI.h +18 -0
- package/lib/commonjs/NativeOtaHotUpdate.js.map +1 -1
- package/lib/commonjs/index.js +45 -27
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeOtaHotUpdate.js.map +1 -1
- package/lib/module/index.js +45 -27
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/commonjs/src/NativeOtaHotUpdate.d.ts +2 -0
- package/lib/typescript/commonjs/src/NativeOtaHotUpdate.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +5 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/type.d.ts +10 -0
- package/lib/typescript/commonjs/src/type.d.ts.map +1 -1
- package/lib/typescript/module/src/NativeOtaHotUpdate.d.ts +2 -0
- package/lib/typescript/module/src/NativeOtaHotUpdate.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +5 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/type.d.ts +10 -0
- package/lib/typescript/module/src/type.d.ts.map +1 -1
- package/package.json +2 -13
- package/plugin/build/index.js +1 -1
- package/plugin/src/index.ts +1 -1
- package/react-native.config.js +1 -1
- package/src/NativeOtaHotUpdate.ts +2 -0
- package/src/index.tsx +52 -30
- 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;
|
|
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;
|
|
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
|
|
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;
|
|
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;
|
|
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.
|
|
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
|
-
"
|
|
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",
|
package/plugin/build/index.js
CHANGED
|
@@ -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`);
|
package/plugin/src/index.ts
CHANGED
|
@@ -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,
|
package/react-native.config.js
CHANGED
|
@@ -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
|
|
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 (
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
/**
|