Commit 5a9b7a38 authored by Moody Salem's avatar Moody Salem

Fix bug with balance listeners not being reattached

parent 7bffea06
...@@ -33,18 +33,13 @@ export function useETHBalances(uncheckedAddresses?: (string | undefined)[]): { [ ...@@ -33,18 +33,13 @@ export function useETHBalances(uncheckedAddresses?: (string | undefined)[]): { [
[uncheckedAddresses] [uncheckedAddresses]
) )
const previousAddresses = usePrevious(addresses)
const unchanged = JSON.stringify(previousAddresses) === JSON.stringify(addresses)
// add the listeners on mount, remove them on dismount // add the listeners on mount, remove them on dismount
useEffect(() => { useEffect(() => {
if (unchanged) return
if (addresses.length === 0) return if (addresses.length === 0) return
dispatch(startListeningForBalance({ addresses })) dispatch(startListeningForBalance({ addresses }))
if (addresses.length > 0) { return () => dispatch(stopListeningForBalance({ addresses }))
return () => dispatch(stopListeningForBalance({ addresses })) }, [addresses, dispatch])
}
}, [addresses, unchanged, dispatch])
const rawBalanceMap = useSelector<AppState>(({ wallet: { balances } }) => balances) const rawBalanceMap = useSelector<AppState>(({ wallet: { balances } }) => balances)
...@@ -72,21 +67,16 @@ export function useTokenBalances( ...@@ -72,21 +67,16 @@ export function useTokenBalances(
const validTokens: Token[] = useMemo(() => tokens?.filter(t => isAddress(t?.address)) ?? [], [tokens]) const validTokens: Token[] = useMemo(() => tokens?.filter(t => isAddress(t?.address)) ?? [], [tokens])
const tokenAddresses: string[] = useMemo(() => validTokens.map(t => t.address).sort(), [validTokens]) const tokenAddresses: string[] = useMemo(() => validTokens.map(t => t.address).sort(), [validTokens])
const previousTokenAddresses = usePrevious(tokenAddresses)
const unchanged = JSON.stringify(tokenAddresses) === JSON.stringify(previousTokenAddresses)
// keep the listeners up to date // keep the listeners up to date
useEffect(() => { useEffect(() => {
if (unchanged) return
if (!address) return if (!address) return
if (tokenAddresses.length === 0) return if (tokenAddresses.length === 0) return
const combos: TokenBalanceListenerKey[] = tokenAddresses.map(tokenAddress => ({ address, tokenAddress })) const combos: TokenBalanceListenerKey[] = tokenAddresses.map(tokenAddress => ({ address, tokenAddress }))
dispatch(startListeningForTokenBalances(combos)) dispatch(startListeningForTokenBalances(combos))
if (combos.length > 0) { return () => dispatch(stopListeningForTokenBalances(combos))
return () => dispatch(stopListeningForTokenBalances(combos)) }, [address, tokenAddresses, dispatch])
}
}, [address, tokenAddresses, unchanged, dispatch])
const rawBalanceMap = useSelector<AppState>(({ wallet: { balances } }) => balances) const rawBalanceMap = useSelector<AppState>(({ wallet: { balances } }) => balances)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment