Merge branch 'trunk' of github.com:woocommerce/woocommerce-paypal-payments into PCP-3783-fastlane-allow-merchants-to-disable-specific-card-types

This commit is contained in:
Daniel Dudzic 2024-11-12 15:03:35 +01:00
commit f3c32dbe6c
No known key found for this signature in database
GPG key ID: 31B40D33E3465483
270 changed files with 48005 additions and 70038 deletions

File diff suppressed because it is too large Load diff

View file

@ -12,22 +12,22 @@
"dependencies": {
"@paypal/paypal-js": "^8.1.1",
"@paypal/react-paypal-js": "^8.5.0",
"core-js": "^3.25.0",
"react": "^17.0.0",
"react-dom": "^17.0.0"
"core-js": "^3.39",
"react": "^18",
"react-dom": "^18"
},
"devDependencies": {
"@babel/core": "^7.19",
"@babel/preset-env": "^7.19",
"@babel/preset-react": "^7.18.6",
"@babel/core": "^7.26",
"@babel/preset-env": "^7.26",
"@babel/preset-react": "^7.25",
"@woocommerce/dependency-extraction-webpack-plugin": "2.2.0",
"babel-loader": "^8.2",
"babel-loader": "^9.2",
"cross-env": "^7.0.3",
"file-loader": "^6.2.0",
"sass": "^1.42.1",
"sass-loader": "^12.1.0",
"webpack": "^5.76",
"webpack-cli": "^4.10"
"sass": "^1.80",
"sass-loader": "^16",
"webpack": "^5.96",
"webpack-cli": "^5"
},
"scripts": {
"build": "cross-env BABEL_ENV=default NODE_ENV=production webpack",

View file

@ -0,0 +1,21 @@
import { useMemo } from '@wordpress/element';
/**
* Custom hook returning the allowed shipping locations based on configuration.
*
* @param {Object} axoConfig - The AXO configuration object.
* @param {Array|undefined} axoConfig.enabled_shipping_locations - The list of enabled shipping locations.
* @return {Array} The final list of allowed shipping locations.
*/
const useAllowedLocations = ( axoConfig ) => {
return useMemo( () => {
const enabledShippingLocations =
axoConfig.enabled_shipping_locations || [];
return Array.isArray( enabledShippingLocations )
? enabledShippingLocations
: [];
}, [ axoConfig.enabled_shipping_locations ] );
};
export default useAllowedLocations;

View file

@ -4,6 +4,7 @@ import Fastlane from '../../../../ppcp-axo/resources/js/Connection/Fastlane';
import { log } from '../../../../ppcp-axo/resources/js/Helper/Debug';
import { useDeleteEmptyKeys } from './useDeleteEmptyKeys';
import useCardOptions from './useCardOptions';
import useAllowedLocations from './useAllowedLocations';
import { STORE_NAME } from '../stores/axoStore';
/**
@ -33,6 +34,8 @@ const useFastlaneSdk = ( namespace, axoConfig, ppcpConfig ) => {
return deleteEmptyKeys( configRef.current.axoConfig.style_options );
}, [ deleteEmptyKeys ] );
const allowedLocations = useAllowedLocations( axoConfig );
// Effect to initialize Fastlane SDK
useEffect( () => {
const initFastlane = async () => {
@ -58,6 +61,9 @@ const useFastlaneSdk = ( namespace, axoConfig, ppcpConfig ) => {
cardOptions: {
allowedBrands: cardOptions,
},
shippingAddressOptions: {
allowedLocations,
},
} );
// Set locale (hardcoded to 'en_us' for now)
@ -72,7 +78,14 @@ const useFastlaneSdk = ( namespace, axoConfig, ppcpConfig ) => {
};
initFastlane();
}, [ fastlaneSdk, styleOptions, isPayPalLoaded, namespace, cardOptions ] );
}, [
fastlaneSdk,
styleOptions,
isPayPalLoaded,
namespace,
cardOptions,
allowedLocations,
] );
// Effect to update the config ref when configs change
useEffect( () => {

View file

@ -39,6 +39,7 @@ return array(
$container->get( 'onboarding.environment' ),
$container->get( 'wcgateway.url' ),
$container->get( 'axo.supported-country-card-type-matrix' ),
$container->get( 'axo.shipping-wc-enabled-locations' )
);
},
);

View file

@ -86,6 +86,13 @@ class AxoBlockPaymentMethod extends AbstractPaymentMethodType {
*/
private $supported_country_card_type_matrix;
/**
* The list of WooCommerce enabled shipping locations.
*
* @var array
*/
private array $enabled_shipping_locations;
/**
* AdvancedCardPaymentMethod constructor.
*
@ -99,6 +106,7 @@ class AxoBlockPaymentMethod extends AbstractPaymentMethodType {
* @param Environment $environment The environment object.
* @param string $wcgateway_module_url The WcGateway module URL.
* @param array $supported_country_card_type_matrix The supported country card type matrix for Axo.
* @param array $enabled_shipping_locations The list of WooCommerce enabled shipping locations.
*/
public function __construct(
string $module_url,
@ -109,7 +117,8 @@ class AxoBlockPaymentMethod extends AbstractPaymentMethodType {
DCCGatewayConfiguration $dcc_configuration,
Environment $environment,
string $wcgateway_module_url,
array $supported_country_card_type_matrix
array $supported_country_card_type_matrix,
array $enabled_shipping_locations
) {
$this->name = AxoGateway::ID;
$this->module_url = $module_url;
@ -121,6 +130,7 @@ class AxoBlockPaymentMethod extends AbstractPaymentMethodType {
$this->environment = $environment;
$this->wcgateway_module_url = $wcgateway_module_url;
$this->supported_country_card_type_matrix = $supported_country_card_type_matrix;
$this->enabled_shipping_locations = $enabled_shipping_locations;
}
/**
@ -218,7 +228,8 @@ class AxoBlockPaymentMethod extends AbstractPaymentMethodType {
),
'allowed_cards' => $this->supported_country_card_type_matrix,
'disable_cards' => $this->settings->has( 'disable_cards' ) ? (array) $this->settings->get( 'disable_cards' ) : array(),
'style_options' => array(
'enabled_shipping_locations' => $this->enabled_shipping_locations,
'style_options' => array(
'root' => array(
'backgroundColor' => $this->settings->has( 'axo_style_root_bg_color' ) ? $this->settings->get( 'axo_style_root_bg_color' ) : '',
'errorColor' => $this->settings->has( 'axo_style_root_error_color' ) ? $this->settings->get( 'axo_style_root_error_color' ) : '',
@ -244,9 +255,9 @@ class AxoBlockPaymentMethod extends AbstractPaymentMethodType {
'CA' => WC()->countries->get_states( 'CA' ),
),
),
'icons_directory' => esc_url( $this->wcgateway_module_url ) . 'assets/images/axo/',
'module_url' => untrailingslashit( $this->module_url ),
'ajax' => array(
'icons_directory' => esc_url( $this->wcgateway_module_url ) . 'assets/images/axo/',
'module_url' => untrailingslashit( $this->module_url ),
'ajax' => array(
'frontend_logger' => array(
'endpoint' => \WC_AJAX::get_endpoint( FrontendLoggerEndpoint::ENDPOINT ),
'nonce' => wp_create_nonce( FrontendLoggerEndpoint::nonce() ),

File diff suppressed because it is too large Load diff