From a9c360620fa63164ffb58dd34ad65d5f1e24c0f8 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Fri, 11 Apr 2025 14:48:18 +0800 Subject: [PATCH] add onpackageexpired --- package.json | 2 +- src/provider.tsx | 9 ++++++++- src/type.ts | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d97ec4e..3a2a1ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-update", - "version": "10.28.1", + "version": "10.29.0", "description": "react-native hot update", "main": "src/index", "scripts": { diff --git a/src/provider.tsx b/src/provider.tsx index 1cf8f34..b55aaa0 100644 --- a/src/provider.tsx +++ b/src/provider.tsx @@ -171,7 +171,7 @@ export const UpdateProvider = ({ return; } const rollout = info.config?.rollout?.[packageVersion]; - if (rollout) { + if (info.update && rollout) { if (!isInRollout(rollout)) { log(`not in ${rollout}% rollout, ignored`); return; @@ -182,6 +182,13 @@ export const UpdateProvider = ({ updateInfoRef.current = info; setUpdateInfo(info); if (info.expired) { + if ( + options.onPackageExpired && + (await options.onPackageExpired(info)) === false + ) { + log('onPackageExpired returned false, skipping'); + return; + } const { downloadUrl } = info; if (downloadUrl && Pushy.apkStatus === null) { if (options.updateStrategy === 'silentAndNow') { diff --git a/src/type.ts b/src/type.ts index bf6c787..52e4c5e 100644 --- a/src/type.ts +++ b/src/type.ts @@ -92,6 +92,7 @@ export interface ClientOptions { beforeCheckUpdate?: () => Promise; beforeDownloadUpdate?: (info: CheckResult) => Promise; afterDownloadUpdate?: (info: CheckResult) => Promise; + onPackageExpired?: (info: CheckResult) => Promise; } export interface UpdateTestPayload {