UNPKG

@risecx/carespace-chat-ui

Version:

carespace-chat-ui React component

163 lines (133 loc) 5.45 kB
import _regeneratorRuntime from "@babel/runtime/regenerator"; function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } import { reactLocalStorage } from 'reactjs-localstorage'; import { v4 } from 'uuid'; import axios from 'axios'; var MessageService = /*#__PURE__*/function () { function MessageService(_ref, WSInstance) { var adapter = _ref.adapter, urlAPI = _ref.urlAPI, helloMessage = _ref.helloMessage; this.adapter = adapter; this.urlAPI = urlAPI; this.WSInstance = WSInstance; this.helloMessage = helloMessage || "My name is Amanda, I just noticed that I don't know you yet... Please fill this formulary and let me know you better."; } var _proto = MessageService.prototype; _proto.sendMessage = function sendMessage(message) { this.WSInstance.sendMessage(this.__beforeSendMessage(message)); }; _proto.receiveMessage = function receiveMessage(message) { message = message.hasOwnProperty('sent_timestamp') ? message : Object.assign(message, { sent_timestamp: new Date().getTime() }); return this.adapter.receiveMessage(message); }; _proto.attachFile = function attachFile(file) { return this.adapter.handler.file(file, 'me'); }; _proto.quickReply = function quickReply(_ref2, silently) { var payload = _ref2.payload, title = _ref2.title; if (silently === void 0) { silently = false; } var id = this.getUserData(); this.WSInstance.sendMessage(JSON.stringify({ author: 'me', channel: 'socket', type: silently ? 'postback' : 'message', user: id, payloadTitle: title, text: payload })); return { author: 'me', channel: 'socket', type: 'text', sent_timestamp: new Date().getTime(), _id: v4(), data: { text: title } }; }; _proto.__beforeSendMessage = function __beforeSendMessage(message) { if (message.type === 'identify') { return JSON.stringify(message); } var text = message.text || message.data.text; var id = this.getUserData(); return JSON.stringify({ author: 'me', channel: 'socket', type: 'message', user: id, text: text }); }; _proto.isAnonymous = function isAnonymous() { return reactLocalStorage.get('isAnonymous'); }; _proto.getUserData = function getUserData() { return reactLocalStorage.get('userId'); }; _proto.setUserObject = function setUserObject(user) { var userlocal = reactLocalStorage.get('user'); if (!userlocal) { reactLocalStorage.setObject('user', user); } }; _proto.getStartedMessage = function getStartedMessage() { return [this.adapter.getStartMessage()]; }; _proto.getMessageHistory = function getMessageHistory() { var _this = this; var id = this.getUserData(); return new Promise( /*#__PURE__*/function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(resolve, reject) { var _yield$axios$post, data; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!id) resolve([]); _context.prev = 1; _context.next = 4; return axios.post(_this.urlAPI + "/webchat/history", { user: id }); case 4: _yield$axios$post = _context.sent; data = _yield$axios$post.data; resolve(_this.adapter.getHistory(data.history)); _context.next = 12; break; case 9: _context.prev = 9; _context.t0 = _context["catch"](1); reject(_context.t0); case 12: case "end": return _context.stop(); } } }, _callee, null, [[1, 9]]); })); return function (_x, _x2) { return _ref3.apply(this, arguments); }; }()); }; _createClass(MessageService, [{ key: "WsInstance", set: function set(WSInstance) { this.WSInstance = WSInstance; } }]); return MessageService; }(); export { MessageService as default };