void
createEdge: (edge: Edge) => void
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -14,10 +15,12 @@ export const TypebotContext = ({
children,
typebot,
apiHost,
+ isPreview,
}: {
children: ReactNode
typebot: PublicTypebot
apiHost: string
+ isPreview: boolean
}) => {
const [localTypebot, setLocalTypebot] = useState
(typebot)
@@ -42,6 +45,7 @@ export const TypebotContext = ({
value={{
typebot: localTypebot,
apiHost,
+ isPreview,
updateVariableValue,
createEdge,
}}
diff --git a/packages/bot-engine/src/services/integration.ts b/packages/bot-engine/src/services/integration.ts
index ea6b25df7..fb7c35732 100644
--- a/packages/bot-engine/src/services/integration.ts
+++ b/packages/bot-engine/src/services/integration.ts
@@ -15,6 +15,7 @@ import {
import { stringify } from 'qs'
import { sendRequest } from 'utils'
import { sendGaEvent } from '../../lib/gtag'
+import { sendInfoMessage } from './postMessage'
import { parseVariables, parseVariablesInObject } from './variable'
const safeEval = eval
@@ -24,6 +25,7 @@ type IntegrationContext = {
apiHost: string
typebotId: string
indices: Indices
+ isPreview: boolean
variables: Variable[]
updateVariableValue: (variableId: string, value: string) => void
}
@@ -177,8 +179,10 @@ const executeWebhook = async (
const sendEmail = async (
step: SendEmailStep,
- { variables, apiHost }: IntegrationContext
+ { variables, apiHost, isPreview }: IntegrationContext
) => {
+ if (isPreview) sendInfoMessage('Emails are not sent in preview mode')
+ if (isPreview) return step.outgoingEdgeId
const { options } = step
const { error } = await sendRequest({
url: `${apiHost}/api/integrations/email`,
diff --git a/packages/bot-engine/src/services/postMessage.ts b/packages/bot-engine/src/services/postMessage.ts
new file mode 100644
index 000000000..94244da4c
--- /dev/null
+++ b/packages/bot-engine/src/services/postMessage.ts
@@ -0,0 +1,3 @@
+export const sendInfoMessage = (typebotInfo: string) => {
+ parent.postMessage({ typebotInfo })
+}