mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
206 lines
4.3 KiB
JavaScript
206 lines
4.3 KiB
JavaScript
/**
|
|
* Hooks: Provide the main API for components to interact with the store.
|
|
*
|
|
* These encapsulate store interactions, offering a consistent interface.
|
|
* Hooks simplify data access and manipulation for components.
|
|
*
|
|
* @file
|
|
*/
|
|
|
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
|
|
import { STORE_NAME } from './constants';
|
|
import { createHooksForStore } from '../utils';
|
|
import { useMemo } from '@wordpress/element';
|
|
|
|
/**
|
|
* Single source of truth for access Redux details.
|
|
*
|
|
* This hook returns a stable API to access actions, selectors and special hooks to generate
|
|
* getter- and setters for transient or persistent properties.
|
|
*
|
|
* @return {{select, dispatch, useTransient, usePersistent}} Store data API.
|
|
*/
|
|
const useStoreData = () => {
|
|
const select = useSelect( ( selectors ) => selectors( STORE_NAME ), [] );
|
|
const dispatch = useDispatch( STORE_NAME );
|
|
const { useTransient, usePersistent } = createHooksForStore( STORE_NAME );
|
|
|
|
return useMemo(
|
|
() => ( {
|
|
select,
|
|
dispatch,
|
|
useTransient,
|
|
usePersistent,
|
|
} ),
|
|
[ select, dispatch, useTransient, usePersistent ]
|
|
);
|
|
};
|
|
|
|
const useHooks = () => {
|
|
const { usePersistent } = useStoreData();
|
|
|
|
// PayPal checkout.
|
|
const [ paypal ] = usePersistent( 'ppcp-gateway' );
|
|
const [ venmo ] = usePersistent( 'venmo' );
|
|
const [ payLater ] = usePersistent( 'pay-later' );
|
|
const [ creditCard ] = usePersistent( 'ppcp-card-button-gateway' );
|
|
|
|
// Online card Payments.
|
|
const [ advancedCreditCard ] = usePersistent( 'ppcp-credit-card-gateway' );
|
|
const [ fastlane ] = usePersistent( 'ppcp-axo-gateway' );
|
|
const [ applePay ] = usePersistent( 'ppcp-applepay' );
|
|
const [ googlePay ] = usePersistent( 'ppcp-googlepay' );
|
|
|
|
// Alternative payment methods.
|
|
const [ bancontact ] = usePersistent( 'ppcp-bancontact' );
|
|
const [ blik ] = usePersistent( 'ppcp-blik' );
|
|
const [ eps ] = usePersistent( 'ppcp-eps' );
|
|
const [ ideal ] = usePersistent( 'ppcp-ideal' );
|
|
const [ mybank ] = usePersistent( 'ppcp-mybank' );
|
|
const [ p24 ] = usePersistent( 'ppcp-p24' );
|
|
const [ trustly ] = usePersistent( 'ppcp-trustly' );
|
|
const [ multibanco ] = usePersistent( 'ppcp-multibanco' );
|
|
const [ pui ] = usePersistent( 'ppcp-pay-upon-invoice-gateway' );
|
|
const [ oxxo ] = usePersistent( 'ppcp-oxxo-gateway' );
|
|
|
|
// Custom modal data.
|
|
const [ paypalShowLogo ] = usePersistent( 'paypalShowLogo' );
|
|
const [ threeDSecure ] = usePersistent( 'threeDSecure' );
|
|
const [ fastlaneCardholderName ] = usePersistent(
|
|
'fastlaneCardholderName'
|
|
);
|
|
const [ fastlaneDisplayWatermark ] = usePersistent(
|
|
'fastlaneDisplayWatermark'
|
|
);
|
|
|
|
return {
|
|
paypal,
|
|
venmo,
|
|
payLater,
|
|
creditCard,
|
|
advancedCreditCard,
|
|
fastlane,
|
|
applePay,
|
|
googlePay,
|
|
bancontact,
|
|
blik,
|
|
eps,
|
|
ideal,
|
|
mybank,
|
|
p24,
|
|
trustly,
|
|
multibanco,
|
|
pui,
|
|
oxxo,
|
|
paypalShowLogo,
|
|
threeDSecure,
|
|
fastlaneCardholderName,
|
|
fastlaneDisplayWatermark,
|
|
};
|
|
};
|
|
|
|
export const useStore = () => {
|
|
const { useTransient, dispatch } = useStoreData();
|
|
const { persist, refresh, setPersistent, changePaymentSettings } = dispatch;
|
|
const [ isReady ] = useTransient( 'isReady' );
|
|
|
|
return {
|
|
persist,
|
|
refresh,
|
|
setPersistent,
|
|
changePaymentSettings,
|
|
isReady,
|
|
};
|
|
};
|
|
|
|
export const usePaymentMethods = () => {
|
|
const {
|
|
// PayPal Checkout.
|
|
paypal,
|
|
venmo,
|
|
payLater,
|
|
creditCard,
|
|
|
|
// Online card payments.
|
|
advancedCreditCard,
|
|
fastlane,
|
|
applePay,
|
|
googlePay,
|
|
|
|
// Local APMs.
|
|
bancontact,
|
|
blik,
|
|
eps,
|
|
ideal,
|
|
mybank,
|
|
p24,
|
|
trustly,
|
|
multibanco,
|
|
pui,
|
|
oxxo,
|
|
} = useHooks();
|
|
|
|
const payPalCheckout = [ paypal, venmo, payLater, creditCard ];
|
|
const onlineCardPayments = [
|
|
advancedCreditCard,
|
|
fastlane,
|
|
applePay,
|
|
googlePay,
|
|
];
|
|
const alternative = [
|
|
bancontact,
|
|
blik,
|
|
eps,
|
|
ideal,
|
|
mybank,
|
|
p24,
|
|
trustly,
|
|
multibanco,
|
|
pui,
|
|
oxxo,
|
|
];
|
|
const paymentMethods = [
|
|
paypal,
|
|
venmo,
|
|
payLater,
|
|
creditCard,
|
|
advancedCreditCard,
|
|
fastlane,
|
|
applePay,
|
|
googlePay,
|
|
bancontact,
|
|
blik,
|
|
eps,
|
|
ideal,
|
|
mybank,
|
|
p24,
|
|
trustly,
|
|
multibanco,
|
|
pui,
|
|
oxxo,
|
|
];
|
|
|
|
return {
|
|
all: paymentMethods,
|
|
paypal: payPalCheckout,
|
|
cardPayment: onlineCardPayments,
|
|
apm: alternative,
|
|
};
|
|
};
|
|
|
|
export const usePaymentMethodsModal = () => {
|
|
const {
|
|
paypalShowLogo,
|
|
threeDSecure,
|
|
fastlaneCardholderName,
|
|
fastlaneDisplayWatermark,
|
|
} = useHooks();
|
|
|
|
return {
|
|
paypalShowLogo,
|
|
threeDSecure,
|
|
fastlaneCardholderName,
|
|
fastlaneDisplayWatermark,
|
|
};
|
|
};
|