Optimize for prop drilling

This commit is contained in:
Daniel Dudzic 2024-09-13 23:09:51 +02:00
parent f77aae6b90
commit 859fd3396b
No known key found for this signature in database
GPG key ID: 31B40D33E3465483
6 changed files with 28 additions and 43 deletions

View file

@ -27,7 +27,6 @@ export const useAddressEditing = () => {
const setBillingAddressEditing = useCallback( const setBillingAddressEditing = useCallback(
( isEditing ) => { ( isEditing ) => {
console.log( 'Setting billing address editing to:', isEditing );
setEditingBillingAddress( isEditing ); setEditingBillingAddress( isEditing );
}, },
[ setEditingBillingAddress ] [ setEditingBillingAddress ]

View file

@ -9,9 +9,14 @@ import {
isEmailFunctionalitySetup, isEmailFunctionalitySetup,
} from '../components/EmailButton'; } from '../components/EmailButton';
import { restoreOriginalFields } from '../helpers/fieldHelpers'; import { restoreOriginalFields } from '../helpers/fieldHelpers';
import useCustomerData from './useCustomerData';
const useAxoCleanup = ( updateWooShippingAddress, updateWooBillingAddress ) => { const useAxoCleanup = () => {
const { setIsAxoActive, setIsGuest } = useDispatch( STORE_NAME ); const { setIsAxoActive, setIsGuest } = useDispatch( STORE_NAME );
const {
setShippingAddress: updateWooShippingAddress,
setBillingAddress: updateWooBillingAddress,
} = useCustomerData();
useEffect( () => { useEffect( () => {
console.log( 'Setting up cleanup for WooCommerce fields' ); console.log( 'Setting up cleanup for WooCommerce fields' );

View file

@ -7,15 +7,12 @@ import { setupEmailFunctionality } from '../components/EmailButton';
import { createEmailLookupHandler } from '../events/emailLookupManager'; import { createEmailLookupHandler } from '../events/emailLookupManager';
import { initializeClassToggles } from '../helpers/classnamesManager'; import { initializeClassToggles } from '../helpers/classnamesManager';
import { snapshotFields } from '../helpers/fieldHelpers'; import { snapshotFields } from '../helpers/fieldHelpers';
import useCustomerData from './useCustomerData';
import useShippingAddressChange from './useShippingAddressChange';
const useAxoSetup = ( const useAxoSetup = (
ppcpConfig, ppcpConfig,
fastlaneSdk, fastlaneSdk,
wooShippingAddress,
wooBillingAddress,
setWooShippingAddress,
setWooBillingAddress,
onChangeShippingAddressClick,
onChangeCardButtonClick, onChangeCardButtonClick,
setShippingAddress, setShippingAddress,
setCard setCard
@ -23,6 +20,18 @@ const useAxoSetup = (
const { setIsAxoActive, setIsAxoScriptLoaded } = useDispatch( STORE_NAME ); const { setIsAxoActive, setIsAxoScriptLoaded } = useDispatch( STORE_NAME );
const paypalLoaded = usePayPalScript( ppcpConfig ); const paypalLoaded = usePayPalScript( ppcpConfig );
const onChangeShippingAddressClick = useShippingAddressChange(
fastlaneSdk,
setShippingAddress
);
const {
shippingAddress: wooShippingAddress,
billingAddress: wooBillingAddress,
setShippingAddress: setWooShippingAddress,
setBillingAddress: setWooBillingAddress,
} = useCustomerData();
useEffect( () => { useEffect( () => {
console.log( 'Initializing class toggles' ); console.log( 'Initializing class toggles' );
initializeClassToggles(); initializeClassToggles();

View file

@ -1,8 +1,10 @@
import { useCallback } from '@wordpress/element'; import { useCallback } from '@wordpress/element';
import { useAddressEditing } from './useAddressEditing'; import { useAddressEditing } from './useAddressEditing';
import useCustomerData from './useCustomerData';
export const useCardChange = ( fastlaneSdk, setCard, setWooBillingAddress ) => { export const useCardChange = ( fastlaneSdk, setCard ) => {
const { setBillingAddressEditing } = useAddressEditing(); const { setBillingAddressEditing } = useAddressEditing();
const { setBillingAddress: setWooBillingAddress } = useCustomerData();
return useCallback( async () => { return useCallback( async () => {
if ( fastlaneSdk ) { if ( fastlaneSdk ) {

View file

@ -1,12 +1,10 @@
import { useCallback } from '@wordpress/element'; import { useCallback } from '@wordpress/element';
import { useAddressEditing } from './useAddressEditing'; import { useAddressEditing } from './useAddressEditing';
import useCustomerData from './useCustomerData';
export const useShippingAddressChange = ( export const useShippingAddressChange = ( fastlaneSdk, setShippingAddress ) => {
fastlaneSdk,
setShippingAddress,
setWooShippingAddress
) => {
const { setShippingAddressEditing } = useAddressEditing(); const { setShippingAddressEditing } = useAddressEditing();
const { setShippingAddress: setWooShippingAddress } = useCustomerData();
return useCallback( async () => { return useCallback( async () => {
if ( fastlaneSdk ) { if ( fastlaneSdk ) {
@ -14,10 +12,6 @@ export const useShippingAddressChange = (
await fastlaneSdk.profile.showShippingAddressSelector(); await fastlaneSdk.profile.showShippingAddressSelector();
if ( selectionChanged ) { if ( selectionChanged ) {
setShippingAddress( selectedAddress ); setShippingAddress( selectedAddress );
console.log(
'Selected shipping address changed:',
selectedAddress
);
const { address, name, phoneNumber } = selectedAddress; const { address, name, phoneNumber } = selectedAddress;

View file

@ -3,8 +3,6 @@ import { registerPaymentMethod } from '@woocommerce/blocks-registry';
// Hooks // Hooks
import useFastlaneSdk from './hooks/useFastlaneSdk'; import useFastlaneSdk from './hooks/useFastlaneSdk';
import useCustomerData from './hooks/useCustomerData';
import useShippingAddressChange from './hooks/useShippingAddressChange';
import useCardChange from './hooks/useCardChange'; import useCardChange from './hooks/useCardChange';
import useAxoSetup from './hooks/useAxoSetup'; import useAxoSetup from './hooks/useAxoSetup';
import usePaymentSetup from './hooks/usePaymentSetup'; import usePaymentSetup from './hooks/usePaymentSetup';
@ -22,39 +20,17 @@ const Axo = ( props ) => {
const [ shippingAddress, setShippingAddress ] = useState( null ); const [ shippingAddress, setShippingAddress ] = useState( null );
const [ card, setCard ] = useState( null ); const [ card, setCard ] = useState( null );
const fastlaneSdk = useFastlaneSdk( axoConfig, ppcpConfig ); const fastlaneSdk = useFastlaneSdk( axoConfig, ppcpConfig );
const onChangeCardButtonClick = useCardChange( fastlaneSdk, setCard );
const {
shippingAddress: wooShippingAddress,
billingAddress: wooBillingAddress,
setShippingAddress: updateWooShippingAddress,
setBillingAddress: updateWooBillingAddress,
} = useCustomerData();
const onChangeShippingAddressClick = useShippingAddressChange(
fastlaneSdk,
setShippingAddress,
updateWooShippingAddress
);
const onChangeCardButtonClick = useCardChange(
fastlaneSdk,
setCard,
updateWooBillingAddress
);
useAxoSetup( useAxoSetup(
ppcpConfig, ppcpConfig,
fastlaneSdk, fastlaneSdk,
wooShippingAddress,
wooBillingAddress,
updateWooShippingAddress,
updateWooBillingAddress,
onChangeShippingAddressClick,
onChangeCardButtonClick, onChangeCardButtonClick,
setShippingAddress, setShippingAddress,
setCard setCard
); );
usePaymentSetup( onPaymentSetup, emitResponse, card ); usePaymentSetup( onPaymentSetup, emitResponse, card );
useAxoCleanup( updateWooShippingAddress, updateWooBillingAddress ); useAxoCleanup();
const handlePaymentLoad = useCallback( ( paymentComponent ) => { const handlePaymentLoad = useCallback( ( paymentComponent ) => {
console.log( 'Payment component loaded', paymentComponent ); console.log( 'Payment component loaded', paymentComponent );