From 0019e9dd95f561905bc09b0fb4bfb2d654732df1 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Thu, 20 Mar 2025 18:45:51 +0800 Subject: [PATCH] feat: add afterDownloadUpdate --- package.json | 2 +- src/provider.tsx | 9 +++++++++ src/type.ts | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 25798da..06c908e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-update", - "version": "10.26.4", + "version": "10.27.0", "description": "react-native hot update", "main": "src/index", "scripts": { diff --git a/src/provider.tsx b/src/provider.tsx index 9f61807..e0f71f2 100644 --- a/src/provider.tsx +++ b/src/provider.tsx @@ -100,6 +100,14 @@ export const UpdateProvider = ({ return false; } stateListener.current && stateListener.current.remove(); + + if ( + options.afterDownloadUpdate && + (await options.afterDownloadUpdate(info)) === false + ) { + log('afterDownloadUpdate returned false, skipping'); + return false; + } if (options.updateStrategy === 'silentAndNow') { client.switchVersion(hash); return true; @@ -134,6 +142,7 @@ export const UpdateProvider = ({ [ client, options.updateStrategy, + options.afterDownloadUpdate, alertUpdate, alertError, throwErrorIfEnabled, diff --git a/src/type.ts b/src/type.ts index 2ed2768..f3c11d7 100644 --- a/src/type.ts +++ b/src/type.ts @@ -88,6 +88,7 @@ export interface ClientOptions { throwError?: boolean; beforeCheckUpdate?: () => Promise; beforeDownloadUpdate?: (info: CheckResult) => Promise; + afterDownloadUpdate?: (info: CheckResult) => Promise; } export interface UpdateTestPayload {