/* eslint-disable consistent-return */ /* eslint-disable react-hooks/rules-of-hooks */ /* eslint-disable no-console */ /* eslint-disable unused-imports/no-unused-vars */ import type { ForwardedRef } from "react"; import { forwardRef, useImperativeHandle, useRef, useState } from "react"; import type { FormHandles } from "@/components/form/form"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion/accordion"; import { AccordionPaymentOption } from "@/components/widget/payment/accordion-payment-option/accordion-payment-option"; import { MasterPassBanner } from "@/features/modules/payment/masterpass/components/masterpass-banner"; import type { MasterpassHandles } from "@/features/modules/payment/masterpass/masterpass"; import Masterpass from "@/features/modules/payment/masterpass/masterpass"; import type { CreditCardPaymentHandles } from "@/features/payment/credit-card-infos/components/credit-card-payment"; import CreditCardPayment from "@/features/payment/credit-card-infos/components/credit-card-payment"; import { useLocale } from "@/hooks/useLocale"; import { useMasterpassStore } from "@/store/masterpass-store/use-masterpass-store"; import { usePayment } from "../hotel/payment/hooks/use-hotel-payment"; import PaymentAgreementFormItem from "./components/payment-agreement-form-item"; export interface HotelPaymentListHandles extends FormHandles { clearSelectedCampaign?: VoidFunction; } export interface PaymentListProps { cartId: string; searchId: string; transactionId: string; reservationNote?: string; noCampaign?: boolean; handles?: { onBookSuccess: (payload: { bookingCode: string }) => void; onBookFail: (payload: { message: string; data?: any }) => void; }; } const PaymentList = ( { reservationNote = "", ...props }: PaymentListProps, ref: ForwardedRef, ) => { const { masterpassState } = useMasterpassStore(); const { paymentState } = usePayment(); const [paymentMethod, setPaymentMethod] = useState(); const creditCardRef = useRef(null); const masterpassRef = useRef(null); const checkMasterpass = masterpassState.data?.payload?.masterpassUserData; const { t } = useLocale(); useImperativeHandle(ref, () => ({ submit: () => { if (paymentMethod === "creditCard") { return creditCardRef.current?.submit(); } return masterpassRef.current?.submit(); }, onlyValidate: () => { creditCardRef.current?.onlyValidate(); masterpassRef.current?.onlyValidate(); }, clearSelectedCampaign: () => { creditCardRef?.current?.clearSelectedCampaign?.(); }, })); return (
setPaymentMethod("creditCard")} showButton={false} > {checkMasterpass && ( setPaymentMethod("masterpass")} showButton={false} > )} {checkMasterpass && ( )}
); }; export default forwardRef(PaymentList);