UNPKG

cometchat-react-ui-kit2

Version:

CometChat UI Kit for React App

165 lines (159 loc) 6.92 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.CometChatSmartReplies = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _ = require(".."); var _chat = require("@cometchat-pro/chat"); var _Shared = require("../../Shared"); var _CometChatMessageHelper = require("../CometChatMessageHelper"); var _style = require("./style"); var _close = _interopRequireDefault(require("./resources/close.svg")); var _hooks = require("./hooks"); var _this = void 0; 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; } var CometChatSmartReplies = function CometChatSmartReplies(props) { var messageObject = props.messageObject, customOutgoingMessageSound = props.customOutgoingMessageSound, enableSoundForMessages = props.enableSoundForMessages, loggedInUser = props.loggedInUser, onClick = props.onClick, onClose = props.onClose, style = props.style, theme = props.theme; var _theme = theme || new _Shared.CometChatTheme({}); var _React$useState = _react["default"].useState(null), _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2), chatWith = _React$useState2[0], setChatWith = _React$useState2[1]; var _React$useState3 = _react["default"].useState(null), _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2), chatWithId = _React$useState4[0], setChatWithId = _React$useState4[1]; var options = []; /** * Function to get Smart reply data from extensions */ var smartReplyData = (0, _.getExtensionsData)(messageObject, "smart-reply"); if (smartReplyData && Object.keys(smartReplyData).length && !smartReplyData.hasOwnProperty("error")) { options.push(smartReplyData["reply_positive"]); options.push(smartReplyData["reply_neutral"]); options.push(smartReplyData["reply_negative"]); } /** * Play Outgoing Audio sound on send */ var playOutgoingAudio = function playOutgoingAudio() { if (enableSoundForMessages) { if (customOutgoingMessageSound) { _Shared.CometChatSoundManager.play(_Shared.CometChatSoundManager.Sound.outgoingMessage, customOutgoingMessageSound); } else { _Shared.CometChatSoundManager.play(_Shared.CometChatSoundManager.Sound.outgoingMessage); } } }; (0, _hooks.Hooks)(messageObject, setChatWith, setChatWithId); /** * * @param {*} smartReply * performs send Message Function */ var sendMessage = function sendMessage(smartReply) { if (onClick) { return onClick(smartReply); } if (!smartReply.trim().length) { return false; } var textMessage = new _chat.CometChat.TextMessage(chatWithId, smartReply, chatWith); textMessage.setSender(loggedInUser); textMessage.setReceiver(chatWith); textMessage.setText(smartReply); textMessage.setSentAt((0, _CometChatMessageHelper.getUnixTimestamp)()); textMessage.setMuid(String((0, _CometChatMessageHelper.getUnixTimestamp)())); _.CometChatMessageEvents.emit(_.CometChatMessageEvents.onMessageSent, { message: textMessage, status: _Shared.MessageStatusConstants.inprogress }); playOutgoingAudio(); _chat.CometChat.sendMessage(textMessage).then(function (message) { var messageObject = _objectSpread({}, message); _.CometChatMessageEvents.emit(_.CometChatMessageEvents.onMessageSent, { message: messageObject, status: _Shared.MessageStatusConstants.success }); })["catch"](function (error) { _.CometChatMessageEvents.emit(_.CometChatMessageEvents.onMessageError, { message: textMessage, error: error }); }); if (onClose) { return onClose(); } }; /** * * @returns Single smart reply option */ var CometChatSmartReplyOptions = function CometChatSmartReplyOptions() { if (options && options.length) { return options.map(function (option) { return /*#__PURE__*/_react["default"].createElement(_Shared.CometChatListItem, { key: option.id, style: (0, _style.previewOptionStyle)(style, _theme), text: option, className: "smartreplies__option", onItemClick: sendMessage.bind(_this, option) }); }); } }; /** * * @returns items to be rendered */ var renderItems = function renderItems() { if (options !== null && options !== void 0 && options.length && messageObject !== null) { return /*#__PURE__*/_react["default"].createElement("div", { style: (0, _style.previewWrapperStyle)(style, _theme), className: "smartreplies__wrapper" }, /*#__PURE__*/_react["default"].createElement("div", { style: (0, _style.previewCloseStyle)(style, _close["default"]), onClick: onClose.bind(_this), className: "smartreplies__close" }), /*#__PURE__*/_react["default"].createElement("div", { style: (0, _style.previewOptionsWrapperStyle)(), className: "smartreplies__options" }, CometChatSmartReplyOptions())); } else { return null; } }; return renderItems(); }; exports.CometChatSmartReplies = CometChatSmartReplies; CometChatSmartReplies.defaultProps = { messageObject: null, customOutgoingMessageSound: null, enableSoundForMessages: false, loggedInUser: null, onClick: function onClick() {}, onClose: function onClose() {}, style: null }; CometChatSmartReplies.propTypes = { messageObject: _propTypes["default"].object, customOutgoingMessageSound: _propTypes["default"].string, enableSoundForMessages: _propTypes["default"].bool, loggedInUser: _propTypes["default"].object, onClick: _propTypes["default"].func, onClose: _propTypes["default"].func, style: _propTypes["default"].object };