diff --git a/modules/ppcp-axo-block/resources/js/components/Payment/Payment.js b/modules/ppcp-axo-block/resources/js/components/Payment/Payment.js index 6ac7c5004..018265192 100644 --- a/modules/ppcp-axo-block/resources/js/components/Payment/Payment.js +++ b/modules/ppcp-axo-block/resources/js/components/Payment/Payment.js @@ -1,10 +1,12 @@ -import { useEffect, useCallback } from '@wordpress/element'; +import { useEffect, useCallback, useState } from '@wordpress/element'; import { useSelect } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; import { Card } from '../Card'; import { STORE_NAME } from '../../stores/axoStore'; export const Payment = ( { fastlaneSdk, card, onPaymentLoad } ) => { + const [ isCardElementReady, setIsCardElementReady ] = useState( false ); + const isGuest = useSelect( ( select ) => select( STORE_NAME ).getIsGuest() ); @@ -14,14 +16,26 @@ export const Payment = ( { fastlaneSdk, card, onPaymentLoad } ) => { ); const loadPaymentComponent = useCallback( async () => { - if ( isGuest && isEmailLookupCompleted ) { + if ( isGuest && isEmailLookupCompleted && isCardElementReady ) { const paymentComponent = await fastlaneSdk.FastlaneCardComponent( {} ); paymentComponent.render( `#fastlane-card` ); onPaymentLoad( paymentComponent ); } - }, [ isGuest, isEmailLookupCompleted, fastlaneSdk, onPaymentLoad ] ); + }, [ + isGuest, + isEmailLookupCompleted, + isCardElementReady, + fastlaneSdk, + onPaymentLoad, + ] ); + + useEffect( () => { + if ( isGuest && isEmailLookupCompleted ) { + setIsCardElementReady( true ); + } + }, [ isGuest, isEmailLookupCompleted ] ); useEffect( () => { loadPaymentComponent();