From 4b4610f58119a919786a7dd297cbd11e3bb145fa Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 7 Jul 2021 13:09:33 +0100 Subject: [PATCH] Fix iframe preview loading bug in old client library versions --- .../design/AppPreview/CurrentItemPreview.svelte | 14 ++++++++++++-- .../components/design/AppPreview/iframeTemplate.js | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/components/design/AppPreview/CurrentItemPreview.svelte b/packages/builder/src/components/design/AppPreview/CurrentItemPreview.svelte index 12f5280b83..3b827f1f34 100644 --- a/packages/builder/src/components/design/AppPreview/CurrentItemPreview.svelte +++ b/packages/builder/src/components/design/AppPreview/CurrentItemPreview.svelte @@ -73,7 +73,17 @@ // Initialise the app when mounted iframe.contentWindow.addEventListener( "ready", - () => refreshContent(strippedJson), + () => { + loading = false + refreshContent(strippedJson) + }, + { once: true } + ) + + // Use iframe loading event to support old client versions + iframe.contentWindow.addEventListener( + "iframe-loaded", + () => (loading = false), { once: true } ) @@ -98,7 +108,7 @@ idToDelete = data.id confirmDeleteDialog.show() } else if (type === "preview-loaded") { - loading = false + // loading = false } else { console.warning(`Client sent unknown event type: ${type}`) } diff --git a/packages/builder/src/components/design/AppPreview/iframeTemplate.js b/packages/builder/src/components/design/AppPreview/iframeTemplate.js index 81b9a9c86f..d65916145b 100644 --- a/packages/builder/src/components/design/AppPreview/iframeTemplate.js +++ b/packages/builder/src/components/design/AppPreview/iframeTemplate.js @@ -64,6 +64,7 @@ export default ` if (window.loadBudibase) { window.loadBudibase() document.documentElement.classList.add("loaded") + window.dispatchEvent(new Event("iframe-loaded")) } else { throw "The client library couldn't be loaded" }