UNPKG

cometchat-react-ui-kit2

Version:

CometChat UI Kit for React App

154 lines (150 loc) 7.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Hooks = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _chat = require("@cometchat-pro/chat"); var _ = require("../.."); var _CometChatMessageTemplate = require("../CometChatMessageTemplate"); var _2 = require(".."); 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 Hooks = function Hooks(props, loggedInUser, setChatWith, setChatWithId, chatRef, setViewSticker, stickerTemplate, setActionSheetItems, setViewInputField, setViewAttachButton, openCreatePoll, fileInputHandler, shareCollaborativeDocument, shareCollaborativeWhiteboard, sendSticker) { var helper = function helper(type, item) { switch (type) { case _2.CometChatMessageTypes.file: case _2.CometChatMessageTypes.image: case _2.CometChatMessageTypes.audio: case _2.CometChatMessageTypes.video: return _objectSpread(_objectSpread({}, item), {}, { onActionClick: fileInputHandler }); case _2.CometChatCustomMessageTypes.poll: { return _objectSpread(_objectSpread({}, item), {}, { onActionClick: openCreatePoll }); } case _2.CometChatCustomMessageTypes.document: { return _objectSpread(_objectSpread({}, item), {}, { onActionClick: shareCollaborativeDocument }); } case _2.CometChatCustomMessageTypes.whiteboard: { return _objectSpread(_objectSpread({}, item), {}, { onActionClick: shareCollaborativeWhiteboard }); } case _2.CometChatCustomMessageTypes.sticker: { return _objectSpread(_objectSpread({}, item), {}, { onActionClick: sendSticker }); } default: break; } }; //fetch logged in user _react["default"].useEffect(function () { _chat.CometChat.getLoggedinUser().then(function (user) { return loggedInUser.current = user; }); }, []); _react["default"].useEffect(function () { //update receiver user if (props.user && props.user.uid) { chatRef.current = { chatWith: _.ReceiverTypeConstants.user, chatWithId: props.user.uid }; setChatWith(_.ReceiverTypeConstants.user); setChatWithId(props.user.uid); } else if (props.group && props.group.guid) { chatRef.current = { chatWith: _.ReceiverTypeConstants.group, chatWithId: props.group.guid }; setChatWith(_.ReceiverTypeConstants.group); setChatWithId(props.group.guid); } }, [props.user, props.group, setChatWith, setChatWithId, chatRef]); _react["default"].useEffect(function () { var stickerMessageTemplate = null; var textMessageTemplate = null; var actionItems = []; if (props.messageTypes && props.messageTypes.length) { var _Items; var Items = props.messageTypes.map(function (item, index) { if (item.onActionClick === null) { return helper(item.type, item); } return item; }); Items = (_Items = Items) === null || _Items === void 0 ? void 0 : _Items.filter(function (val) { var _props$excludeMessage; return !(props !== null && props !== void 0 && (_props$excludeMessage = props.excludeMessageTypes) !== null && _props$excludeMessage !== void 0 && _props$excludeMessage.includes(val === null || val === void 0 ? void 0 : val.type)); }); actionItems = Items.filter(function (item, index) { if ((item === null || item === void 0 ? void 0 : item.type) !== _.MessageTypeConstants.text && (item === null || item === void 0 ? void 0 : item.type) !== _.MessageTypeConstants.sticker) { return item; } }); textMessageTemplate = props.messageTypes.find(function (messageTemplate) { return messageTemplate.type === _.MessageTypeConstants.text; }); stickerMessageTemplate = props.messageTypes.find(function (messageTemplate) { return messageTemplate.type === _.MessageTypeConstants.sticker; }); } else { var _Items3, _Items4; var defaultTypes = (0, _CometChatMessageTemplate.getDefaultTypes)(); var _Items2 = defaultTypes.map(function (item, index) { if (item.onActionClick === null) { return helper(item.type, item); } return item; }); _Items2 = (_Items3 = _Items2) === null || _Items3 === void 0 ? void 0 : _Items3.filter(function (val) { var _props$excludeMessage2; return !(props !== null && props !== void 0 && (_props$excludeMessage2 = props.excludeMessageTypes) !== null && _props$excludeMessage2 !== void 0 && _props$excludeMessage2.includes(val === null || val === void 0 ? void 0 : val.type)); }); actionItems = (_Items4 = _Items2) === null || _Items4 === void 0 ? void 0 : _Items4.filter(function (item, index) { if ((item === null || item === void 0 ? void 0 : item.type) !== _.MessageTypeConstants.text && (item === null || item === void 0 ? void 0 : item.type) !== _.MessageTypeConstants.sticker) { return item; } }); textMessageTemplate = defaultTypes === null || defaultTypes === void 0 ? void 0 : defaultTypes.find(function (messageTemplate) { return (messageTemplate === null || messageTemplate === void 0 ? void 0 : messageTemplate.type) === _.MessageTypeConstants.text; }); stickerMessageTemplate = defaultTypes === null || defaultTypes === void 0 ? void 0 : defaultTypes.find(function (messageTemplate) { return (messageTemplate === null || messageTemplate === void 0 ? void 0 : messageTemplate.type) === _.MessageTypeConstants.sticker; }); } //if messageTypes is't contain text, hide message input box. if (textMessageTemplate) { setViewInputField(true); } else { setViewInputField(false); } //if messageTypes is't contain sticker, hide sticker. if (stickerMessageTemplate) { setViewSticker(true); stickerTemplate.current = stickerMessageTemplate; } else { setViewSticker(false); stickerTemplate.current = null; } //if message filters are set, show attachment button if (actionItems.length && !props.hideAttachment) { setViewAttachButton(true); setActionSheetItems(actionItems); } }, [props.messageTypes]); }; exports.Hooks = Hooks;