@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
JavaScript
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
};
},
});
}