wingbot
Version:
Enterprise Messaging Bot Conversation Engine
67 lines (55 loc) • 1.38 kB
JavaScript
/*
* @author David Menger
*/
;
const Router = require('../Router');
const getCondition = require('../utils/getCondition');
const {
stateData,
cachedTranslatedCompilator,
processButtons
} = require('./utils');
/** @typedef {import('../BuildRouter').BotContext} BotContext */
/** @typedef {import('../Router').Resolver} Resolver */
/**
*
* @param {object} params
* @param {BotContext} context
* @returns {Resolver}
*/
function button (params, context) {
const {
isLastIndex
} = context;
const {
buttons = [],
text = null
} = params;
const compiledText = cachedTranslatedCompilator(text);
const condition = getCondition(params, context, 'button');
const ret = isLastIndex ? Router.END : Router.CONTINUE;
return (req, res) => {
if (buttons.length === 0) {
return ret;
}
if (condition !== null) {
if (!condition(req, res)) {
return ret;
}
}
const state = stateData(req, res, context.configuration);
const tpl = res.button(compiledText(state));
processButtons(
buttons,
state,
tpl,
req.senderId,
context,
req,
res
);
tpl.send();
return ret;
};
}
module.exports = button;