import { useEffect, useState } from '@wordpress/element'; import { PayPalScriptProvider, PayPalCardFieldsProvider, PayPalCardFieldsForm, } from '@paypal/react-paypal-js'; import { CheckoutHandler } from './checkout-handler'; import { createOrder, onApprove, createVaultSetupToken, onApproveSavePayment, } from '../card-fields-config'; import { cartHasSubscriptionProducts } from '../Helper/Subscription'; export function CardFields( { config, eventRegistration, emitResponse, } ) { const { onPaymentSetup } = eventRegistration; const { responseTypes } = emitResponse; const [ cardFieldsForm, setCardFieldsForm ] = useState(); const getCardFieldsForm = ( cardFieldsForm ) => { setCardFieldsForm( cardFieldsForm ); }; const getSavePayment = ( savePayment ) => { localStorage.setItem( 'ppcp-save-card-payment', savePayment ); }; const hasSubscriptionProducts = cartHasSubscriptionProducts( config.scriptData ); useEffect( () => { localStorage.removeItem( 'ppcp-save-card-payment' ); if ( hasSubscriptionProducts ) { localStorage.setItem( 'ppcp-save-card-payment', 'true' ); } }, [ hasSubscriptionProducts ] ); useEffect( () => onPaymentSetup( () => { async function handlePaymentProcessing() { await cardFieldsForm.submit().catch( ( error ) => { return { type: responseTypes.ERROR, }; } ); return { type: responseTypes.SUCCESS, }; } return handlePaymentProcessing(); } ), [ onPaymentSetup, cardFieldsForm ] ); return ( <> { console.error( err ); } } > ); }