2024-09-06 13:06:37 +02:00
|
|
|
import { useEffect, useCallback } from '@wordpress/element';
|
2024-09-10 12:03:50 +02:00
|
|
|
import { useSelect } from '@wordpress/data';
|
2024-09-13 17:27:39 +02:00
|
|
|
import { Card } from '../Card';
|
|
|
|
import { STORE_NAME } from '../../stores/axoStore';
|
2024-09-05 21:17:36 +02:00
|
|
|
|
2024-09-13 15:27:10 +02:00
|
|
|
export const Payment = ( { fastlaneSdk, card, onPaymentLoad } ) => {
|
2024-09-10 12:03:50 +02:00
|
|
|
const isGuest = useSelect( ( select ) =>
|
|
|
|
select( STORE_NAME ).getIsGuest()
|
|
|
|
);
|
|
|
|
|
2024-09-16 16:25:16 +02:00
|
|
|
const isEmailLookupCompleted = useSelect( ( select ) =>
|
|
|
|
select( STORE_NAME ).getIsEmailLookupCompleted()
|
|
|
|
);
|
|
|
|
|
2024-09-06 03:21:27 +02:00
|
|
|
const loadPaymentComponent = useCallback( async () => {
|
2024-09-16 16:25:16 +02:00
|
|
|
if ( isGuest && isEmailLookupCompleted ) {
|
2024-09-06 03:21:27 +02:00
|
|
|
const paymentComponent = await fastlaneSdk.FastlaneCardComponent(
|
|
|
|
{}
|
|
|
|
);
|
|
|
|
paymentComponent.render( `#fastlane-card` );
|
|
|
|
onPaymentLoad( paymentComponent );
|
2024-09-05 21:17:36 +02:00
|
|
|
}
|
2024-09-16 16:25:16 +02:00
|
|
|
}, [ isGuest, isEmailLookupCompleted, fastlaneSdk, onPaymentLoad ] );
|
2024-09-05 21:17:36 +02:00
|
|
|
|
2024-09-06 03:21:27 +02:00
|
|
|
useEffect( () => {
|
|
|
|
loadPaymentComponent();
|
|
|
|
}, [ loadPaymentComponent ] );
|
|
|
|
|
2024-09-16 16:25:16 +02:00
|
|
|
if ( isGuest ) {
|
|
|
|
if ( isEmailLookupCompleted ) {
|
|
|
|
return <div id="fastlane-card" key="fastlane-card" />;
|
|
|
|
}
|
|
|
|
return (
|
|
|
|
<div id="ppcp-axo-block-radio-content">
|
|
|
|
Enter your email address above to continue.
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
return (
|
2024-09-13 15:27:10 +02:00
|
|
|
<Card
|
2024-09-06 13:06:37 +02:00
|
|
|
card={ card }
|
|
|
|
fastlaneSdk={ fastlaneSdk }
|
2024-09-10 12:03:50 +02:00
|
|
|
showWatermark={ ! isGuest }
|
2024-09-06 13:06:37 +02:00
|
|
|
/>
|
2024-09-05 21:17:36 +02:00
|
|
|
);
|
|
|
|
};
|