react-native-3rddigital-appupdate 1.0.22 → 1.0.24
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.
|
@@ -8,9 +8,19 @@ import hotUpdate from 'react-native-ota-hot-update';
|
|
|
8
8
|
import { AppAlertDialog } from "./AppAlertDialog.js";
|
|
9
9
|
import { AppLoader } from "./AppLoader.js";
|
|
10
10
|
const OTA_UPDATE_SUCCESS_FILE = `${ReactNativeBlobUtil.fs.dirs.CacheDir}/ota-update-success.json`;
|
|
11
|
+
const getOTAFilePath = () => {
|
|
12
|
+
const dir = ReactNativeBlobUtil.fs.dirs.CacheDir;
|
|
13
|
+
if (!dir) return null;
|
|
14
|
+
return `${dir}/ota-update-success.json`;
|
|
15
|
+
};
|
|
11
16
|
const persistOTAUpdateSuccessState = async state => {
|
|
12
17
|
try {
|
|
13
|
-
|
|
18
|
+
const filePath = getOTAFilePath();
|
|
19
|
+
if (!filePath) {
|
|
20
|
+
console.error('OTA: Could not determine file path - CacheDir is null');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
await ReactNativeBlobUtil.fs.writeFile(filePath, JSON.stringify(state), 'utf8');
|
|
14
24
|
} catch (error) {
|
|
15
25
|
console.warn('Failed to persist OTA update success state:', error);
|
|
16
26
|
}
|
|
@@ -46,17 +56,35 @@ export const consumeOTAUpdateSuccessState = async () => {
|
|
|
46
56
|
export const reloadAppForOTAUpdate = () => {
|
|
47
57
|
hotUpdate.resetApp();
|
|
48
58
|
};
|
|
49
|
-
const formatError = error => {
|
|
59
|
+
const formatError = (error, url) => {
|
|
50
60
|
if (!error) return 'Unknown error';
|
|
51
61
|
if (typeof error === 'string') return error;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
const errorLog = {
|
|
63
|
+
message: error?.message || 'No message',
|
|
64
|
+
code: error?.code || 'NO_CODE',
|
|
65
|
+
domain: error?.domain || 'RCTErrorDomain',
|
|
66
|
+
nativeStackIOS: error?.nativeStackIOS || [],
|
|
67
|
+
userInfo: error?.userInfo || null,
|
|
68
|
+
name: error?.name,
|
|
69
|
+
stack: error?.stack
|
|
70
|
+
};
|
|
71
|
+
const extraData = {};
|
|
72
|
+
Object.getOwnPropertyNames(error).forEach(key => {
|
|
73
|
+
if (!Object.keys(errorLog).includes(key)) {
|
|
74
|
+
extraData[key] = error[key];
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
...errorLog,
|
|
79
|
+
extraData,
|
|
80
|
+
rawString: error?.toString() !== '[object Object]' ? error.toString() : `${error?.name}: ${error?.message}`,
|
|
81
|
+
debugContext: {
|
|
82
|
+
attemptedUrl: url,
|
|
83
|
+
cacheDir: ReactNativeBlobUtil.fs.dirs.CacheDir || 'NULL',
|
|
84
|
+
documentDir: ReactNativeBlobUtil.fs.dirs.DocumentDir || 'NULL',
|
|
85
|
+
targetFile: getOTAFilePath() || OTA_UPDATE_SUCCESS_FILE
|
|
86
|
+
}
|
|
87
|
+
};
|
|
60
88
|
};
|
|
61
89
|
export const checkOTAUpdate = async ({
|
|
62
90
|
key,
|
|
@@ -117,7 +145,7 @@ export const checkOTAUpdate = async ({
|
|
|
117
145
|
updateFail: error => {
|
|
118
146
|
axios.post(`${API_URL}bundles/${bundleId}/count`, {
|
|
119
147
|
status: 'failure',
|
|
120
|
-
error: JSON.stringify(formatError(error)),
|
|
148
|
+
error: JSON.stringify(formatError(error, url)),
|
|
121
149
|
deviceInfo: {
|
|
122
150
|
model: DeviceInfo.getModel(),
|
|
123
151
|
brand: DeviceInfo.getBrand(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["axios","Platform","ReactNativeBlobUtil","DeviceInfo","hotUpdate","AppAlertDialog","AppLoader","OTA_UPDATE_SUCCESS_FILE","fs","dirs","CacheDir","persistOTAUpdateSuccessState","state","
|
|
1
|
+
{"version":3,"names":["axios","Platform","ReactNativeBlobUtil","DeviceInfo","hotUpdate","AppAlertDialog","AppLoader","OTA_UPDATE_SUCCESS_FILE","fs","dirs","CacheDir","getOTAFilePath","dir","persistOTAUpdateSuccessState","state","filePath","console","error","writeFile","JSON","stringify","warn","readOTAUpdateSuccessState","exists","content","readFile","parse","consumeOTAUpdateSuccessState","unlink","reloadAppForOTAUpdate","resetApp","formatError","url","errorLog","message","code","domain","nativeStackIOS","userInfo","name","stack","extraData","Object","getOwnPropertyNames","forEach","key","keys","includes","rawString","toString","debugContext","attemptedUrl","cacheDir","documentDir","DocumentDir","targetFile","checkOTAUpdate","iosPackage","androidPackage","loaderOptions","dialogOptions","baseUrl","restartAfterInstall","restartDelay","onUpdateInstalled","API_URL","response","get","currentVersion","getCurrentVersion","data","OS","android","ios","version","forceUpdate","bundleId","currentAppVersion","getVersion","bundleAppVersion","appVersion","downloadAndReport","show","downloadBundleUri","progress","received","total","showProgress","percentage","Number","toFixed","updateProgress","updateSuccess","updateState","installedAt","Date","toISOString","finally","post","status","headers","hide","catch","updateFail","deviceInfo","model","getModel","brand","getBrand","systemName","getSystemName","systemVersion","getSystemVersion","showMessage","title","confirmText","cancelText","onConfirm","onCancel","err"],"sourceRoot":"../../src","sources":["checkOTAUpdate.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkOTAUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkOTAUpdate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"checkOTAUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkOTAUpdate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AA8CF,eAAO,MAAM,4BAA4B,6CAkBxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,YAEjC,CAAC;AAuCF,eAAO,MAAM,cAAc,GAAU,mIAUlC,cAAc,kBAoGhB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-3rddigital-appupdate",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.24",
|
|
4
4
|
"description": "A React Native library for seamless over-the-air (OTA) updates with version checks, automatic bundle download, and customizable user prompts for iOS and Android.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
@@ -162,9 +162,9 @@
|
|
|
162
162
|
"axios": "^1.12.2",
|
|
163
163
|
"dotenv": "^17.3.1",
|
|
164
164
|
"form-data": "^4.0.4",
|
|
165
|
-
"react-native-blob-util": "^0.
|
|
166
|
-
"react-native-device-info": "^
|
|
167
|
-
"react-native-ota-hot-update": "^2.3
|
|
165
|
+
"react-native-blob-util": "^0.24.7",
|
|
166
|
+
"react-native-device-info": "^15.0.2",
|
|
167
|
+
"react-native-ota-hot-update": "^2.4.3",
|
|
168
168
|
"uuid": "^13.0.0"
|
|
169
169
|
},
|
|
170
170
|
"bin": {
|
package/src/checkOTAUpdate.ts
CHANGED
|
@@ -27,10 +27,21 @@ export type OTAUpdateSuccessState = {
|
|
|
27
27
|
|
|
28
28
|
const OTA_UPDATE_SUCCESS_FILE = `${ReactNativeBlobUtil.fs.dirs.CacheDir}/ota-update-success.json`;
|
|
29
29
|
|
|
30
|
+
const getOTAFilePath = () => {
|
|
31
|
+
const dir = ReactNativeBlobUtil.fs.dirs.CacheDir;
|
|
32
|
+
if (!dir) return null;
|
|
33
|
+
return `${dir}/ota-update-success.json`;
|
|
34
|
+
};
|
|
35
|
+
|
|
30
36
|
const persistOTAUpdateSuccessState = async (state: OTAUpdateSuccessState) => {
|
|
31
37
|
try {
|
|
38
|
+
const filePath = getOTAFilePath();
|
|
39
|
+
if (!filePath) {
|
|
40
|
+
console.error('OTA: Could not determine file path - CacheDir is null');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
32
43
|
await ReactNativeBlobUtil.fs.writeFile(
|
|
33
|
-
|
|
44
|
+
filePath,
|
|
34
45
|
JSON.stringify(state),
|
|
35
46
|
'utf8'
|
|
36
47
|
);
|
|
@@ -82,20 +93,41 @@ export const reloadAppForOTAUpdate = () => {
|
|
|
82
93
|
hotUpdate.resetApp();
|
|
83
94
|
};
|
|
84
95
|
|
|
85
|
-
const formatError = (error:
|
|
96
|
+
const formatError = (error: any, url: string) => {
|
|
86
97
|
if (!error) return 'Unknown error';
|
|
87
|
-
|
|
88
98
|
if (typeof error === 'string') return error;
|
|
89
99
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
100
|
+
const errorLog = {
|
|
101
|
+
message: error?.message || 'No message',
|
|
102
|
+
code: error?.code || 'NO_CODE',
|
|
103
|
+
domain: error?.domain || 'RCTErrorDomain',
|
|
104
|
+
nativeStackIOS: error?.nativeStackIOS || [],
|
|
105
|
+
userInfo: error?.userInfo || null,
|
|
106
|
+
name: error?.name,
|
|
107
|
+
stack: error?.stack,
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const extraData: Record<string, any> = {};
|
|
111
|
+
Object.getOwnPropertyNames(error).forEach((key) => {
|
|
112
|
+
if (!Object.keys(errorLog).includes(key)) {
|
|
113
|
+
extraData[key] = error[key];
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
...errorLog,
|
|
119
|
+
extraData,
|
|
120
|
+
rawString:
|
|
121
|
+
error?.toString() !== '[object Object]'
|
|
122
|
+
? error.toString()
|
|
123
|
+
: `${error?.name}: ${error?.message}`,
|
|
124
|
+
debugContext: {
|
|
125
|
+
attemptedUrl: url,
|
|
126
|
+
cacheDir: ReactNativeBlobUtil.fs.dirs.CacheDir || 'NULL',
|
|
127
|
+
documentDir: ReactNativeBlobUtil.fs.dirs.DocumentDir || 'NULL',
|
|
128
|
+
targetFile: getOTAFilePath() || OTA_UPDATE_SUCCESS_FILE,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
99
131
|
};
|
|
100
132
|
|
|
101
133
|
export const checkOTAUpdate = async ({
|
|
@@ -175,7 +207,7 @@ export const checkOTAUpdate = async ({
|
|
|
175
207
|
`${API_URL}bundles/${bundleId}/count`,
|
|
176
208
|
{
|
|
177
209
|
status: 'failure',
|
|
178
|
-
error: JSON.stringify(formatError(error)),
|
|
210
|
+
error: JSON.stringify(formatError(error, url)),
|
|
179
211
|
deviceInfo: {
|
|
180
212
|
model: DeviceInfo.getModel(),
|
|
181
213
|
brand: DeviceInfo.getBrand(),
|