UNPKG

@coin-voyage/paykit

Version:

Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.

32 lines (31 loc) 1.51 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { fetchTokenList, getChains } from "@coin-voyage/shared/common"; import { ChainId } from "@coin-voyage/shared/types"; import { useQuery } from "@tanstack/react-query"; import { useMemo } from "react"; import usePayContext from "../components/contexts/pay"; import { SquircleIcon } from "../components/ui/Icon"; import { ROUTES } from "../types/routes"; const BTC_MIN_USD_AMOUNT = 15; const TOKEN_LIST_QUERY_KEY = ["token-list"]; export function usePayToAddressChainOptions({ fiatAmount }) { const { setRoute, paymentState } = usePayContext(); const { setPayToAddressChainId: setPayToAddressChain } = paymentState; const { data: tokenList, isLoading } = useQuery({ queryKey: TOKEN_LIST_QUERY_KEY, queryFn: fetchTokenList, staleTime: 1000 * 60 * 5, }); const chains = useMemo(() => getChains(tokenList?.chains ?? []), [tokenList]); const options = useMemo(() => chains.map((chain) => ({ id: chain.chainId.toString(), title: chain.name, icons: [_jsx(SquircleIcon, { icon: chain.logoURI, alt: chain.name }, chain.chainId)], onClick: () => { setPayToAddressChain(chain.chainId); setRoute(ROUTES.SELECT_PAY_TO_ADDRESS_TOKEN); }, disabled: chain.chainId === ChainId.BTC && typeof fiatAmount === "number" && fiatAmount < BTC_MIN_USD_AMOUNT, })), [chains, fiatAmount, setPayToAddressChain, setRoute]); return { options, isLoading }; }