From fd156024d24375a4dc63bbd1eb9e8558b78d99f0 Mon Sep 17 00:00:00 2001
From: Pedro Silva
Date: Thu, 21 Sep 2023 15:46:20 +0100
Subject: [PATCH] Add GooglePay button preview reactiveness to settings.
---
.../ppcp-googlepay/resources/js/boot-admin.js | 31 +++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/modules/ppcp-googlepay/resources/js/boot-admin.js b/modules/ppcp-googlepay/resources/js/boot-admin.js
index 829eb0a2c..c952b7b3b 100644
--- a/modules/ppcp-googlepay/resources/js/boot-admin.js
+++ b/modules/ppcp-googlepay/resources/js/boot-admin.js
@@ -9,8 +9,10 @@ import widgetBuilder from "../../../ppcp-button/resources/js/modules/Renderer/Wi
let googlePayConfig;
let buttonQueue = [];
+ let activeButtons = {};
let bootstrapped = false;
+ // React to PayPal config changes.
jQuery(document).on('ppcp_paypal_render_preview', (ev, ppcpConfig) => {
if (bootstrapped) {
createButton(ppcpConfig);
@@ -21,11 +23,38 @@ import widgetBuilder from "../../../ppcp-button/resources/js/modules/Renderer/Wi
}
});
+ // React to GooglePay config changes.
+ jQuery([
+ '#ppcp-googlepay_button_enabled',
+ '#ppcp-googlepay_button_type',
+ '#ppcp-googlepay_button_color',
+ '#ppcp-googlepay_button_language',
+ '#ppcp-googlepay_button_shipping_enabled'
+ ].join(',')).on('change', () => {
+ for (const [selector, ppcpConfig] of Object.entries(activeButtons)) {
+ createButton(ppcpConfig);
+ }
+ });
+
+ const applyConfigOptions = function (buttonConfig) {
+ buttonConfig.button = buttonConfig.button || {};
+ buttonConfig.button.style = buttonConfig.button.style || {};
+ buttonConfig.button.style.type = jQuery('#ppcp-googlepay_button_type').val();
+ buttonConfig.button.style.color = jQuery('#ppcp-googlepay_button_color').val();
+ buttonConfig.button.style.language = jQuery('#ppcp-googlepay_button_language').val();
+ }
+
const createButton = function (ppcpConfig) {
const selector = ppcpConfig.button.wrapper + 'GooglePay';
+ if (!jQuery('#ppcp-googlepay_button_enabled').is(':checked')) {
+ jQuery(selector).remove();
+ return;
+ }
+
buttonConfig = JSON.parse(JSON.stringify(buttonConfig));
buttonConfig.button.wrapper = selector;
+ applyConfigOptions(buttonConfig);
const wrapperElement = ``;
@@ -43,6 +72,8 @@ import widgetBuilder from "../../../ppcp-button/resources/js/modules/Renderer/Wi
);
button.init(googlePayConfig);
+
+ activeButtons[selector] = ppcpConfig;
}
const bootstrap = async function () {