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