@coin-voyage/paykit
Version:
Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.
25 lines (24 loc) • 839 B
JavaScript
import { fetchTokenList, getChains, tokensByChainId } from "@coin-voyage/shared/currency";
import { useQuery } from "@tanstack/react-query";
import { useMemo } from "react";
const TOKEN_LIST_QUERY_KEY = ["token-list"];
const TOKEN_LIST_STALE_TIME = 1000 * 60 * 15;
export function useTokenList(chainId) {
const query = useQuery({
queryKey: TOKEN_LIST_QUERY_KEY,
queryFn: () => fetchTokenList(),
staleTime: TOKEN_LIST_STALE_TIME,
});
const chains = useMemo(() => getChains(query.data?.chains ?? []), [query.data]);
const tokens = useMemo(() => {
if (!query.data || !chainId)
return [];
return tokensByChainId(query.data.chains, chainId);
}, [query.data, chainId]);
return {
...query,
tokenList: query.data,
chains,
tokens,
};
}