UNPKG

ringcentral-personal-chatbot

Version:
117 lines (94 loc) 3.55 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty")); var _pick2 = _interopRequireDefault(require("lodash/pick")); var _ringcentral = require("../models/ringcentral"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } const supportedActions = ['bot-signature-switch', 'bot-switch', 'get-user', 'switch-reply-without-mention-in-team']; const validProps = ['id', 'name', 'firstName', 'lastName', 'email', 'enabled', 'signed', 'privateChatOnly', 'lastUseTime', 'tokenUpdateTime', 'data']; var _default = async (req, res) => { const { user } = req; if (!user) { res.status(401); return res.send('please login first'); } const { body = {} } = req; const { action, update } = body; if (!supportedActions.includes(action)) { res.status(400); return res.send('not supported'); } const { id } = user; let result; if (action === 'get-user') { result = await _ringcentral.User.findByPk(id).catch(console.error); result = (0, _pick2.default)(result || {}, validProps); if ((0, _isEmpty2.default)(result)) { res.status(401); return res.send('user not exist'); } } else if (action === 'bot-signature-switch') { result = await _ringcentral.User.update({ signed: update.signed }, { where: { id } }).catch(console.error); } else if (action === 'bot-switch') { const enabled = !!update.enabled; const user = await _ringcentral.User.findByPk(id).catch(console.error); if (enabled || !user) { res.status(401); return res.send('user not find'); } if (user.enabled && !enabled) { await _ringcentral.User.update({ enabled: false, turnOffDesc: 'self' }, { where: { id: user.id } }); await user.ensureWebHook(true); } result = user; } else if (action === 'switch-reply-without-mention-in-team') { const enabled = !!update; const user = await _ringcentral.User.findByPk(id).catch(console.error); if (!user) { res.status(401); return res.send('user not find'); } result = await _ringcentral.User.update({ data: _objectSpread(_objectSpread({}, user.data), {}, { replyWithoutMentionInTeam: enabled }) }, { where: { id } }).catch(console.error); } res.send({ status: 0, result }); }; exports.default = _default;