From 79b660eaa02e3dac9923064b36013965be560844 Mon Sep 17 00:00:00 2001 From: "Tom (plebeius.eth)" Date: Wed, 29 May 2024 16:50:00 +0200 Subject: [PATCH] fix(use-subplebbits-stats): hook would fetch the same stats if pending fetching --- src/hooks/use-subplebbits-stats.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/hooks/use-subplebbits-stats.ts b/src/hooks/use-subplebbits-stats.ts index a03acdba..075a9e8f 100644 --- a/src/hooks/use-subplebbits-stats.ts +++ b/src/hooks/use-subplebbits-stats.ts @@ -2,6 +2,8 @@ import { useEffect, useMemo } from 'react'; import { useAccount, useSubplebbits } from '@plebbit/plebbit-react-hooks'; import { create } from 'zustand'; +const pendingFetchCid: { [cid: string]: boolean } = {}; + const useSubplebbitsStats = (options: any) => { const { subplebbitAddresses, accountName } = options || {}; const account = useAccount({ accountName }); @@ -15,13 +17,15 @@ const useSubplebbitsStats = (options: any) => { } subplebbits.forEach((subplebbit) => { - if (subplebbit && subplebbit.statsCid && !subplebbitsStats[subplebbit.address]) { + if (subplebbit && subplebbit.statsCid && !subplebbitsStats[subplebbit.address] && !pendingFetchCid[subplebbit.statsCid]) { + pendingFetchCid[subplebbit.statsCid] = true; account.plebbit .fetchCid(subplebbit.statsCid) .then((fetchedStats: any) => { setSubplebbitStats(subplebbit.address, JSON.parse(fetchedStats)); }) .catch((error: any) => { + pendingFetchCid[subplebbit.statsCid] = false; console.error('Fetching subplebbit stats failed', { subplebbitAddress: subplebbit.address, error }); }); }