mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-08-31 06:52:50 +08:00
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
import { useEffect } from '@wordpress/element';
|
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
import { log } from '../../../../ppcp-axo/resources/js/Helper/Debug';
|
|
import { loadPayPalScript } from '../../../../ppcp-button/resources/js/modules/Helper/PayPalScriptLoading';
|
|
import { STORE_NAME } from '../stores/axoStore';
|
|
|
|
/**
|
|
* Custom hook to load the PayPal script.
|
|
*
|
|
* @param {string} namespace - Namespace for the PayPal script.
|
|
* @param {Object} ppcpConfig - Configuration object for PayPal script.
|
|
* @param {boolean} isConfigLoaded - Whether the PayPal Commerce Gateway config is loaded.
|
|
* @return {boolean} True if the PayPal script has loaded, false otherwise.
|
|
*/
|
|
const usePayPalScript = ( namespace, ppcpConfig, isConfigLoaded ) => {
|
|
// Get dispatch functions from the AXO store
|
|
const { setIsPayPalLoaded } = useDispatch( STORE_NAME );
|
|
|
|
// Select relevant states from the AXO store
|
|
const { isPayPalLoaded } = useSelect(
|
|
( select ) => ( {
|
|
isPayPalLoaded: select( STORE_NAME ).getIsPayPalLoaded(),
|
|
} ),
|
|
[]
|
|
);
|
|
|
|
useEffect( () => {
|
|
const loadScript = async () => {
|
|
if ( ! isPayPalLoaded && isConfigLoaded ) {
|
|
try {
|
|
await loadPayPalScript( namespace, ppcpConfig );
|
|
setIsPayPalLoaded( true );
|
|
} catch ( error ) {
|
|
log(
|
|
`Error loading PayPal script for namespace: ${ namespace }. Error: ${ error }`,
|
|
'error'
|
|
);
|
|
}
|
|
}
|
|
};
|
|
|
|
loadScript();
|
|
}, [ ppcpConfig, isConfigLoaded, isPayPalLoaded ] );
|
|
|
|
return isPayPalLoaded;
|
|
};
|
|
|
|
export default usePayPalScript;
|