Commit 3b2c21e2 authored by Moody Salem's avatar Moody Salem

Fix issue where tokens did not disappear after removed

parent 0e72f1c5
import { Token, WETH } from '@uniswap/sdk' import { ChainId, Token, WETH } from '@uniswap/sdk'
import { useEffect, useMemo } from 'react' import { useEffect, useMemo } from 'react'
import { useAddUserToken, useFetchTokenByAddress, useUserAddedTokens } from '../state/user/hooks' import { useAddUserToken, useFetchTokenByAddress, useUserAddedTokens } from '../state/user/hooks'
...@@ -8,7 +8,8 @@ import RINKEBY_TOKENS from '../constants/tokens/rinkeby' ...@@ -8,7 +8,8 @@ import RINKEBY_TOKENS from '../constants/tokens/rinkeby'
import KOVAN_TOKENS from '../constants/tokens/kovan' import KOVAN_TOKENS from '../constants/tokens/kovan'
import ROPSTEN_TOKENS from '../constants/tokens/ropsten' import ROPSTEN_TOKENS from '../constants/tokens/ropsten'
export const ALL_TOKENS = [ type AllTokens = { [chainId in ChainId]?: { [tokenAddress: string]: Token } }
export const ALL_TOKENS: Readonly<AllTokens> = [
// WETH on all chains // WETH on all chains
...Object.values(WETH), ...Object.values(WETH),
// chain-specific tokens // chain-specific tokens
...@@ -26,7 +27,7 @@ export const ALL_TOKENS = [ ...@@ -26,7 +27,7 @@ export const ALL_TOKENS = [
return token return token
}) })
// put into an object // put into an object
.reduce((tokenMap, token) => { .reduce<AllTokens>((tokenMap, token) => {
if (tokenMap?.[token.chainId]?.[token.address] !== undefined) throw Error('Duplicate tokens.') if (tokenMap?.[token.chainId]?.[token.address] !== undefined) throw Error('Duplicate tokens.')
return { return {
...tokenMap, ...tokenMap,
...@@ -42,13 +43,17 @@ export function useAllTokens(): { [address: string]: Token } { ...@@ -42,13 +43,17 @@ export function useAllTokens(): { [address: string]: Token } {
const userAddedTokens = useUserAddedTokens() const userAddedTokens = useUserAddedTokens()
return useMemo(() => { return useMemo(() => {
if (!chainId) return {}
return ( return (
userAddedTokens userAddedTokens
// reduce into all ALL_TOKENS filtered by the current chain // reduce into all ALL_TOKENS filtered by the current chain
.reduce<{ [address: string]: Token }>((tokenMap, token) => { .reduce<{ [address: string]: Token }>(
tokenMap[token.address] = token (tokenMap, token) => {
return tokenMap tokenMap[token.address] = token
}, ALL_TOKENS[chainId] ?? {}) return tokenMap
},
{ ...ALL_TOKENS[chainId] }
)
) )
}, [userAddedTokens, chainId]) }, [userAddedTokens, chainId])
} }
......
...@@ -107,6 +107,7 @@ export function useUserAddedTokens(): Token[] { ...@@ -107,6 +107,7 @@ export function useUserAddedTokens(): Token[] {
const serializedTokensMap = useSelector<AppState, AppState['user']['tokens']>(({ user: { tokens } }) => tokens) const serializedTokensMap = useSelector<AppState, AppState['user']['tokens']>(({ user: { tokens } }) => tokens)
return useMemo(() => { return useMemo(() => {
if (!chainId) return []
return Object.values(serializedTokensMap[chainId as ChainId] ?? {}).map(deserializeToken) return Object.values(serializedTokensMap[chainId as ChainId] ?? {}).map(deserializeToken)
}, [serializedTokensMap, chainId]) }, [serializedTokensMap, chainId])
} }
......
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