UNPKG

@lskjs/bots-base

Version:

LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation

277 lines (223 loc) 11.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.useForm = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _createForm = require("./createForm"); var _renderForm = require("./renderForm"); var _excluded = ["i18", "req", "onChange", "onSubmit", "preview", "autosubmit"], _excluded2 = ["action", "field", "values"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var useForm = /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) { var i18, req, _ref$onChange, onChange, onSubmit, _ref$preview, preview, autosubmit, formSchema2, bot, query, path, ctx, _query$action, action, field, _query$values, values, otherQuery, form, callbackUserId, callbackMessage, repliedMessage, repliedMessageUserId, repliedMessageId, formMessageId, formMessageChatId, _repliedMessageId, _formMessageId, _formMessageChatId, nextField, text, _nextControl, _bot$client$telegram, nextControl, _formMessageId2, _formMessageChatId2, _bot$client$telegram2, _repliedMessageId2, _formMessageId3, _formMessageChatId3; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: i18 = _ref.i18, req = _ref.req, _ref$onChange = _ref.onChange, onChange = _ref$onChange === void 0 ? function () { return null; } : _ref$onChange, onSubmit = _ref.onSubmit, _ref$preview = _ref.preview, preview = _ref$preview === void 0 ? true : _ref$preview, autosubmit = _ref.autosubmit, formSchema2 = (0, _objectWithoutProperties2["default"])(_ref, _excluded); bot = req.bot, query = req.query, path = req.path, ctx = req.ctx; _query$action = query.action, action = _query$action === void 0 ? 'init' : _query$action, field = query.field, _query$values = query.values, values = _query$values === void 0 ? {} : _query$values, otherQuery = (0, _objectWithoutProperties2["default"])(query, _excluded2); // eslint-disable-next-line no-param-reassign if (!preview) autosubmit = true; req.log.trace(path, query, ctx.session, { action: action, field: field, values: values, callback_query: ctx.update && ctx.update.callback_query // ctx, }); form = (0, _createForm.createForm)(_objectSpread(_objectSpread({}, formSchema2), {}, { i18: i18, initialValues: values })); if (!(action === 'cancel')) { _context.next = 17; break; } callbackUserId = bot.getMessageUserId(ctx); callbackMessage = bot.getCallbackMessage(ctx); repliedMessage = bot.getRepliedMessage(callbackMessage); repliedMessageUserId = bot.getMessageUserId(repliedMessage); // console.log({ callbackUserId, callbackMessage, repliedMessage, repliedMessageUserId }); if (!(repliedMessageUserId !== callbackUserId)) { _context.next = 14; break; } req.log.warn('!acl'); return _context.abrupt("return", true); case 14: _context.next = 16; return ctx.deleteMessage()["catch"](function (err) { req.log.error('deleteMessage', err); }); case 16: return _context.abrupt("return", true); case 17: if (!(action === 'init')) { _context.next = 22; break; } repliedMessageId = bot.getRepliedMessageId(ctx) || bot.getMessageId(ctx); _context.next = 21; return bot.reply.apply(bot, [ctx].concat((0, _toConsumableArray2["default"])((0, _renderForm.renderForm)({ path: path, action: action, field: field, form: form, repliedMessageId: repliedMessageId })))); case 21: return _context.abrupt("return", true); case 22: if (!(action === 'start')) { _context.next = 26; break; } formMessageId = bot.getMessageId(bot.getCallbackMessage(ctx)); formMessageChatId = bot.getMessageChatId(bot.getCallbackMessage(ctx)); return _context.abrupt("return", ctx.redirect({ path: path, query: _objectSpread(_objectSpread({}, otherQuery), {}, { formMessageId: formMessageId, formMessageChatId: formMessageChatId, action: 'set', values: form.getValues() }) })); case 26: if (!(action === 'set')) { _context.next = 50; break; } _repliedMessageId = query.repliedMessageId, _formMessageId = query.formMessageId, _formMessageChatId = query.formMessageChatId; nextField = form.fields[form.fields.indexOf(field) + 1]; text = bot.getMessageText(ctx); if (!field) { _context.next = 44; break; } _context.next = 33; return form.isValidField(field, text); case 33: if (_context.sent) { _context.next = 38; break; } _nextControl = form.controls[field]; _context.next = 37; return bot.reply(ctx, "\u041D\u0435 \u0432\u0430\u043B\u0438\u0434\u043D\u043E\n".concat(_nextControl && _nextControl.placeholder)); case 37: return _context.abrupt("return", ctx.nextRedirect({ path: path, query: _objectSpread(_objectSpread({}, otherQuery), {}, { action: 'set', field: field, values: form.getValues() }) })); case 38: form.setFieldValue(field, text); _context.next = 41; return onChange({ field: field, rawValue: text, values: form.getValues() }); case 41: if (!preview) { _context.next = 44; break; } _context.next = 44; return (_bot$client$telegram = bot.client.telegram).editMessageText.apply(_bot$client$telegram, [_formMessageChatId, _formMessageId, null].concat((0, _toConsumableArray2["default"])((0, _renderForm.renderForm)({ path: path, action: action, field: field, form: form, repliedMessageId: _repliedMessageId })))); case 44: if (nextField) { _context.next = 46; break; } return _context.abrupt("return", ctx.redirect({ path: path, query: _objectSpread(_objectSpread({}, otherQuery), {}, { action: 'finish', values: form.getValues() }) })); case 46: nextControl = form.controls[nextField]; _context.next = 49; return bot.sendMessage(ctx, nextControl.placeholder); case 49: return _context.abrupt("return", ctx.nextRedirect({ path: path, query: _objectSpread(_objectSpread({}, otherQuery), {}, { action: 'set', field: nextField, values: form.getValues() }) })); case 50: if (!(action === 'finish' && autosubmit)) { _context.next = 55; break; } _formMessageId2 = query.formMessageId, _formMessageChatId2 = query.formMessageChatId; _context.next = 54; return bot.client.telegram.deleteMessage(_formMessageChatId2, _formMessageId2); case 54: return _context.abrupt("return", onSubmit(form.getValues())); case 55: if (!(action === 'finish')) { _context.next = 62; break; } _repliedMessageId2 = query.repliedMessageId, _formMessageId3 = query.formMessageId, _formMessageChatId3 = query.formMessageChatId; _context.next = 59; return (_bot$client$telegram2 = bot.client.telegram).editMessageText.apply(_bot$client$telegram2, [_formMessageChatId3, _formMessageId3, null].concat((0, _toConsumableArray2["default"])((0, _renderForm.renderForm)({ path: path, action: action, field: field, form: form, repliedMessageId: _repliedMessageId2 })))); case 59: _context.next = 61; return bot.reply(ctx, 'Если всё верно, подтвердите форму'); case 61: return _context.abrupt("return", true); case 62: if (!(action === 'submit')) { _context.next = 64; break; } return _context.abrupt("return", onSubmit(form.getValues())); case 64: req.log.error('!action', action); return _context.abrupt("return", false); case 66: case "end": return _context.stop(); } } }, _callee); })); return function useForm(_x) { return _ref2.apply(this, arguments); }; }(); exports.useForm = useForm; var _default = useForm; exports["default"] = _default; //# sourceMappingURL=useForm.js.map