From 05e5c5a1a71aeaf6fe7cef7d656c8aef9cbf8e97 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Thu, 25 Jan 2024 22:07:01 +0800 Subject: [PATCH] v10.0.0-beta.2 --- Example/testHotUpdate/ios/Podfile.lock | 26 +++++++++---- Example/testHotUpdate/package.json | 2 +- .../testHotUpdate/src/{index.js => index.tsx} | 14 +++---- Example/testHotUpdate/yarn.lock | 8 ++-- package.json | 2 +- src/client.tsx | 7 ++-- src/client.web.js | 13 +++++++ src/index.web.js | 17 --------- src/provider.tsx | 10 ++--- src/provider.web.js | 2 + src/type.ts | 38 +++++++------------ 11 files changed, 67 insertions(+), 72 deletions(-) rename Example/testHotUpdate/src/{index.js => index.tsx} (92%) create mode 100644 src/client.web.js delete mode 100644 src/index.web.js create mode 100644 src/provider.web.js diff --git a/Example/testHotUpdate/ios/Podfile.lock b/Example/testHotUpdate/ios/Podfile.lock index a01415e..2dbf111 100644 --- a/Example/testHotUpdate/ios/Podfile.lock +++ b/Example/testHotUpdate/ios/Podfile.lock @@ -284,17 +284,19 @@ PODS: - React-jsinspector (0.69.8) - React-logger (0.69.8): - glog - - react-native-update (9.0.0): + - react-native-safe-area-context (4.8.2): + - React-Core + - react-native-update (10.0.0-beta.1): - React - React-Core - - react-native-update/HDiffPatch (= 9.0.0) - - react-native-update/RCTPushy (= 9.0.0) + - react-native-update/HDiffPatch (= 10.0.0-beta.1) + - react-native-update/RCTPushy (= 10.0.0-beta.1) - SSZipArchive - - react-native-update/HDiffPatch (9.0.0): + - react-native-update/HDiffPatch (10.0.0-beta.1): - React - React-Core - SSZipArchive - - react-native-update/RCTPushy (9.0.0): + - react-native-update/RCTPushy (10.0.0-beta.1): - React - React-Core - SSZipArchive @@ -364,6 +366,8 @@ PODS: - React-jsi (= 0.69.8) - React-logger (= 0.69.8) - React-perflogger (= 0.69.8) + - RNVectorIcons (10.0.3): + - React-Core - SocketRocket (0.6.0) - SSZipArchive (2.4.3) - Yoga (1.14.0) @@ -414,6 +418,7 @@ DEPENDENCIES: - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-update (from `../node_modules/react-native-update`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) @@ -427,6 +432,7 @@ DEPENDENCIES: - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - RNVectorIcons (from `../node_modules/react-native-vector-icons`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: @@ -487,6 +493,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/jsinspector" React-logger: :path: "../node_modules/react-native/ReactCommon/logger" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" react-native-update: :path: "../node_modules/react-native-update" React-perflogger: @@ -513,6 +521,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" ReactCommon: :path: "../node_modules/react-native/ReactCommon" + RNVectorIcons: + :path: "../node_modules/react-native-vector-icons" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" @@ -549,7 +559,8 @@ SPEC CHECKSUMS: React-jsiexecutor: 2cf8ea3753afb81dfcc386613dbbb0b5d155fb34 React-jsinspector: 0eda09e9cf22bbb5dbb1d23143b03a31acf37d67 React-logger: 5997ab008583826c10ffe4e1ff990363e975639d - react-native-update: 2b5ef06bfeaa668614c8deb7ec4d20dcf56f9278 + react-native-safe-area-context: 0ee144a6170530ccc37a0fd9388e28d06f516a89 + react-native-update: 767449a2cf592387b9aecb97980ec0536d72c890 React-perflogger: ad1416a715d86b32f456e5d0aed99c3b52f1de37 React-RCTActionSheet: cbf7c6a953982562418ee72a1084ff7b9447b558 React-RCTAnimation: 33df3e25824dd7313edec28dded2745542f9352b @@ -562,6 +573,7 @@ SPEC CHECKSUMS: React-RCTVibration: 5462287ee85304ba1a00474665ab292e63a41663 React-runtimeexecutor: 9df680f18497367bcf5c15b6b6406c0f2dfa2b6a ReactCommon: c10f046f3ef8561e7c8e7e9b9dae2ecc9ffc48ef + RNVectorIcons: bc7ee28cadf39c77a49232a14738dfce690f66cd SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef Yoga: d3820731e0ca3a4933f061ad29defaf7726e3251 @@ -569,4 +581,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 618d17df10f335f1d113daac849a7997894646b2 -COCOAPODS: 1.11.3 +COCOAPODS: 1.14.3 diff --git a/Example/testHotUpdate/package.json b/Example/testHotUpdate/package.json index 64f0b34..0e5b493 100644 --- a/Example/testHotUpdate/package.json +++ b/Example/testHotUpdate/package.json @@ -18,7 +18,7 @@ "react-native": "0.69.8", "react-native-paper": "^5.12.1", "react-native-safe-area-context": "^4.8.2", - "react-native-update": "10.0.0-beta.1", + "react-native-update": "^10.0.0-beta.2", "react-native-vector-icons": "^10.0.3" }, "devDependencies": { diff --git a/Example/testHotUpdate/src/index.js b/Example/testHotUpdate/src/index.tsx similarity index 92% rename from Example/testHotUpdate/src/index.js rename to Example/testHotUpdate/src/index.tsx index e61152b..79f93c3 100644 --- a/Example/testHotUpdate/src/index.js +++ b/Example/testHotUpdate/src/index.tsx @@ -33,10 +33,7 @@ function App() { const [showUpdateBanner, setShowUpdateBanner] = useState(false); const [showUpdateSnackbar, setShowUpdateSnackbar] = useState(false); const snackbarVisible = - showUpdateSnackbar && - updateInfo && - updateInfo.updateAvailable && - !useDefaultAlert; + showUpdateSnackbar && updateInfo?.update && !useDefaultAlert; return ( 欢迎使用Pushy热更新服务 @@ -48,8 +45,8 @@ function App() { value={useDefaultAlert} onValueChange={v => { setUseDefaultAlert(v); - client.setOptions({ - showAlert: v, + client?.setOptions({ + useAlert: v, }); }} /> @@ -80,7 +77,7 @@ function App() { setShowTestConsole(true); }}> - react-native-update版本:{client.version} + react-native-update版本:{client?.version} @@ -98,7 +95,7 @@ function App() { setShowUpdateBanner(true); }, }}> - 有新版本({updateInfo.version})可用,是否更新? + 有新版本({updateInfo.name})可用,是否更新? )} void, ) => { assertRelease(); - if (!('update' in info)) { - return; - } const { hash, diffUrl, pdiffUrl, updateUrl, name, description, metaInfo } = info; + if (!info.update || !hash) { + return; + } if (rolledBackVersion === hash) { log(`rolledback hash ${rolledBackVersion}, ignored`); return; diff --git a/src/client.web.js b/src/client.web.js new file mode 100644 index 0000000..1f123e3 --- /dev/null +++ b/src/client.web.js @@ -0,0 +1,13 @@ +const noop = () => {}; +export class Pushy { + constructor() { + console.warn( + 'react-native-update is not supported and will do nothing on web.', + ); + return new Proxy(this, { + get() { + return noop; + }, + }); + } +} diff --git a/src/index.web.js b/src/index.web.js deleted file mode 100644 index f411dea..0000000 --- a/src/index.web.js +++ /dev/null @@ -1,17 +0,0 @@ -import { Fragment } from 'react'; - -const noop = () => {}; -export class Pushy { - constructor() { - console.warn('react-native-update is not supported and will do nothing on web.'); - return new Proxy(this, { - get() { - return noop; - }, - }); - } -} - -export { PushyContext, usePushy } from './context'; - -export const PushyProvider = Fragment; diff --git a/src/provider.tsx b/src/provider.tsx index c5bbcda..9f3f5d4 100644 --- a/src/provider.tsx +++ b/src/provider.tsx @@ -45,19 +45,19 @@ export const PushyProvider = ({ ); const switchVersion = useCallback(() => { - if (updateInfo && 'hash' in updateInfo) { + if (updateInfo && updateInfo.hash) { client.switchVersion(updateInfo.hash); } }, [client, updateInfo]); const switchVersionLater = useCallback(() => { - if (updateInfo && 'hash' in updateInfo) { + if (updateInfo && updateInfo.hash) { client.switchVersionLater(updateInfo.hash); } }, [client, updateInfo]); const downloadUpdate = useCallback(async () => { - if (!updateInfo || !('update' in updateInfo)) { + if (!updateInfo || !updateInfo.update) { return; } try { @@ -98,7 +98,7 @@ export const PushyProvider = ({ return; } setUpdateInfo(info); - if ('expired' in info) { + if (info.expired) { const { downloadUrl } = info; showAlert('提示', '您的应用版本已更新,点击更新下载安装新版本', [ { @@ -114,7 +114,7 @@ export const PushyProvider = ({ }, }, ]); - } else if ('update' in info) { + } else if (info.update) { showAlert( '提示', '检查到新的版本' + info.name + ',是否下载?\n' + info.description, diff --git a/src/provider.web.js b/src/provider.web.js new file mode 100644 index 0000000..2177c19 --- /dev/null +++ b/src/provider.web.js @@ -0,0 +1,2 @@ +import { Fragment } from 'react'; +export const PushyProvider = Fragment; diff --git a/src/type.ts b/src/type.ts index 71bb081..3fae544 100644 --- a/src/type.ts +++ b/src/type.ts @@ -1,31 +1,19 @@ -export interface ExpiredResult { - expired: true; - downloadUrl: string; -} - -export interface UpTodateResult { - upToDate: true; - paused?: 'app' | 'package'; -} - -export interface UpdateAvailableResult { - upToDate: false; - update: true; - name: string; // version name - hash: string; - description: string; - metaInfo: string; - pdiffUrl: string; +export interface CheckResult { + upToDate?: true; + expired?: true; + downloadUrl?: string; + update?: true; + name?: string; // version name + hash?: string; + description?: string; + metaInfo?: string; + pdiffUrl?: string; diffUrl?: string; updateUrl?: string; + paused?: 'app' | 'package'; + message?: string; } -export type CheckResult = - | ExpiredResult - | UpTodateResult - | UpdateAvailableResult - | {}; - export interface ProgressData { hash: string; received: number; @@ -59,6 +47,7 @@ export interface EventData { newVersion?: string; [key: string]: any; } + export type UpdateEventsLogger = ({ type, data, @@ -72,6 +61,7 @@ export interface PushyServerConfig { backups?: string[]; queryUrl?: string; } + export interface PushyOptions { appKey: string; server?: PushyServerConfig;