Add the UnifiedScriptLoader and usePayPalCommerceGateway hook

This commit is contained in:
Daniel Dudzic 2024-10-07 10:42:56 +02:00
parent 5e1c2a22d2
commit 07bedc4460
No known key found for this signature in database
GPG key ID: 31B40D33E3465483
4 changed files with 111 additions and 5 deletions

View file

@ -0,0 +1,32 @@
import { useState, useEffect } from '@wordpress/element';
import { log } from '../../../../ppcp-axo/resources/js/Helper/Debug';
const usePayPalCommerceGateway = ( initialConfig ) => {
const [ isConfigLoaded, setIsConfigLoaded ] = useState( false );
const [ ppcpConfig, setPpcpConfig ] = useState( initialConfig );
useEffect( () => {
const loadConfig = () => {
if ( typeof window.PayPalCommerceGateway !== 'undefined' ) {
setPpcpConfig( window.PayPalCommerceGateway );
setIsConfigLoaded( true );
} else {
log( 'PayPal Commerce Gateway config not loaded.', 'error' );
}
};
if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', loadConfig );
} else {
loadConfig();
}
return () => {
document.removeEventListener( 'DOMContentLoaded', loadConfig );
};
}, [] );
return { isConfigLoaded, ppcpConfig };
};
export default usePayPalCommerceGateway;

View file

@ -27,7 +27,6 @@ const usePayPalScript = ( namespace, ppcpConfig, isConfigLoaded ) => {
useEffect( () => {
const loadScript = async () => {
if ( ! isPayPalLoaded && isConfigLoaded ) {
log( `Loading PayPal script for namespace: ${ namespace }` );
try {
await UnifiedScriptLoader.loadPayPalScript(
namespace,
@ -37,8 +36,8 @@ const usePayPalScript = ( namespace, ppcpConfig, isConfigLoaded ) => {
setIsPayPalLoaded( true );
} catch ( error ) {
log(
`Error loading PayPal script for namespace: ${ namespace }`,
error
`Error loading PayPal script for namespace: ${ namespace }. Error: ${ error }`,
'error'
);
}
}