UNPKG

@botonic/plugin-flow-builder

Version:

Use Flow Builder to show your contents

41 lines (33 loc) 1.3 kB
import { ActionRequest } from '@botonic/react' import { FlowBuilderApi } from '../api' import { FlowContent } from '../content-fields' import { EventAction, trackEvent } from '../tracking' import { FlowBuilderContext } from './index' export async function getContentsByFallback({ cmsApi, flowBuilderPlugin, request, }: FlowBuilderContext): Promise<FlowContent[]> { const fallbackNode = await getFallbackNode(cmsApi, request) const fallbackContents = await flowBuilderPlugin.getContentsByNode(fallbackNode) return fallbackContents } async function getFallbackNode(cmsApi: FlowBuilderApi, request: ActionRequest) { if (request.session.user.extra_data?.isFirstFallbackOption === undefined) { request.session.user.extra_data = { ...request.session.user.extra_data, isFirstFallbackOption: true, } } const isFirstFallbackOption = !!request.session.user.extra_data.isFirstFallbackOption const fallbackNode = cmsApi.getFallbackNode(isFirstFallbackOption) request.session.user.extra_data.isFirstFallbackOption = !isFirstFallbackOption await trackEvent(request, EventAction.Fallback, { userInput: request.input.data, fallbackOut: isFirstFallbackOption ? 1 : 2, fallbackMessageId: request.input.message_id, }) return fallbackNode }