react-native-update 10.10.2 → 10.11.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-update",
3
- "version": "10.10.2",
3
+ "version": "10.11.0",
4
4
  "description": "react-native hot update",
5
5
  "main": "src/index",
6
6
  "scripts": {
package/src/client.ts CHANGED
@@ -17,8 +17,10 @@ import {
17
17
  const defaultServer = {
18
18
  main: 'https://update.react-native.cn/api',
19
19
  backups: ['https://update.reactnative.cn/api'],
20
- queryUrl:
20
+ queryUrls: [
21
+ 'https://gitee.com/sunnylqm/react-native-pushy/raw/master/endpoints.json',
21
22
  'https://cdn.jsdelivr.net/gh/reactnativecn/react-native-pushy@master/endpoints.json',
23
+ ],
22
24
  };
23
25
 
24
26
  const empty = {};
@@ -233,9 +235,11 @@ export class Pushy {
233
235
  if (!server) {
234
236
  return [];
235
237
  }
236
- if (server.queryUrl) {
238
+ if (server.queryUrls) {
237
239
  try {
238
- const resp = await fetch(server.queryUrl);
240
+ const resp = await Promise.race(
241
+ server.queryUrls.map(queryUrl => fetch(queryUrl)),
242
+ );
239
243
  const remoteEndpoints = await resp.json();
240
244
  log('fetch endpoints:', remoteEndpoints);
241
245
  if (Array.isArray(remoteEndpoints)) {
@@ -244,7 +248,7 @@ export class Pushy {
244
248
  );
245
249
  }
246
250
  } catch (e: any) {
247
- log('failed to fetch endpoints from: ', server.queryUrl);
251
+ log('failed to fetch endpoints from: ', server.queryUrls);
248
252
  }
249
253
  }
250
254
  return server.backups;
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
- parseTestPayload: () => Promise.resolve(false),
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
- parseTestPayload: (code: string) => Promise<boolean>;
35
+ parseTestQrCode: (code: string) => boolean;
36
36
  currentHash: string;
37
37
  packageVersion: string;
38
38
  client?: Pushy;
package/src/provider.tsx CHANGED
@@ -263,13 +263,7 @@ export const PushyProvider = ({
263
263
  }, [checkUpdate, options, dismissError, markSuccess]);
264
264
 
265
265
  const parseTestPayload = useCallback(
266
- async (code: string) => {
267
- let payload: PushyTestPayload;
268
- try {
269
- payload = JSON.parse(code);
270
- } catch {
271
- return false;
272
- }
266
+ (payload: PushyTestPayload) => {
273
267
  if (payload && payload.type && payload.type.startsWith('__rnPushy')) {
274
268
  const logger = options.logger || (() => {});
275
269
  options.logger = ({ type, data }) => {
@@ -294,6 +288,41 @@ export const PushyProvider = ({
294
288
  [checkUpdate, options],
295
289
  );
296
290
 
291
+ const parseTestQrCode = useCallback(
292
+ (code: string) => {
293
+ let payload: PushyTestPayload;
294
+ try {
295
+ payload = JSON.parse(code);
296
+ return parseTestPayload(payload);
297
+ } catch {
298
+ return false;
299
+ }
300
+ },
301
+ [parseTestPayload],
302
+ );
303
+
304
+ useEffect(() => {
305
+ const parseLinking = (url: string | null) => {
306
+ if (!url) {
307
+ return;
308
+ }
309
+ const params = new URLSearchParams(url);
310
+ const payload = {
311
+ type: params.get('type'),
312
+ data: params.get('data'),
313
+ };
314
+ parseTestPayload(payload);
315
+ };
316
+
317
+ Linking.getInitialURL().then(parseLinking);
318
+ const linkingListener = Linking.addEventListener('url', ({ url }) =>
319
+ parseLinking(url),
320
+ );
321
+ return () => {
322
+ linkingListener.remove();
323
+ };
324
+ }, [parseTestPayload]);
325
+
297
326
  return (
298
327
  <PushyContext.Provider
299
328
  value={{
@@ -311,7 +340,7 @@ export const PushyProvider = ({
311
340
  progress,
312
341
  downloadAndInstallApk,
313
342
  getCurrentVersionInfo,
314
- parseTestPayload,
343
+ parseTestQrCode,
315
344
  }}>
316
345
  {children}
317
346
  </PushyContext.Provider>
package/src/type.ts CHANGED
@@ -62,7 +62,7 @@ export type UpdateEventsLogger = ({
62
62
  export interface PushyServerConfig {
63
63
  main: string;
64
64
  backups?: string[];
65
- queryUrl?: string;
65
+ queryUrls?: string[];
66
66
  }
67
67
 
68
68
  export interface PushyOptions {
@@ -83,6 +83,6 @@ export interface PushyOptions {
83
83
  }
84
84
 
85
85
  export interface PushyTestPayload {
86
- type: '__rnPushyVersionHash';
86
+ type: '__rnPushyVersionHash' | string | null;
87
87
  data: any;
88
88
  }