Don't spin when rewards have just been claimed (#3799)

* Don't spin when rewards have just been claimed

* No pre-emptive spinner stop
This commit is contained in:
Jaco Greeff 2020-10-01 11:29:50 +02:00 committed by GitHub
parent b1f9b04bb4
commit c4737e77ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -14,7 +14,7 @@ import useCall from './useCall';
import useIsMountedRef from './useIsMountedRef';
import { useOwnStashIds } from './useOwnStashes';
interface OwnRewards {
interface State {
allRewards?: Record<string, DeriveStakerReward[]> | 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<string, DeriveStakerReward[]> = {};
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<string, DeriveStakerReward[]> = {};
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<EraIndex[]>(api.derive.staking?.erasHistoric);
const [{ filteredEras, validatorEras }, setFiltered] = useState<Filtered>({ filteredEras: [], validatorEras: [] });
const [state, setState] = useState<OwnRewards>({ isLoadingRewards: true, rewardCount: 0 });
const [state, setState] = useState<State>({ 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<DeriveEraPoints[]>(!!validatorEras.length && !!filteredEras.length && api.derive.staking._erasPoints, [filteredEras, false]);
const erasRewards = useCall<DeriveEraRewards[]>(!!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 });