From 68d8a6925c70a65c23526e2478ae7e06ae8478d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:09:50 -0500 Subject: [PATCH] feat: memo fetch --- src/hooks/useAdExempt.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/hooks/useAdExempt.ts b/src/hooks/useAdExempt.ts index d7db86bcf..e404697a3 100644 --- a/src/hooks/useAdExempt.ts +++ b/src/hooks/useAdExempt.ts @@ -1,4 +1,4 @@ -import { use } from 'react'; +import { use, useMemo } from 'react'; import { useApp } from '../stores/app'; let cache: boolean | undefined = undefined; @@ -10,13 +10,16 @@ export function useAdExempt() { if (!patreon) return false; - const json = use( - fetch(`/api/patreon/membership/${patreon.token}`, { - cache: 'force-cache', - }).then((response) => response.json()), + const promise = useMemo( + () => + fetch(`/api/patreon/membership/${patreon.token}`, { + cache: 'force-cache', + }).then((response) => response.json()), + [patreon.token], ); + const data = use(promise); - const exempt = typeof json === 'boolean' && json; + const exempt = typeof data === 'boolean' && data; cache = exempt; return exempt;