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" }