From 755d38f831fd6bd0773f045461728ce79ce90c4b Mon Sep 17 00:00:00 2001 From: David Condrey Date: Thu, 17 Apr 2025 06:31:16 -0700 Subject: [PATCH 1/2] Update use-swr.ts Call all revalidators for a key to respect individual isPaused() states (#2333) --- src/index/use-swr.ts | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/index/use-swr.ts b/src/index/use-swr.ts index 21c42a9c2..2fab553ae 100644 --- a/src/index/use-swr.ts +++ b/src/index/use-swr.ts @@ -89,6 +89,25 @@ type DefinitelyTruthy = false extends T ? never : T +function triggerRevalidators( + key: string, + revalidators: ((type: RevalidateEvent, opts?: { retryCount?: number; dedupe?: boolean }) => void)[] | undefined, + type: RevalidateEvent, + opts?: { retryCount?: number; dedupe?: boolean } +) { + if (!Array.isArray(revalidators)) return + + for (const revalidate of revalidators) { + try { + revalidate(type, opts) + } catch (err) { + if (process.env.NODE_ENV !== 'production') { + console.error(`SWR: Error triggering revalidator for key "${key}"`, err) + } + } + } +} + export const useSWRHandler = ( _key: Key, fetcher: Fetcher | null, @@ -521,12 +540,12 @@ export const useSWRHandler = ( currentConfig, _opts => { const revalidators = EVENT_REVALIDATORS[key] - if (revalidators && revalidators[0]) { - revalidators[0]( - revalidateEvents.ERROR_REVALIDATE_EVENT, - _opts - ) - } + triggerRevalidators( + key, + EVENT_REVALIDATORS[key], + revalidateEvents.ERROR_REVALIDATE_EVENT, + _opts + ) }, { retryCount: (opts.retryCount || 0) + 1, From 4f23ae0709f793965828fbe6cfd03bb1bad5b979 Mon Sep 17 00:00:00 2001 From: David Condrey Date: Thu, 17 Apr 2025 06:51:38 -0700 Subject: [PATCH 2/2] Update use-swr.ts Use the revalidators variable --- src/index/use-swr.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index/use-swr.ts b/src/index/use-swr.ts index 2fab553ae..68301c604 100644 --- a/src/index/use-swr.ts +++ b/src/index/use-swr.ts @@ -542,7 +542,7 @@ export const useSWRHandler = ( const revalidators = EVENT_REVALIDATORS[key] triggerRevalidators( key, - EVENT_REVALIDATORS[key], + revalidators, revalidateEvents.ERROR_REVALIDATE_EVENT, _opts )