UNPKG

@daimo/pay

Version:

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

63 lines (60 loc) 2.27 kB
import { jsxs, jsx } from 'react/jsx-runtime'; import { ExternalPaymentOptions } from '@daimo/pay-common'; import { PageContent, ModalH1 } from '../../Common/Modal/styles.js'; import { ROUTES } from '../../../constants/routes.js'; import { usePayContext } from '../../../hooks/usePayContext.js'; import { OptionsList } from '../../Common/OptionsList/index.js'; import { OrderHeader } from '../../Common/OrderHeader/index.js'; const SelectExchange = () => { const { paymentState, setRoute } = usePayContext(); const { externalPaymentOptions, setSelectedExternalOption } = paymentState; const exchangeOptions = externalPaymentOptions.options.get("exchange"); const isLoading = externalPaymentOptions.loading; if (!isLoading && !exchangeOptions) { return /* @__PURE__ */ jsxs(PageContent, { children: [ /* @__PURE__ */ jsx(OrderHeader, { minified: true }), /* @__PURE__ */ jsx(ModalH1, { children: "No Exchange options available" }) ] }); } const paymentOptions = paymentState.buttonProps?.paymentOptions; const isAllExchangesOnly = paymentOptions && paymentOptions.length === 1 && paymentOptions[0] === "AllExchanges"; let filtered = []; if (exchangeOptions) { if (isAllExchangesOnly) { filtered = exchangeOptions.filter( (o) => o.id === ExternalPaymentOptions.Coinbase || o.id === ExternalPaymentOptions.Binance ); } else { filtered = exchangeOptions; } } const options = filtered.map((option) => ({ id: option.id, title: option.cta, icons: [option.logoURI], onClick: () => { setSelectedExternalOption(option); const meta = { event: "click-option", option: option.id }; if (paymentState.isDepositFlow) { setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, meta); } else { setRoute(ROUTES.WAITING_EXTERNAL, meta); } }, disabled: option.disabled, subtitle: option.message })); return /* @__PURE__ */ jsxs(PageContent, { children: [ /* @__PURE__ */ jsx(OrderHeader, { minified: true, show: "zkp2p" }), /* @__PURE__ */ jsx( OptionsList, { requiredSkeletons: 2, options, isLoading } ) ] }); }; export { SelectExchange as default }; //# sourceMappingURL=index.js.map