From cbaec8fdde11d1e5cc2c2c0dcb243557d20b7499 Mon Sep 17 00:00:00 2001 From: Jaco Date: Tue, 31 Jan 2023 20:23:19 +0200 Subject: [PATCH] Remove check value for useCache{Map, Value} (#8906) --- .../src/Validators/useExposure.ts | 2 +- .../src/Validators/useHeartbeat.ts | 2 +- .../page-staking2/src/Validators/usePoints.ts | 2 +- packages/page-staking2/src/types.ts | 1 - packages/page-staking2/src/useCacheMap.ts | 18 +++------ packages/page-staking2/src/useCacheValue.ts | 38 ++++++------------- .../page-staking2/src/useElectedValidators.ts | 2 +- .../page-staking2/src/useValidatorsActive.ts | 2 +- .../page-staking2/src/useValidatorsAll.ts | 2 +- .../page-staking2/src/useValidatorsWaiting.ts | 2 +- 10 files changed, 24 insertions(+), 47 deletions(-) diff --git a/packages/page-staking2/src/Validators/useExposure.ts b/packages/page-staking2/src/Validators/useExposure.ts index c5dfd5d022..a673c6ffbc 100644 --- a/packages/page-staking2/src/Validators/useExposure.ts +++ b/packages/page-staking2/src/Validators/useExposure.ts @@ -60,7 +60,7 @@ function useExposureImpl ({ stashId }: Validator, { activeEra }: SessionInfo): U [clipExposure, fullExposure] ); - return useCacheMap('useExposure', stashId, activeEra, result); + return useCacheMap('useExposure', stashId, result); } export default createNamedHook('useExposure', useExposureImpl); diff --git a/packages/page-staking2/src/Validators/useHeartbeat.ts b/packages/page-staking2/src/Validators/useHeartbeat.ts index 06efa4e83b..c74b3341a2 100644 --- a/packages/page-staking2/src/Validators/useHeartbeat.ts +++ b/packages/page-staking2/src/Validators/useHeartbeat.ts @@ -50,7 +50,7 @@ function useHeartbeatImpl ({ stashId, stashIndex }: Validator, { currentSession [authoredBlocks, receivedHeartbeats] ); - return useCacheMap('useHeartbeat', stashId, currentSession, result) || EMPTY; + return useCacheMap('useHeartbeat', stashId, result) || EMPTY; } export default createNamedHook('useHeartbeat', useHeartbeatImpl); diff --git a/packages/page-staking2/src/Validators/usePoints.ts b/packages/page-staking2/src/Validators/usePoints.ts index 34d48bcd1d..1cc7cd025b 100644 --- a/packages/page-staking2/src/Validators/usePoints.ts +++ b/packages/page-staking2/src/Validators/usePoints.ts @@ -33,7 +33,7 @@ function usePointsImpl ({ activeEra }: SessionInfo): UsePoints | undefined { const points = useCall(queryParams && api.query.staking.erasRewardPoints, queryParams, OPT_POINTS); - return useCacheValue('usePoints', activeEra, points); + return useCacheValue('usePoints', points); } export default createNamedHook('usePoints', usePointsImpl); diff --git a/packages/page-staking2/src/types.ts b/packages/page-staking2/src/types.ts index 2f39d32be5..3a3e60e560 100644 --- a/packages/page-staking2/src/types.ts +++ b/packages/page-staking2/src/types.ts @@ -4,7 +4,6 @@ import type { BN } from '@polkadot/util'; export interface CacheValue { - check: BN; value?: T; } diff --git a/packages/page-staking2/src/useCacheMap.ts b/packages/page-staking2/src/useCacheMap.ts index 1629543283..08f595849d 100644 --- a/packages/page-staking2/src/useCacheMap.ts +++ b/packages/page-staking2/src/useCacheMap.ts @@ -1,7 +1,6 @@ // Copyright 2017-2023 @polkadot/app-staking authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { BN } from '@polkadot/util'; import type { CacheValue } from './types'; import { useEffect } from 'react'; @@ -15,20 +14,13 @@ const cache: Record>> = { useHeartbeat: {} }; -export function useCacheMap (section: CacheSection, id: string, check?: BN | null, value?: T): T | undefined { - // ensure that the specific id has an entry - useEffect((): void => { - if (check && (!cache[section][id] || !cache[section][id].check.eq(check))) { - cache[section][id] = { check }; - } - }, [check, id, section]); - +export function useCacheMap (section: CacheSection, id: string, value?: T): T | undefined { // update the cached result on value changes useEffect((): void => { - if (value && check && cache[section][id] && cache[section][id].check.eq(check)) { - cache[section][id] = { check, value }; + if (value) { + cache[section][id] = { value }; } - }, [check, id, section, value]); + }, [id, section, value]); - return getResultValue(cache[section][id] as CacheValue, check, value); + return getResultValue(cache[section][id] as CacheValue, value); } diff --git a/packages/page-staking2/src/useCacheValue.ts b/packages/page-staking2/src/useCacheValue.ts index 9ee8954f3b..1656f5ca28 100644 --- a/packages/page-staking2/src/useCacheValue.ts +++ b/packages/page-staking2/src/useCacheValue.ts @@ -5,41 +5,27 @@ import type { CacheValue } from './types'; import { useEffect } from 'react'; -import { BN } from '@polkadot/util'; - type CacheSection = `use${'ElectedValidators' | 'Points' | 'ValidatorsActive' | 'ValidatorsAll' | 'ValidatorsWaiting'}`; const cache: Record> = { - useElectedValidators: { check: new BN(-1) }, - usePoints: { check: new BN(-1) }, - useValidatorsActive: { check: new BN(-1) }, - useValidatorsAll: { check: new BN(-1) }, - useValidatorsWaiting: { check: new BN(-1) } + useElectedValidators: {}, + usePoints: {}, + useValidatorsActive: {}, + useValidatorsAll: {}, + useValidatorsWaiting: {} }; -export function getResultValue (cached?: CacheValue, check?: BN | null, value?: T): T | undefined { - return value || ( - check && - cached && - cached.check.eq(check) && - cached.value - ) || undefined; +export function getResultValue (cached?: CacheValue, value?: T): T | undefined { + return value || cached?.value; } -export function useCacheValue (section: CacheSection, check?: BN | null, value?: T): T | undefined { - // ensure that the specific id has an entry - useEffect((): void => { - if (check && !cache[section].check.eq(check)) { - cache[section] = { check }; - } - }, [check, section]); - +export function useCacheValue (section: CacheSection, value?: T): T | undefined { // update the cached result on value changes useEffect((): void => { - if (value && check && cache[section].check.eq(check)) { - cache[section] = { check, value }; + if (value) { + cache[section] = { value }; } - }, [check, section, value]); + }, [section, value]); - return getResultValue(cache[section] as CacheValue, check, value); + return getResultValue(cache[section] as CacheValue, value); } diff --git a/packages/page-staking2/src/useElectedValidators.ts b/packages/page-staking2/src/useElectedValidators.ts index 3fcbb15a15..bb69699f10 100644 --- a/packages/page-staking2/src/useElectedValidators.ts +++ b/packages/page-staking2/src/useElectedValidators.ts @@ -28,7 +28,7 @@ function useElectedValidatorsImpl ({ currentEra }: SessionInfo): string[] | unde const elected = useMapKeys(electedParams && api.query.staking.erasStakers, electedParams, OPT_ELECTED); - return useCacheValue('useElectedValidators', currentEra, elected); + return useCacheValue('useElectedValidators', elected); } export default createNamedHook('useElectedValidators', useElectedValidatorsImpl); diff --git a/packages/page-staking2/src/useValidatorsActive.ts b/packages/page-staking2/src/useValidatorsActive.ts index d4d095f9b1..b0daf98fa4 100644 --- a/packages/page-staking2/src/useValidatorsActive.ts +++ b/packages/page-staking2/src/useValidatorsActive.ts @@ -30,7 +30,7 @@ function useValidatorsActiveImpl (favorites: string[], sessionInfo: SessionInfo) const sessionValidators = useCall(api.query.session.validators, undefined, OPT_VALIDATORS); const tagged = useTaggedValidators(favorites, sessionInfo, sessionValidators); - return useCacheValue('useValidatorsActive', sessionInfo.activeEra, tagged); + return useCacheValue('useValidatorsActive', tagged); } export default createNamedHook('useValidatorsActive', useValidatorsActiveImpl); diff --git a/packages/page-staking2/src/useValidatorsAll.ts b/packages/page-staking2/src/useValidatorsAll.ts index 45348ce700..9844d69d3a 100644 --- a/packages/page-staking2/src/useValidatorsAll.ts +++ b/packages/page-staking2/src/useValidatorsAll.ts @@ -65,7 +65,7 @@ function useValidatorsAllImpl (favorites: string[], sessionInfo: SessionInfo): V const tagged = useTaggedValidators(favorites, sessionInfo, validatorsIndexed); - return useCacheValue('useValidatorsAll', sessionInfo.currentEra, tagged); + return useCacheValue('useValidatorsAll', tagged); } export default createNamedHook('useValidatorsAll', useValidatorsAllImpl); diff --git a/packages/page-staking2/src/useValidatorsWaiting.ts b/packages/page-staking2/src/useValidatorsWaiting.ts index 3fee0b9dc2..79193bdfd0 100644 --- a/packages/page-staking2/src/useValidatorsWaiting.ts +++ b/packages/page-staking2/src/useValidatorsWaiting.ts @@ -26,7 +26,7 @@ function useValidatorsWaitingImpl (favorites: string[], sessionInfo: SessionInfo [activeValidators, allValidators] ); - return useCacheValue('useValidatorsWaiting', sessionInfo.activeEra, tagged); + return useCacheValue('useValidatorsWaiting', tagged); } export default createNamedHook('useValidatorsWaiting', useValidatorsWaitingImpl);