@botonic/plugin-flow-builder
Version:
Use Flow Builder to show your contents
36 lines • 1.84 kB
JavaScript
import { __awaiter, __rest } from "tslib";
import { EventAction } from '@botonic/core';
import { getCommonFlowContentEventArgsForContentId, trackEvent, } from '../tracking';
export function getContentsByFallback({ cmsApi, flowBuilderPlugin, request, }) {
return __awaiter(this, void 0, void 0, function* () {
const fallbackNode = yield getFallbackNode(cmsApi, request);
const fallbackContents = yield flowBuilderPlugin.getContentsByNode(fallbackNode);
return fallbackContents;
});
}
function getFallbackNode(cmsApi, request) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
if (((_a = request.session.user.extra_data) === null || _a === void 0 ? void 0 : _a.isFirstFallbackOption) === undefined) {
request.session.user.extra_data = Object.assign(Object.assign({}, 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;
const { flowId, flowName, flowNodeId, flowNodeContentId } = getCommonFlowContentEventArgsForContentId(request, fallbackNode.id);
const event = {
action: EventAction.Fallback,
flowId,
flowName,
flowNodeId,
flowNodeContentId,
userInput: request.input.data,
fallbackOut: isFirstFallbackOption ? 1 : 2,
fallbackMessageId: request.input.message_id,
};
const { action } = event, eventArgs = __rest(event, ["action"]);
yield trackEvent(request, action, eventArgs);
return fallbackNode;
});
}
//# sourceMappingURL=fallback.js.map