cometchat-react-ui-kit2
Version:
CometChat UI Kit for React App
154 lines (150 loc) • 7.43 kB
JavaScript
;
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;