From ecbe4a9abffa8a7fd95e530ef40118367a46d689 Mon Sep 17 00:00:00 2001 From: Pedro Silva Date: Thu, 27 Jul 2023 17:13:53 +0100 Subject: [PATCH] * Fix add fix for Messages loading edge case and a Widget reload event listener. --- .../modules/ContextBootstrap/CheckoutBootstap.js | 1 - .../js/modules/Renderer/WidgetBuilder.js | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js b/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js index db1cba84f..85fdab285 100644 --- a/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js +++ b/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js @@ -6,7 +6,6 @@ import { PaymentMethods } from "../Helper/CheckoutMethodState"; import BootstrapHelper from "../Helper/BootstrapHelper"; -import {disable, enable} from "../Helper/ButtonDisabler"; class CheckoutBootstap { constructor(gateway, renderer, messages, spinner, errorHandler) { diff --git a/modules/ppcp-button/resources/js/modules/Renderer/WidgetBuilder.js b/modules/ppcp-button/resources/js/modules/Renderer/WidgetBuilder.js index cc5077d40..07d7c057c 100644 --- a/modules/ppcp-button/resources/js/modules/Renderer/WidgetBuilder.js +++ b/modules/ppcp-button/resources/js/modules/Renderer/WidgetBuilder.js @@ -9,12 +9,20 @@ class WidgetBuilder { this.buttons = new Map(); this.messages = new Map(); + this.renderEventName = 'ppcp-render'; + document.ppcpWidgetBuilderStatus = () => { console.log({ buttons: this.buttons, messages: this.messages, }); } + + jQuery(document) + .off(this.renderEventName) + .on(this.renderEventName, () => { + this.renderAll(); + }); } setPaypal(paypal) { @@ -84,6 +92,13 @@ class WidgetBuilder { const btn = this.paypal.Messages(entry.options); btn.render(entry.wrapper); + + // watchdog to try to handle some strange cases where the wrapper may not be present + setTimeout(() => { + if (!this.hasRendered(wrapper)) { + btn.render(entry.wrapper); + } + }, 100); } renderAllMessages() {