Apply the Venmo + vaulting functionality on block pages

This commit is contained in:
Narek Zakarian 2024-05-31 15:36:32 +04:00
parent 84616d07da
commit 2cb76ed8f2
No known key found for this signature in database
GPG key ID: 07AFD7E7A9C164A7

View file

@ -23,6 +23,9 @@ import {
import buttonModuleWatcher from "../../../ppcp-button/resources/js/modules/ButtonModuleWatcher"; import buttonModuleWatcher from "../../../ppcp-button/resources/js/modules/ButtonModuleWatcher";
import BlockCheckoutMessagesBootstrap from "./Bootstrap/BlockCheckoutMessagesBootstrap"; import BlockCheckoutMessagesBootstrap from "./Bootstrap/BlockCheckoutMessagesBootstrap";
import {keysToCamelCase} from "../../../ppcp-button/resources/js/modules/Helper/Utils"; import {keysToCamelCase} from "../../../ppcp-button/resources/js/modules/Helper/Utils";
import {
handleShippingOptionsChange
} from "../../../ppcp-button/resources/js/modules/Helper/ShippingHandler";
const config = wc.wcSettings.getSetting('ppcp-gateway_data'); const config = wc.wcSettings.getSetting('ppcp-gateway_data');
window.ppcpFundingSource = config.fundingSource; window.ppcpFundingSource = config.fundingSource;
@ -146,7 +149,7 @@ const PayPalComponent = ({
shipping_address: addresses.shippingAddress, shipping_address: addresses.shippingAddress,
}), }),
]; ];
if (!config.finalReviewEnabled) { if (shouldHandleShippingInPayPal()) {
// set address in UI // set address in UI
promises.push(wp.data.dispatch('wc/store/cart').setBillingAddress(addresses.billingAddress)); promises.push(wp.data.dispatch('wc/store/cart').setBillingAddress(addresses.billingAddress));
if (shippingData.needsShipping) { if (shippingData.needsShipping) {
@ -181,7 +184,7 @@ const PayPalComponent = ({
throw new Error(config.scriptData.labels.error.generic) throw new Error(config.scriptData.labels.error.generic)
} }
if (config.finalReviewEnabled) { if (!shouldHandleShippingInPayPal()) {
location.href = getCheckoutRedirectUrl(); location.href = getCheckoutRedirectUrl();
} else { } else {
setGotoContinuationOnError(true); setGotoContinuationOnError(true);
@ -220,7 +223,7 @@ const PayPalComponent = ({
shipping_address: addresses.shippingAddress, shipping_address: addresses.shippingAddress,
}), }),
]; ];
if (!config.finalReviewEnabled) { if (shouldHandleShippingInPayPal()) {
// set address in UI // set address in UI
promises.push(wp.data.dispatch('wc/store/cart').setBillingAddress(addresses.billingAddress)); promises.push(wp.data.dispatch('wc/store/cart').setBillingAddress(addresses.billingAddress));
if (shippingData.needsShipping) { if (shippingData.needsShipping) {
@ -255,7 +258,7 @@ const PayPalComponent = ({
throw new Error(config.scriptData.labels.error.generic) throw new Error(config.scriptData.labels.error.generic)
} }
if (config.finalReviewEnabled) { if (!shouldHandleShippingInPayPal()) {
location.href = getCheckoutRedirectUrl(); location.href = getCheckoutRedirectUrl();
} else { } else {
setGotoContinuationOnError(true); setGotoContinuationOnError(true);
@ -297,8 +300,12 @@ const PayPalComponent = ({
onClick(); onClick();
}; };
const isVenmoAndVaultingEnabled = () => { const shouldHandleShippingInPayPal = () => {
return window.ppcpFundingSource === 'venmo' && config.scriptData.vaultingEnabled; if (config.finalReviewEnabled) {
return false;
}
return window.ppcpFundingSource !== 'venmo' || !config.scriptData.vaultingEnabled;
} }
let handleShippingOptionsChange = null; let handleShippingOptionsChange = null;
@ -306,7 +313,7 @@ const PayPalComponent = ({
let handleSubscriptionShippingOptionsChange = null; let handleSubscriptionShippingOptionsChange = null;
let handleSubscriptionShippingAddressChange = null; let handleSubscriptionShippingAddressChange = null;
if (shippingData.needsShipping && !config.finalReviewEnabled) { if (shippingData.needsShipping && shouldHandleShippingInPayPal()) {
handleShippingOptionsChange = async (data, actions) => { handleShippingOptionsChange = async (data, actions) => {
try { try {
const shippingOptionId = data.selectedShippingOption?.id; const shippingOptionId = data.selectedShippingOption?.id;
@ -447,7 +454,7 @@ const PayPalComponent = ({
if (config.scriptData.continuation) { if (config.scriptData.continuation) {
return true; return true;
} }
if (!config.finalReviewEnabled) { if (shouldHandleShippingInPayPal()) {
location.href = getCheckoutRedirectUrl(); location.href = getCheckoutRedirectUrl();
} }
return true; return true;
@ -493,8 +500,16 @@ const PayPalComponent = ({
onError={onClose} onError={onClose}
createSubscription={createSubscription} createSubscription={createSubscription}
onApprove={handleApproveSubscription} onApprove={handleApproveSubscription}
onShippingOptionsChange={handleSubscriptionShippingOptionsChange} onShippingOptionsChange={(data, actions) => {
onShippingAddressChange={handleSubscriptionShippingAddressChange} shouldHandleShippingInPayPal()
? handleSubscriptionShippingOptionsChange(data, actions)
: null;
}}
onShippingAddressChange={(data, actions) => {
shouldHandleShippingInPayPal()
? handleSubscriptionShippingAddressChange(data, actions)
: null;
}}
/> />
); );
} }
@ -508,8 +523,16 @@ const PayPalComponent = ({
onError={onClose} onError={onClose}
createOrder={createOrder} createOrder={createOrder}
onApprove={handleApprove} onApprove={handleApprove}
onShippingOptionsChange={handleShippingOptionsChange} onShippingOptionsChange={(data, actions) => {
onShippingAddressChange={handleShippingAddressChange} shouldHandleShippingInPayPal()
? handleShippingOptionsChange(data, actions)
: null;
}}
onShippingAddressChange={(data, actions) => {
shouldHandleShippingInPayPal()
? handleShippingAddressChange(data, actions)
: null;
}}
/> />
); );
} }