UNPKG

@daimo/pay

Version:

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

65 lines (62 loc) 2.25 kB
import { ExternalPaymentOptions } from '@daimo/pay-common'; import { useState, useEffect } from 'react'; const DEFAULT_EXTERNAL_PAYMENT_OPTIONS = Object.values( ExternalPaymentOptions ).filter( (opt) => ( // Solana and ExternalChains are handled in the SelectMethod component. opt !== ExternalPaymentOptions.ExternalChains && opt !== ExternalPaymentOptions.Daimo ) ); function useExternalPaymentOptions({ trpc, filterIds, platform, usdRequired, mode }) { const [options, setOptions] = useState(/* @__PURE__ */ new Map()); const [loading, setLoading] = useState(false); useEffect(() => { const refreshExternalPaymentOptions = async (usd, mode2) => { if (!platform) return; setLoading(true); try { const newOptions = await trpc.getExternalPaymentOptions.query({ platform, mode: mode2, usdRequired: usd }); const enabledExtPaymentOptions = filterIds || DEFAULT_EXTERNAL_PAYMENT_OPTIONS; const hasAllPaymentApps = enabledExtPaymentOptions.includes( ExternalPaymentOptions.AllPaymentApps ); const hasAllExchanges = enabledExtPaymentOptions.includes( ExternalPaymentOptions.AllExchanges ); const filteredOptions = newOptions.filter( (option) => enabledExtPaymentOptions.includes(option.id) || hasAllPaymentApps && option.optionType === "zkp2p" || hasAllExchanges && option.optionType === "exchange" ); const optionsByType = /* @__PURE__ */ new Map(); filteredOptions.forEach((option) => { const { optionType } = option; if (!optionsByType.has(optionType)) { optionsByType.set(optionType, []); } optionsByType.get(optionType).push(option); }); setOptions(optionsByType); } catch (error) { console.error(error); } finally { setLoading(false); } }; if (usdRequired != null && mode != null) { refreshExternalPaymentOptions(usdRequired, mode); } }, [usdRequired, JSON.stringify(filterIds), platform, mode, trpc]); return { options, loading }; } export { useExternalPaymentOptions }; //# sourceMappingURL=useExternalPaymentOptions.js.map