react-native-update 10.10.3 → 10.11.1
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 +1 -2
- package/package.json +3 -2
- package/src/context.ts +2 -2
- package/src/provider.tsx +38 -8
- package/src/type.ts +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
### 优势
|
|
10
10
|
|
|
11
|
-
1.
|
|
11
|
+
1. 对中国用户使用阿里云高速 CDN 分发,对比其他服务器在国外的热更新服务,分发更稳定,更新成功率极高。对国外用户则智能分流至 cloudflare,同样享受高速更新服务。
|
|
12
12
|
2. 基于 bsdiff/hdiff 算法创建的**超小更新包**,通常版本迭代后在几十 KB 级别(其他全量热更新服务所需流量通常在几十 MB 级别)。
|
|
13
13
|
3. 始终跟进 RN 最新正式版本,第一时间提供支持。支持 hermes 字节码格式。支持新架构。
|
|
14
14
|
4. 跨越多个版本进行更新时,只需要下载**一个更新包**,不需要逐版本依次更新。
|
|
@@ -33,4 +33,3 @@ $ yarn start
|
|
|
33
33
|
本组件由[React Native 中文网](https://reactnative.cn/)独家发布,如有定制需求可以[联系我们](https://reactnative.cn/about.html#content)。
|
|
34
34
|
|
|
35
35
|
关于此插件发现任何问题,可以前往[Issues](https://github.com/reactnativecn/react-native-pushy/issues)发帖提问。
|
|
36
|
-
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-update",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.11.1",
|
|
4
4
|
"description": "react-native hot update",
|
|
5
5
|
"main": "src/index",
|
|
6
6
|
"scripts": {
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
},
|
|
46
46
|
"homepage": "https://github.com/reactnativecn/react-native-pushy#readme",
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"nanoid": "^3.3.3"
|
|
48
|
+
"nanoid": "^3.3.3",
|
|
49
|
+
"react-native-url-polyfill": "^2.0.0"
|
|
49
50
|
},
|
|
50
51
|
"codegenConfig": {
|
|
51
52
|
"name": "RCTPushySpec",
|
package/src/context.ts
CHANGED
|
@@ -14,7 +14,7 @@ export const defaultContext = {
|
|
|
14
14
|
downloadUpdate: asyncNoop,
|
|
15
15
|
downloadAndInstallApk: asyncNoop,
|
|
16
16
|
getCurrentVersionInfo: () => Promise.resolve({}),
|
|
17
|
-
|
|
17
|
+
parseTestQrCode: () => false,
|
|
18
18
|
currentHash: '',
|
|
19
19
|
packageVersion: '',
|
|
20
20
|
};
|
|
@@ -32,7 +32,7 @@ export const PushyContext = createContext<{
|
|
|
32
32
|
description?: string;
|
|
33
33
|
metaInfo?: string;
|
|
34
34
|
}>;
|
|
35
|
-
|
|
35
|
+
parseTestQrCode: (code: string) => boolean;
|
|
36
36
|
currentHash: string;
|
|
37
37
|
packageVersion: string;
|
|
38
38
|
client?: Pushy;
|
package/src/provider.tsx
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
} from './core';
|
|
22
22
|
import { CheckResult, ProgressData, PushyTestPayload } from './type';
|
|
23
23
|
import { PushyContext } from './context';
|
|
24
|
+
import { URLSearchParams } from 'react-native-url-polyfill';
|
|
24
25
|
|
|
25
26
|
export const PushyProvider = ({
|
|
26
27
|
client,
|
|
@@ -263,13 +264,7 @@ export const PushyProvider = ({
|
|
|
263
264
|
}, [checkUpdate, options, dismissError, markSuccess]);
|
|
264
265
|
|
|
265
266
|
const parseTestPayload = useCallback(
|
|
266
|
-
|
|
267
|
-
let payload: PushyTestPayload;
|
|
268
|
-
try {
|
|
269
|
-
payload = JSON.parse(code);
|
|
270
|
-
} catch {
|
|
271
|
-
return false;
|
|
272
|
-
}
|
|
267
|
+
(payload: PushyTestPayload) => {
|
|
273
268
|
if (payload && payload.type && payload.type.startsWith('__rnPushy')) {
|
|
274
269
|
const logger = options.logger || (() => {});
|
|
275
270
|
options.logger = ({ type, data }) => {
|
|
@@ -294,6 +289,41 @@ export const PushyProvider = ({
|
|
|
294
289
|
[checkUpdate, options],
|
|
295
290
|
);
|
|
296
291
|
|
|
292
|
+
const parseTestQrCode = useCallback(
|
|
293
|
+
(code: string) => {
|
|
294
|
+
let payload: PushyTestPayload;
|
|
295
|
+
try {
|
|
296
|
+
payload = JSON.parse(code);
|
|
297
|
+
return parseTestPayload(payload);
|
|
298
|
+
} catch {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
[parseTestPayload],
|
|
303
|
+
);
|
|
304
|
+
|
|
305
|
+
useEffect(() => {
|
|
306
|
+
const parseLinking = (url: string | null) => {
|
|
307
|
+
if (!url) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const params = new URLSearchParams(url);
|
|
311
|
+
const payload = {
|
|
312
|
+
type: params.get('type'),
|
|
313
|
+
data: params.get('data'),
|
|
314
|
+
};
|
|
315
|
+
parseTestPayload(payload);
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
Linking.getInitialURL().then(parseLinking);
|
|
319
|
+
const linkingListener = Linking.addEventListener('url', ({ url }) =>
|
|
320
|
+
parseLinking(url),
|
|
321
|
+
);
|
|
322
|
+
return () => {
|
|
323
|
+
linkingListener.remove();
|
|
324
|
+
};
|
|
325
|
+
}, [parseTestPayload]);
|
|
326
|
+
|
|
297
327
|
return (
|
|
298
328
|
<PushyContext.Provider
|
|
299
329
|
value={{
|
|
@@ -311,7 +341,7 @@ export const PushyProvider = ({
|
|
|
311
341
|
progress,
|
|
312
342
|
downloadAndInstallApk,
|
|
313
343
|
getCurrentVersionInfo,
|
|
314
|
-
|
|
344
|
+
parseTestQrCode,
|
|
315
345
|
}}>
|
|
316
346
|
{children}
|
|
317
347
|
</PushyContext.Provider>
|