From c4737e77cec1dc35ab2cfaf2b4b18f3e822bdd4b Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Thu, 1 Oct 2020 11:29:50 +0200 Subject: [PATCH] Don't spin when rewards have just been claimed (#3799) * Don't spin when rewards have just been claimed * No pre-emptive spinner stop --- packages/react-hooks/src/useOwnEraRewards.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/react-hooks/src/useOwnEraRewards.ts b/packages/react-hooks/src/useOwnEraRewards.ts index a17997faaa..3a29f928f3 100644 --- a/packages/react-hooks/src/useOwnEraRewards.ts +++ b/packages/react-hooks/src/useOwnEraRewards.ts @@ -14,7 +14,7 @@ import useCall from './useCall'; import useIsMountedRef from './useIsMountedRef'; import { useOwnStashIds } from './useOwnStashes'; -interface OwnRewards { +interface State { allRewards?: Record | null; isLoadingRewards: boolean; rewardCount: number; @@ -30,7 +30,7 @@ interface Filtered { validatorEras: ValidatorWithEras[]; } -function getRewards ([[stashIds], available]: [[string[]], DeriveStakerReward[][]]): OwnRewards { +function getRewards ([[stashIds], available]: [[string[]], DeriveStakerReward[][]]): State { const allRewards: Record = {}; stashIds.forEach((stashId, index): void => { @@ -44,7 +44,7 @@ function getRewards ([[stashIds], available]: [[string[]], DeriveStakerReward[][ }; } -function getValRewards (validatorEras: ValidatorWithEras[], erasPoints: DeriveEraPoints[], erasRewards: DeriveEraRewards[]): OwnRewards { +function getValRewards (validatorEras: ValidatorWithEras[], erasPoints: DeriveEraPoints[], erasRewards: DeriveEraRewards[]): State { const allRewards: Record = {}; validatorEras.forEach(({ eras, stashId }): void => { @@ -87,13 +87,13 @@ function getValRewards (validatorEras: ValidatorWithEras[], erasPoints: DeriveEr }; } -export default function useOwnEraRewards (maxEras?: number, ownValidators?: StakerState[]): OwnRewards { +export default function useOwnEraRewards (maxEras?: number, ownValidators?: StakerState[]): State { const { api } = useApi(); const mountedRef = useIsMountedRef(); const stashIds = useOwnStashIds(); const allEras = useCall(api.derive.staking?.erasHistoric); const [{ filteredEras, validatorEras }, setFiltered] = useState({ filteredEras: [], validatorEras: [] }); - const [state, setState] = useState({ isLoadingRewards: true, rewardCount: 0 }); + const [state, setState] = useState({ isLoadingRewards: true, rewardCount: 0 }); const stakerRewards = useCall<[[string[]], DeriveStakerReward[][]]>(!ownValidators?.length && !!filteredEras.length && stashIds && api.derive.staking?.stakerRewardsMultiEras, [stashIds, filteredEras], { withParams: true }); const erasPoints = useCall(!!validatorEras.length && !!filteredEras.length && api.derive.staking._erasPoints, [filteredEras, false]); const erasRewards = useCall(!!validatorEras.length && !!filteredEras.length && api.derive.staking._erasRewards, [filteredEras, false]); @@ -117,6 +117,15 @@ export default function useOwnEraRewards (maxEras?: number, ownValidators?: Stak } } }); + + // When we have just claimed, we have filtered eras, but no validator eras - set accordingly + if (filteredEras.length && !validatorEras.length) { + setState({ + allRewards: {}, + isLoadingRewards: false, + rewardCount: 0 + }); + } } setFiltered({ filteredEras, validatorEras });