Commit d1897448 authored by Moody Salem's avatar Moody Salem Committed by GitHub

fix: memoize the list stuff so the tokens are consistently clickable (#2724)

parent 6a90bf3b
...@@ -66,6 +66,13 @@ export default function CurrencySearchModal({ ...@@ -66,6 +66,13 @@ export default function CurrencySearchModal({
const [importList, setImportList] = useState<TokenList | undefined>() const [importList, setImportList] = useState<TokenList | undefined>()
const [listURL, setListUrl] = useState<string | undefined>() const [listURL, setListUrl] = useState<string | undefined>()
const showImportView = useCallback(() => setModalView(CurrencyModalView.importToken), [setModalView])
const showManageView = useCallback(() => setModalView(CurrencyModalView.manage), [setModalView])
const handleBackImport = useCallback(
() => setModalView(prevView && prevView !== CurrencyModalView.importToken ? prevView : CurrencyModalView.search),
[setModalView, prevView]
)
// change min height if not searching // change min height if not searching
const minHeight = modalView === CurrencyModalView.importToken || modalView === CurrencyModalView.importList ? 40 : 80 const minHeight = modalView === CurrencyModalView.importToken || modalView === CurrencyModalView.importList ? 40 : 80
let content = null let content = null
...@@ -81,9 +88,9 @@ export default function CurrencySearchModal({ ...@@ -81,9 +88,9 @@ export default function CurrencySearchModal({
showCommonBases={showCommonBases} showCommonBases={showCommonBases}
showCurrencyAmount={showCurrencyAmount} showCurrencyAmount={showCurrencyAmount}
disableNonToken={disableNonToken} disableNonToken={disableNonToken}
showImportView={() => setModalView(CurrencyModalView.importToken)} showImportView={showImportView}
setImportToken={setImportToken} setImportToken={setImportToken}
showManageView={() => setModalView(CurrencyModalView.manage)} showManageView={showManageView}
/> />
) )
break break
...@@ -94,9 +101,7 @@ export default function CurrencySearchModal({ ...@@ -94,9 +101,7 @@ export default function CurrencySearchModal({
tokens={[importToken]} tokens={[importToken]}
onDismiss={onDismiss} onDismiss={onDismiss}
list={importToken instanceof WrappedTokenInfo ? importToken.list : undefined} list={importToken instanceof WrappedTokenInfo ? importToken.list : undefined}
onBack={() => onBack={handleBackImport}
setModalView(prevView && prevView !== CurrencyModalView.importToken ? prevView : CurrencyModalView.search)
}
handleCurrencySelect={handleCurrencySelect} handleCurrencySelect={handleCurrencySelect}
/> />
) )
......
...@@ -99,20 +99,24 @@ function useCombinedTokenMapFromUrls(urls: string[] | undefined): TokenAddressMa ...@@ -99,20 +99,24 @@ function useCombinedTokenMapFromUrls(urls: string[] | undefined): TokenAddressMa
// filter out unsupported lists // filter out unsupported lists
export function useActiveListUrls(): string[] | undefined { export function useActiveListUrls(): string[] | undefined {
return useAppSelector((state) => state.lists.activeListUrls)?.filter((url) => !UNSUPPORTED_LIST_URLS.includes(url)) const activeListUrls = useAppSelector((state) => state.lists.activeListUrls)
return useMemo(() => activeListUrls?.filter((url) => !UNSUPPORTED_LIST_URLS.includes(url)), [activeListUrls])
} }
export function useInactiveListUrls(): string[] { export function useInactiveListUrls(): string[] {
const lists = useAllLists() const lists = useAllLists()
const allActiveListUrls = useActiveListUrls() const allActiveListUrls = useActiveListUrls()
return Object.keys(lists).filter((url) => !allActiveListUrls?.includes(url) && !UNSUPPORTED_LIST_URLS.includes(url)) return useMemo(
() => Object.keys(lists).filter((url) => !allActiveListUrls?.includes(url) && !UNSUPPORTED_LIST_URLS.includes(url)),
[lists, allActiveListUrls]
)
} }
// get all the tokens from active lists, combine with local default tokens // get all the tokens from active lists, combine with local default tokens
export function useCombinedActiveList(): TokenAddressMap { export function useCombinedActiveList(): TokenAddressMap {
const activeListUrls = useActiveListUrls() const activeListUrls = useActiveListUrls()
const activeTokens = useCombinedTokenMapFromUrls(activeListUrls) const activeTokens = useCombinedTokenMapFromUrls(activeListUrls)
return combineMaps(activeTokens, TRANSFORMED_DEFAULT_TOKEN_LIST) return useMemo(() => combineMaps(activeTokens, TRANSFORMED_DEFAULT_TOKEN_LIST), [activeTokens])
} }
// list of tokens not supported on interface for various reasons, used to show warnings and prevent swaps and adds // list of tokens not supported on interface for various reasons, used to show warnings and prevent swaps and adds
......
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