From 93c6b40abca287cb581a5d683db0d61fc58a4efe Mon Sep 17 00:00:00 2001 From: Philipp Stracker Date: Fri, 7 Jun 2024 12:23:03 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Clean=20up=20the=20Google?= =?UTF-8?q?=20Pay=20preview=20button=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ppcp-googlepay/resources/js/boot-admin.js | 113 +++++++----------- 1 file changed, 46 insertions(+), 67 deletions(-) diff --git a/modules/ppcp-googlepay/resources/js/boot-admin.js b/modules/ppcp-googlepay/resources/js/boot-admin.js index a621b4ca8..8c024ecfc 100644 --- a/modules/ppcp-googlepay/resources/js/boot-admin.js +++ b/modules/ppcp-googlepay/resources/js/boot-admin.js @@ -3,92 +3,39 @@ import widgetBuilder from "../../../ppcp-button/resources/js/modules/Renderer/Wi import PreviewButton from "../../../ppcp-button/resources/js/modules/Renderer/PreviewButton"; import PreviewButtonManager from "../../../ppcp-button/resources/js/modules/Renderer/PreviewButtonManager"; -/** - * Button manager instance; we usually only need a single instance of this object. - * - * @see buttonManager() - */ -let managerInstance = null; - -/** - * Default attributes for new buttons. - */ -const defaultAttributes = { - button: { - style: { - type: 'pay', - color: 'black', - language: 'en' - } - } -}; - /** * Accessor that creates and returns a single PreviewButtonManager instance. */ const buttonManager = () => { - if (!managerInstance) { - managerInstance = new GooglePayPreviewButtonManager(); + if (!GooglePayPreviewButtonManager.instance) { + GooglePayPreviewButtonManager.instance = new GooglePayPreviewButtonManager(); } - return managerInstance; + return GooglePayPreviewButtonManager.instance; } -// ---------------------------------------------------------------------------- - - -/** - * A single GooglePay preview button instance. - */ -class GooglePayPreviewButton extends PreviewButton { - constructor(args) { - super(args); - - this.selector = `${args.selector}GooglePay` - } - - createNewWrapper() { - const element = super.createNewWrapper(); - element.addClass('ppcp-button-googlepay'); - return element; - } - - createButton() { - const button = new GooglepayButton( - 'preview', - null, - this.buttonConfig, - this.ppcpConfig, - ); - - button.init(this.configResponse); - - return button; - } -} - - -// ---------------------------------------------------------------------------- - - /** * Manages all GooglePay preview buttons on this page. */ class GooglePayPreviewButtonManager extends PreviewButtonManager { constructor() { + const defaultButton = { + style: { + type: 'pay', + color: 'black', + language: 'en' + } + }; + const args = { - // WooCommerce configuration object. + methodName: 'GooglePay', buttonConfig: window.wc_ppcp_googlepay_admin, - // Internal widgetBuilder instance. widgetBuilder, - // Default button styles. - defaultAttributes + defaultAttributes: {button: defaultButton} }; super(args); - - this.methodName = 'GooglePay'; } /** @@ -123,8 +70,40 @@ class GooglePayPreviewButtonManager extends PreviewButtonManager { } } + +/** + * A single GooglePay preview button instance. + */ +class GooglePayPreviewButton extends PreviewButton { + constructor(args) { + super(args); + + this.selector = `${args.selector}GooglePay` + } + + createNewWrapper() { + const element = super.createNewWrapper(); + element.addClass('ppcp-button-googlepay'); + + return element; + } + + createButton() { + const button = new GooglepayButton( + 'preview', + null, + this.buttonConfig, + this.ppcpConfig, + ); + + button.init(this.configResponse); + + return button; + } +} + // Initialize the preview button manager. -buttonManager() +buttonManager(); // todo - Expose button manager for testing. Remove this! window.gpay = buttonManager()