@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
JavaScript
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