From 0f7a646753b7f31ef400b60cc048d020e200f91c Mon Sep 17 00:00:00 2001 From: Lukas Boehler Date: Fri, 26 Jul 2024 09:59:32 +0200 Subject: [PATCH] Update GleapFrameManager.js --- src/GleapFrameManager.js | 42 ++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/GleapFrameManager.js b/src/GleapFrameManager.js index 107caca..feb1c4f 100644 --- a/src/GleapFrameManager.js +++ b/src/GleapFrameManager.js @@ -24,6 +24,7 @@ export default class GleapFrameManager { frameUrl = "https://messenger-app.gleap.io"; gleapFrameContainer = null; gleapFrame = null; + comReady = false; injectedFrame = false; widgetOpened = false; listeners = []; @@ -57,14 +58,14 @@ export default class GleapFrameManager { function appHeight() { try { const doc = document.documentElement; - doc.style.setProperty('--glvh', (window.innerHeight * .01) + 'px'); - } catch (e) { } + doc.style.setProperty("--glvh", window.innerHeight * 0.01 + "px"); + } catch (e) {} } try { - window.addEventListener('resize', appHeight); + window.addEventListener("resize", appHeight); appHeight(); - } catch (e) { } + } catch (e) {} } } @@ -73,7 +74,11 @@ export default class GleapFrameManager { } isSurvey() { - return this.appMode === "survey" || this.appMode === "survey_full" || this.appMode === "survey_web"; + return ( + this.appMode === "survey" || + this.appMode === "survey_full" || + this.appMode === "survey_web" + ); } setAppMode(appMode) { @@ -84,7 +89,9 @@ export default class GleapFrameManager { ".gleap-frame-container-inner" ); if ( - (this.appMode === "widget" || this.appMode === "survey_full" || this.appMode === "survey_web") && + (this.appMode === "widget" || + this.appMode === "survey_full" || + this.appMode === "survey_web") && innerContainer ) { innerContainer.style.maxHeight = `${widgetMaxHeight}px`; @@ -173,8 +180,7 @@ export default class GleapFrameManager { showImage = (url) => { runFunctionWhenDomIsReady(() => { var elem = document.createElement("div"); - elem.className = - "gleap-image-view"; + elem.className = "gleap-image-view"; elem.innerHTML = `
`; @@ -226,9 +232,9 @@ export default class GleapFrameManager { const flowConfig = GleapConfigManager.getInstance().getFlowConfig(); if ( flowConfig.feedbackButtonPosition === - GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC || + GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC || flowConfig.feedbackButtonPosition === - GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM + GleapFeedbackButtonManager.FEEDBACK_BUTTON_CLASSIC_BOTTOM ) { styleToApply = classicStyle; } @@ -399,14 +405,14 @@ export default class GleapFrameManager { sendMessage(data, queue = false) { try { this.gleapFrame = document.querySelector(".gleap-frame"); - if (this.gleapFrame && this.gleapFrame.contentWindow) { + if (this.comReady && this.gleapFrame && this.gleapFrame.contentWindow) { this.gleapFrame.contentWindow.postMessage(JSON.stringify(data), "*"); } else { if (queue) { this.queue.push(data); } } - } catch (e) { } + } catch (e) {} } sendSessionUpdate() { @@ -459,6 +465,7 @@ export default class GleapFrameManager { // Listen for messages. this.addMessageListener((data) => { if (data.name === "ping") { + this.comReady = true; this.sendConfigUpdate(); this.sendSessionUpdate(); this.workThroughQueue(); @@ -517,7 +524,9 @@ export default class GleapFrameManager { ".gleap-frame-container-inner" ); if ( - (this.appMode === "survey" || this.appMode === "survey_full" || this.appMode === "survey_web") && + (this.appMode === "survey" || + this.appMode === "survey_full" || + this.appMode === "survey_web") && innerContainer ) { innerContainer.style.maxHeight = `${this.frameHeight}px`; @@ -590,7 +599,10 @@ export default class GleapFrameManager { // Add window message listener. window.addEventListener("message", (event) => { - if ((event.origin !== this.frameUrl && event.origin !== GleapBannerManager.getInstance().bannerUrl)) { + if ( + event.origin !== this.frameUrl && + event.origin !== GleapBannerManager.getInstance().bannerUrl + ) { return; } @@ -601,7 +613,7 @@ export default class GleapFrameManager { this.listeners[i](data); } } - } catch (exp) { } + } catch (exp) {} }); }