From 4f208a2d0546f0e21101288cfc7651542f54cbf9 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Wed, 1 Jun 2022 09:17:51 +0200 Subject: [PATCH] =?UTF-8?q?feat(engine):=20=E2=9A=A1=EF=B8=8F=20Redirect?= =?UTF-8?q?=20on=20current=20window=20when=20embedded?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/bot-engine/src/services/logic.ts | 25 +++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/bot-engine/src/services/logic.ts b/packages/bot-engine/src/services/logic.ts index 8d4c31918..c237ff3b3 100644 --- a/packages/bot-engine/src/services/logic.ts +++ b/packages/bot-engine/src/services/logic.ts @@ -126,10 +126,27 @@ const executeRedirect = ( { typebot: { variables } }: LogicContext ): EdgeId | undefined => { if (!step.options?.url) return step.outgoingEdgeId - const tempLink = document.createElement('a') - tempLink.href = sanitizeUrl(parseVariables(variables)(step.options?.url)) - tempLink.setAttribute('target', step.options.isNewTab ? '_blank' : '_self') - tempLink.click() + const formattedUrl = sanitizeUrl(parseVariables(variables)(step.options.url)) + const isEmbedded = window.parent && window.location !== window.top?.location + if (isEmbedded) { + if (step.options.isNewTab) + return ((window.top as Window).location.href = formattedUrl) + + try { + window.open(formattedUrl) + } catch (err) { + //Can't access to parent window + window.top?.postMessage( + { + from: 'typebot', + redirectUrl: formattedUrl, + }, + '*' + ) + } + } else { + window.open(formattedUrl, step.options.isNewTab ? '_blank' : '_self') + } return step.outgoingEdgeId }