UNPKG

@risecx/carespace-chat-ui

Version:

carespace-chat-ui React component

276 lines (262 loc) 7.46 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var handler = { text: function text(message, author) { if (author === void 0) { author = 'them'; } var text = null; if (message.hasOwnProperty('payloadTitle')) { text = message.payloadTitle; } else { text = message.text || message.data.text; } return { author: message.author || author, type: 'text', user: message.user, data: { text: text }, _id: message._id, favorite: message.favorite, sent_timestamp: message.sent_timestamp }; }, file: function file(data, author) { if (author === void 0) { author = 'them'; } var _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: author, type: 'file', data: data, _id: _id, favorite: favorite, sent_timestamp: sent_timestamp }; }, card: function card(data) { var _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: 'them', type: 'card', data: data, _id: _id, favorite: favorite, sent_timestamp: sent_timestamp }; }, list: function list(data) { var _data$attachment$payl = data.attachment.payload, buttons = _data$attachment$payl.buttons, elements = _data$attachment$payl.elements, _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: 'them', type: 'list', _id: _id, favorite: favorite, sent_timestamp: sent_timestamp, data: { buttons: buttons, elements: elements } }; }, quickResponse: function quickResponse(data) { var text = data.text, buttons = data.quick_replies, _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: 'them', type: 'quickResponse', _id: _id, favorite: favorite, sent_timestamp: sent_timestamp, data: { text: text, buttons: buttons } }; }, gallery: function gallery(data) { var _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: 'them', type: 'gallery', data: data, _id: _id, favorite: favorite, sent_timestamp: sent_timestamp }; }, video: function video(data) { var _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: 'them', type: 'video', data: data, _id: _id, favorite: favorite, sent_timestamp: sent_timestamp }; }, videoList: function videoList(data) { var _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: 'them', type: 'videoList', data: data, _id: _id, favorite: favorite, sent_timestamp: sent_timestamp }; }, image: function image(data) { var _data$attachment$payl2 = data.attachment.payload, url = _data$attachment$payl2.url, settings = _data$attachment$payl2.settings, _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: 'them', type: 'image', _id: _id, favorite: favorite, sent_timestamp: sent_timestamp, data: { url: url, settings: settings } }; }, generic: function generic(data) { var elements = data.attachment.payload.elements, _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return elements.length > 1 ? handler.gallery({ elements: elements, _id: _id, favorite: favorite, sent_timestamp: sent_timestamp }) : handler.card(_extends({}, elements[0], { _id: _id, favorite: favorite, sent_timestamp: sent_timestamp })); }, button: function button(data) { console.log('render Button', data); var _data$attachment$payl3 = data.attachment.payload, quick_replies = _data$attachment$payl3.buttons, text = _data$attachment$payl3.text, _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return handler.quickResponse({ text: text, quick_replies: quick_replies, _id: _id, favorite: favorite, sent_timestamp: sent_timestamp }); }, menu: function menu(data) { var text = data.text, buttons = data.menus, _id = data._id, favorite = data.favorite, sent_timestamp = data.sent_timestamp; return { author: 'them', type: 'menu', _id: _id, favorite: favorite, sent_timestamp: sent_timestamp, data: { text: text, buttons: buttons } }; }, typing: function typing(data) { return data; } }; var __getMessageType = function __getMessageType(message) { if (message.attachment && message.attachment.type === 'image') return 'image'; if (message.attachment && message.attachment.type === 'template') return message.attachment.payload.template_type; if (message.text && message.quick_replies) return 'quickResponse'; if (message.text && message.menus) return 'menu'; if (message.text && !message.quick_replies || message.payloadTitle) return 'text'; if (message.type === 'typing') return message.type;else throw new Error('Unknown Message Type'); }; var receiveMessage = function receiveMessage(message) { try { if (message.type === 'message' || message.type === 'message_received' || message.type === 'typing') { var type = __getMessageType(message); return handler[type](message); } } catch (error) { console.error('reveiced', error); } }; var getStartMessage = function getStartMessage() { return { author: 'me', type: 'button', data: { payload: 'GET_STARTED', title: "Let's get started!" } }; }; var getHistory = function getHistory(histories) { if (histories === void 0) { histories = []; } // let removePayloadMessage = history => { // return ( // history.message.type === "message" || // (history.message.type === "message_received" && // history.message.hasOwnProperty("author")) // ); // }; // // return histories.filter(removePayloadMessage).map(history => { return histories.map(function (history) { history.message.author = history.message.hasOwnProperty('to') ? 'them' : 'me'; return receiveMessage(_extends({}, history.message, { _id: history._id, favorite: history.favorite, sent_timestamp: history.message.sent_timestamp })); }); }; var _default = { handler: handler, receiveMessage: receiveMessage, getStartMessage: getStartMessage, getHistory: getHistory }; exports["default"] = _default; module.exports = exports.default;