From c007d7909c2793b266eb733c565a7ec52b87af4b Mon Sep 17 00:00:00 2001 From: Philipp Stracker Date: Fri, 16 Aug 2024 18:45:49 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Option=20to=20only=20set=20missing?= =?UTF-8?q?=20billing=20details?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/js/modules/Helper/PayerData.js | 10 +++++++--- modules/ppcp-googlepay/resources/js/GooglepayButton.js | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/ppcp-button/resources/js/modules/Helper/PayerData.js b/modules/ppcp-button/resources/js/modules/Helper/PayerData.js index da7eca4d6..1f97309c1 100644 --- a/modules/ppcp-button/resources/js/modules/Helper/PayerData.js +++ b/modules/ppcp-button/resources/js/modules/Helper/PayerData.js @@ -109,9 +109,13 @@ export const payerData = () => { /** * Updates the DOM with specific payer details. * - * @param {PayerDetails} newData - New payer details. + * @param {PayerDetails} newData - New payer details. + * @param {boolean} [overwriteExisting=false] - If set to true, all provided values will replace existing details. If false, or omitted, only undefined fields are updated. */ -export const setPayerData = ( newData ) => { +export const setPayerData = ( newData, overwriteExisting = false ) => { + // TODO: Check if we can add some kind of "filter" to allow customization of the data. + // Or add JS flags like "onlyUpdateMissing". + const setValue = ( path, field, value ) => { if ( null === value || undefined === value || ! field ) { return; @@ -121,7 +125,7 @@ export const setPayerData = ( newData ) => { value = value.phone_number?.national_number; } - if ( field.value !== value ) { + if ( overwriteExisting || ! field.value ) { field.value = value; } }; diff --git a/modules/ppcp-googlepay/resources/js/GooglepayButton.js b/modules/ppcp-googlepay/resources/js/GooglepayButton.js index cfd5d4b07..d518c1850 100644 --- a/modules/ppcp-googlepay/resources/js/GooglepayButton.js +++ b/modules/ppcp-googlepay/resources/js/GooglepayButton.js @@ -634,8 +634,8 @@ class GooglepayButton extends PaymentButton { const propagatePayerDataToForm = () => { const raw = paymentData?.paymentMethodData?.info?.billingAddress; - const payer = { + email_address: paymentData?.email, name: { given_name: raw.name.split( ' ' )[ 0 ], // Assuming first name is the first part surname: raw.name.split( ' ' ).slice( 1 ).join( ' ' ), // Assuming last name is the rest