From 86117d6d3c9852551c529826c46999a5a24f8c80 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Thu, 31 Mar 2022 10:33:35 +0200 Subject: [PATCH] =?UTF-8?q?fix(engine):=20=F0=9F=90=9B=20Webhook=20call=20?= =?UTF-8?q?on=20linked=20typebot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/bot-engine/src/components/ChatBlock/ChatBlock.tsx | 5 ++++- packages/bot-engine/src/contexts/TypebotContext.tsx | 5 +++++ packages/bot-engine/src/services/logic.ts | 5 ++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/bot-engine/src/components/ChatBlock/ChatBlock.tsx b/packages/bot-engine/src/components/ChatBlock/ChatBlock.tsx index 301746053..75d32bdfc 100644 --- a/packages/bot-engine/src/components/ChatBlock/ChatBlock.tsx +++ b/packages/bot-engine/src/components/ChatBlock/ChatBlock.tsx @@ -42,6 +42,7 @@ export const ChatBlock = ({ onBlockEnd, }: ChatBlockProps) => { const { + currentTypebotId, typebot, updateVariableValue, createEdge, @@ -50,6 +51,7 @@ export const ChatBlock = ({ onNewLog, injectLinkedTypebot, linkedTypebots, + setCurrentTypebotId, } = useTypebot() const { resultValues, updateVariables } = useAnswers() const [processedSteps, setProcessedSteps] = useState([]) @@ -110,6 +112,7 @@ export const ChatBlock = ({ injectLinkedTypebot, onNewLog, createEdge, + setCurrentTypebotId, }) nextEdgeId ? onBlockEnd(nextEdgeId, linkedTypebot) : displayNextStep() } @@ -118,7 +121,7 @@ export const ChatBlock = ({ step: currentStep, context: { apiHost, - typebotId: typebot.typebotId, + typebotId: currentTypebotId, blockId: currentStep.blockId, stepId: currentStep.id, variables: typebot.variables, diff --git a/packages/bot-engine/src/contexts/TypebotContext.tsx b/packages/bot-engine/src/contexts/TypebotContext.tsx index 88fdd5866..c5c910d04 100644 --- a/packages/bot-engine/src/contexts/TypebotContext.tsx +++ b/packages/bot-engine/src/contexts/TypebotContext.tsx @@ -13,10 +13,12 @@ export type LinkedTypebot = Pick< 'id' | 'blocks' | 'variables' | 'edges' > const typebotContext = createContext<{ + currentTypebotId: string typebot: PublicTypebot linkedTypebots: LinkedTypebot[] apiHost: string isPreview: boolean + setCurrentTypebotId: (id: string) => void updateVariableValue: (variableId: string, value: string) => void createEdge: (edge: Edge) => void injectLinkedTypebot: (typebot: Typebot | PublicTypebot) => LinkedTypebot @@ -40,6 +42,7 @@ export const TypebotContext = ({ }) => { const [localTypebot, setLocalTypebot] = useState(typebot) const [linkedTypebots, setLinkedTypebots] = useState([]) + const [currentTypebotId, setCurrentTypebotId] = useState(typebot.id) useEffect(() => { setLocalTypebot((localTypebot) => ({ @@ -95,6 +98,8 @@ export const TypebotContext = ({ createEdge, injectLinkedTypebot, onNewLog, + currentTypebotId, + setCurrentTypebotId, }} > {children} diff --git a/packages/bot-engine/src/services/logic.ts b/packages/bot-engine/src/services/logic.ts index 98d745dde..6f355d017 100644 --- a/packages/bot-engine/src/services/logic.ts +++ b/packages/bot-engine/src/services/logic.ts @@ -28,6 +28,7 @@ type LogicContext = { apiHost: string typebot: PublicTypebot linkedTypebots: LinkedTypebot[] + setCurrentTypebotId: (id: string) => void updateVariableValue: (variableId: string, value: string) => void updateVariables: (variables: VariableWithValue[]) => void injectLinkedTypebot: (typebot: Typebot | PublicTypebot) => LinkedTypebot @@ -142,7 +143,8 @@ const executeTypebotLink = async ( nextEdgeId?: EdgeId linkedTypebot?: PublicTypebot | LinkedTypebot }> => { - const { typebot, linkedTypebots, onNewLog, createEdge } = context + const { typebot, linkedTypebots, onNewLog, createEdge, setCurrentTypebotId } = + context const linkedTypebot = step.options.typebotId === 'current' ? typebot @@ -156,6 +158,7 @@ const executeTypebotLink = async ( }) return { nextEdgeId: step.outgoingEdgeId } } + setCurrentTypebotId(linkedTypebot.id) const nextBlockId = step.options.blockId ?? linkedTypebot.blocks.find((b) => b.steps.some((s) => s.type === 'start'))