@risecx/carespace-chat-ui
Version:
carespace-chat-ui React component
276 lines (262 loc) • 7.46 kB
JavaScript
;
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;