2
0

fix(webhook): 🐛 Sample result w/ loops

This commit is contained in:
Baptiste Arnaud
2022-03-21 18:52:24 +01:00
parent 7399140e49
commit 11101a4600

View File

@ -65,32 +65,36 @@ const getSampleValue = (step: InputStep) => {
const getPreviousInputSteps =
(typebot: Pick<Typebot | PublicTypebot, 'blocks' | 'variables' | 'edges'>) =>
({ blockId, stepId }: { blockId: string; stepId?: string }): InputStep[] => {
({ blockId }: { blockId: string }): InputStep[] => {
const previousInputSteps = getPreviousInputStepsInBlock(typebot)({
blockId,
stepId,
})
const previousBlockIds = getPreviousBlockIds(typebot)(blockId)
return [
...previousInputSteps,
...previousBlockIds.flatMap((blockId) =>
getPreviousInputSteps(typebot)({ blockId })
getPreviousInputStepsInBlock(typebot)({ blockId })
),
]
}
const getPreviousBlockIds =
(typebot: Pick<Typebot | PublicTypebot, 'blocks' | 'variables' | 'edges'>) =>
(
typebot: Pick<Typebot | PublicTypebot, 'blocks' | 'variables' | 'edges'>,
existingBlockIds?: string[]
) =>
(blockId: string): string[] => {
const previousBlocks = typebot.edges.reduce<string[]>(
(blockIds, edge) =>
(!existingBlockIds || !existingBlockIds.includes(edge.from.blockId)) &&
edge.to.blockId === blockId
? [...blockIds, edge.from.blockId]
: blockIds,
[]
)
const newBlocks = [...(existingBlockIds ?? []), ...previousBlocks]
return previousBlocks.concat(
previousBlocks.flatMap(getPreviousBlockIds(typebot))
previousBlocks.flatMap(getPreviousBlockIds(typebot, newBlocks))
)
}