import { Box, Heading } from '@biom3/react';
import { useContext, useEffect } from 'react';
import { SalePaymentTypes } from '@imtbl/checkout-sdk';
import { useTranslation } from 'react-i18next';
import { FooterLogo } from '../../../components/Footer/FooterLogo';
import { HeaderNavigation } from '../../../components/Header/HeaderNavigation';
import { SimpleLayout } from '../../../components/SimpleLayout/SimpleLayout';
import {
OrderSummarySubViews,
SaleWidgetViews,
} from '../../../context/view-context/SaleViewContextTypes';
import {
SharedViews,
ViewActions,
ViewContext,
} from '../../../context/view-context/ViewContext';
import { PaymentOptions } from '../components/PaymentOptions';
import { useSaleContext } from '../context/SaleContextProvider';
import { useSaleEvent } from '../hooks/useSaleEvents';
import { SaleErrorTypes, SignPaymentTypes } from '../types';
export function PaymentMethods() {
const { t } = useTranslation();
const { viewDispatch } = useContext(ViewContext);
const {
sign,
goToErrorView,
paymentMethod,
setPaymentMethod,
invalidParameters,
disabledPaymentTypes,
hideExcludedPaymentTypes,
} = useSaleContext();
const { sendCloseEvent, sendSelectedPaymentMethod } = useSaleEvent();
const handleOptionClick = (type: SalePaymentTypes) => {
setPaymentMethod(type);
};
useEffect(() => {
if (paymentMethod) {
sendSelectedPaymentMethod(paymentMethod);
}
if (
paymentMethod
&& [SalePaymentTypes.DEBIT, SalePaymentTypes.CREDIT].includes(paymentMethod)
) {
sign(SignPaymentTypes.FIAT, undefined, () => {
viewDispatch({
payload: {
type: ViewActions.UPDATE_VIEW,
view: {
type: SaleWidgetViews.PAY_WITH_CARD,
},
},
});
});
viewDispatch({
payload: {
type: ViewActions.UPDATE_VIEW,
view: {
type: SharedViews.LOADING_VIEW,
data: { loadingText: t('views.PAYMENT_METHODS.loading.ready1') },
},
},
});
}
if (paymentMethod && paymentMethod === SalePaymentTypes.CRYPTO) {
viewDispatch({
payload: {
type: ViewActions.UPDATE_VIEW,
view: {
type: SaleWidgetViews.ORDER_SUMMARY,
subView: OrderSummarySubViews.INIT,
},
},
});
}
}, [paymentMethod]);
useEffect(() => {
if (!invalidParameters) return;
goToErrorView(SaleErrorTypes.INVALID_PARAMETERS);
}, [invalidParameters]);
return (
)}
footer={}
>
{t('views.PAYMENT_METHODS.header.heading')}
);
}