File "useAxoSetup.js"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/woocommerce-paypal-payments/modules/ppcp-axo-block/resources/js/hooks/useAxoSetup.js
File size: 3.13 KB
MIME-type: text/x-java
Charset: utf-8
import { useEffect } from '@wordpress/element';
import { useDispatch } from '@wordpress/data';
import { STORE_NAME } from '../stores/axoStore';
import usePayPalScript from './usePayPalScript';
import { setupWatermark } from '../components/Watermark';
import { setupEmailFunctionality } from '../components/EmailButton';
import { createEmailLookupHandler } from '../events/emailLookupManager';
import usePhoneSyncHandler from './usePhoneSyncHandler';
import { initializeClassToggles } from '../helpers/classnamesManager';
import { snapshotFields } from '../helpers/fieldHelpers';
import useCustomerData from './useCustomerData';
import useShippingAddressChange from './useShippingAddressChange';
import useCardChange from './useCardChange';
/**
* Custom hook to set up AXO functionality.
*
* @param {string} namespace - Namespace for the PayPal script.
* @param {Object} ppcpConfig - PayPal Checkout configuration.
* @param {boolean} isConfigLoaded - Whether the PayPal config has loaded.
* @param {Object} fastlaneSdk - Fastlane SDK instance.
* @param {Object} paymentComponent - Payment component instance.
* @return {boolean} Whether PayPal script has loaded.
*/
const useAxoSetup = (
namespace,
ppcpConfig,
isConfigLoaded,
fastlaneSdk,
paymentComponent
) => {
// Get dispatch functions from the AXO store
const {
setIsAxoActive,
setIsAxoScriptLoaded,
setShippingAddress,
setCardDetails,
} = useDispatch( STORE_NAME );
// Check if PayPal script has loaded
const paypalLoaded = usePayPalScript(
namespace,
ppcpConfig,
isConfigLoaded
);
// Set up card and shipping address change handlers
const onChangeCardButtonClick = useCardChange( fastlaneSdk );
const onChangeShippingAddressClick = useShippingAddressChange(
fastlaneSdk,
setShippingAddress
);
// Get customer data and setter functions
const {
shippingAddress: wooShippingAddress,
billingAddress: wooBillingAddress,
setShippingAddress: setWooShippingAddress,
setBillingAddress: setWooBillingAddress,
} = useCustomerData();
// Set up phone sync handler
usePhoneSyncHandler( paymentComponent );
// Initialize class toggles on mount
useEffect( () => {
initializeClassToggles();
}, [] );
// Set up AXO functionality when PayPal and Fastlane are loaded
useEffect( () => {
setupWatermark( fastlaneSdk );
if ( paypalLoaded && fastlaneSdk ) {
setIsAxoScriptLoaded( true );
setIsAxoActive( true );
// Create and set up email lookup handler
const emailLookupHandler = createEmailLookupHandler(
fastlaneSdk,
setShippingAddress,
setCardDetails,
snapshotFields,
wooShippingAddress,
wooBillingAddress,
setWooShippingAddress,
setWooBillingAddress,
onChangeShippingAddressClick,
onChangeCardButtonClick
);
setupEmailFunctionality( emailLookupHandler );
}
}, [
paypalLoaded,
fastlaneSdk,
setIsAxoActive,
setIsAxoScriptLoaded,
wooShippingAddress,
wooBillingAddress,
setWooShippingAddress,
setWooBillingAddress,
onChangeShippingAddressClick,
onChangeCardButtonClick,
setShippingAddress,
setCardDetails,
paymentComponent,
] );
return paypalLoaded;
};
export default useAxoSetup;