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() {