UNPKG

@coin-voyage/paykit

Version:

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

37 lines (36 loc) 1.51 kB
import { useQuery } from "@tanstack/react-query"; import usePayContext from "../components/contexts/pay"; export function useDepositAddressQuery({ enabled }) { const { paymentState } = usePayContext(); const { payOrder, payToAddressCurrency: currency, payToAddress } = paymentState; const orderId = payOrder?.id; const chainId = currency?.chain_id; const tokenAddress = currency?.address; const isEnabled = enabled && Boolean(orderId && chainId && currency); return useQuery({ queryKey: ["paymentDetails", orderId, chainId, tokenAddress], enabled: isEnabled, retry: false, refetchOnWindowFocus: false, queryFn: async () => { if (!orderId || !chainId || !currency) { throw new Error("Missing required deposit parameters"); } const response = await payToAddress({ chain_id: chainId, address: tokenAddress, }); if (!response) throw new Error("no-response"); return { ...currency, depositAddress: response.data.deposit_address, amount: response.data.src.total.ui_amount.toString(), ticker: response.data.src.ticker, expirationS: Math.floor(new Date(response.data.expires_at).getTime() / 1000), chainId, logoURI: currency.image_uri ?? "", // TODO: add fallback image }; }, }); }