import { ExecuteLogicResponse } from "../../../types"; import { SessionState, WaitBlock } from "indite-js/schemas"; import { parseVariables } from "indite-js/variables/parseVariables"; import { isNotDefined } from "indite-js/lib"; export const executeWait = ( state: SessionState, block: WaitBlock ): ExecuteLogicResponse => { const { variables } = state.botsQueue[0].bot; if (!block.options?.secondsToWaitFor) return { outgoingEdgeId: block.outgoingEdgeId }; const parsedSecondsToWaitFor = safeParseFloat( parseVariables(variables)(block.options.secondsToWaitFor) ); if (isNotDefined(parsedSecondsToWaitFor)) return { outgoingEdgeId: block.outgoingEdgeId }; return { outgoingEdgeId: block.outgoingEdgeId, clientSideActions: parsedSecondsToWaitFor || block.options?.shouldPause ? [ { type: "wait", wait: { secondsToWaitFor: parsedSecondsToWaitFor ?? 0 }, expectsDedicatedReply: block.options.shouldPause, }, ] : undefined, }; }; const safeParseFloat = (value: string) => { const parsedValue = parseFloat(value); return isNaN(parsedValue) ? undefined : parsedValue; };