Fix pay toggle era filtering (#3291)

This commit is contained in:
Jaco Greeff 2020-07-30 15:21:02 +02:00 committed by GitHub
parent b342e6ccbb
commit c680d25dd0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 15 deletions

View File

@ -13,12 +13,34 @@ interface Props {
selected: number;
}
function PayToggle ({ className = '', onChange, options, selected }: Props): React.ReactElement<Props> | null {
interface ToggleProps {
index: number;
isSelected: boolean;
onChange: (index: number) => void;
text: string;
}
function ToggleIndex ({ index, isSelected, onChange, text }: ToggleProps): React.ReactElement<ToggleProps> {
const _onClick = useCallback(
(index: number) => () => onChange(index),
[onChange]
() => onChange(index),
[index, onChange]
);
return (
<Button
icon={isSelected ? 'check' : 'circle'}
isBasic
isSelected={isSelected}
key={text}
label={text}
onClick={_onClick}
/>
);
}
const ToggleIndexMemo = React.memo(ToggleIndex);
function PayToggle ({ className = '', onChange, options, selected }: Props): React.ReactElement<Props> | null {
if (!options.length || !options[0].value) {
return null;
}
@ -26,13 +48,12 @@ function PayToggle ({ className = '', onChange, options, selected }: Props): Rea
return (
<div className={`ui--ToggleButton ${className}`}>
{options.map(({ text }, index): React.ReactNode => (
<Button
icon={selected === index ? 'check' : 'circle'}
isBasic
<ToggleIndexMemo
index={index}
isSelected={selected === index}
key={text}
label={text}
onClick={_onClick(index)}
key={index}
onChange={onChange}
text={text}
/>
))}
</div>

View File

@ -45,17 +45,17 @@ export default function useOwnEraRewards (maxEras?: number): OwnRewards {
setState({ isLoadingRewards: true, rewardCount: 0 });
}, [maxEras]);
useEffect((): void => {
allEras && maxEras && setFilteredEras(
allEras.slice(-1 * maxEras)
);
}, [allEras, maxEras]);
useEffect((): void => {
mountedRef.current && available && setState(
getRewards(available)
);
}, [available, mountedRef]);
useEffect((): void => {
allEras && maxEras && setFilteredEras(
allEras.reverse().filter((_, index) => index < maxEras).reverse()
);
}, [allEras, maxEras]);
return state;
}