UNPKG

@sendbird/uikit-react

Version:

Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

205 lines (197 loc) 13.8 kB
'use strict'; var React = require('react'); var index$1 = require('../../chunks/bundle-BF7YZzcg.js'); var ui_OpenchannelUserMessage = require('../../ui/OpenchannelUserMessage.js'); var ui_OpenChannelAdminMessage = require('../../ui/OpenChannelAdminMessage.js'); var ui_OpenchannelOGMessage = require('../../ui/OpenchannelOGMessage.js'); var ui_OpenchannelThumbnailMessage = require('../../ui/OpenchannelThumbnailMessage.js'); var ui_OpenchannelFileMessage = require('../../ui/OpenchannelFileMessage.js'); var ui_DateSeparator = require('../../ui/DateSeparator.js'); var ui_Label = require('../../chunks/bundle-V9WV5Q95.js'); var ui_MessageInput = require('../../ui/MessageInput.js'); var ui_FileViewer = require('../../ui/FileViewer.js'); var ui_Modal = require('../../chunks/bundle-CFFNW6rW.js'); var LocalizationContext = require('../../chunks/bundle-h50_nmgb.js'); var stringFormatterUtils = require('../../chunks/bundle-CeLR3bKQ.js'); var index = require('../../chunks/bundle-DVgR5TZ8.js'); var OpenChannel_context = require('../../chunks/bundle-Dv1YNPt9.js'); var useSendbird = require('../../chunks/bundle-COofPEZd.js'); require('../../chunks/bundle-D-3x7A5f.js'); require('../../chunks/bundle-BrwebjEC.js'); require('../../chunks/bundle-Bg4RmWAL.js'); require('../../chunks/bundle-7Do8-YdP.js'); require('../../ui/ImageRenderer.js'); require('../../chunks/bundle-DARrBu3h.js'); require('../../chunks/bundle-BCwMQ686.js'); require('../../ui/Icon.js'); require('../../chunks/bundle-cqJmw6Uw.js'); require('react-dom'); require('@sendbird/chat'); require('@sendbird/chat/openChannel'); require('../../ui/SortByRow.js'); require('../../chunks/bundle-DiIDBy_P.js'); require('../../ui/IconButton.js'); require('../../chunks/bundle-BmLRGWSs.js'); require('../../chunks/bundle-DJwM-4Nx.js'); require('@sendbird/chat/groupChannel'); require('../../ui/Loader.js'); require('../../ui/UserProfile.js'); require('../../chunks/bundle-DleWPlwE.js'); require('../../sendbirdSelectors.js'); require('../../chunks/bundle-DmHJHitA.js'); require('../../ui/Button.js'); require('../../chunks/bundle-CMqfhyYk.js'); require('../../chunks/bundle-BgHOQUzU.js'); require('../../chunks/bundle-DAGLOQMd.js'); require('../../chunks/bundle-YQErz66J.js'); require('../../chunks/bundle-Y21toamr.js'); require('../../utils/message/getOutgoingMessageState.js'); require('../../chunks/bundle-BmGoGKIb.js'); require('../../chunks/bundle-DWVemSTq.js'); require('../../ui/LinkLabel.js'); require('../../chunks/bundle-CQWNOGy2.js'); require('../../chunks/bundle-Bqvcf2Q0.js'); require('../../Message/context.js'); require('../../ui/MentionLabel.js'); require('../../ui/TextButton.js'); require('../../chunks/bundle-0q429p8L.js'); require('../../chunks/bundle-4uqfrr_c.js'); require('../../chunks/bundle-CsGI9I8g.js'); require('../../chunks/bundle-uWat6VZn.js'); require('dompurify'); require('../../chunks/bundle-BNgI3uHV.js'); require('../../chunks/bundle-BZQm-L-8.js'); require('../../chunks/bundle-Dl6KzIv6.js'); require('../../hooks/useModal.js'); require('../../chunks/bundle-CtWtrt8Y.js'); require('@sendbird/uikit-tools'); require('../../chunks/bundle-Cqe2f8mZ.js'); require('../../chunks/bundle-C3PgjHuf.js'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefaultCompat(React); function RemoveMessageModal(_a) { var message = _a.message, onCloseModal = _a.onCloseModal, onDeleteMessage = _a.onDeleteMessage; var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; return (React__default.default.createElement(ui_Modal.Modal, { onCancel: onCloseModal, onSubmit: onDeleteMessage, submitText: stringSet.MESSAGE_MENU__DELETE, titleText: stringFormatterUtils.getModalDeleteMessageTitle(stringSet, message) })); } var MessageTypes = { ADMIN: 'ADMIN', USER: 'USER', FILE: 'FILE', THUMBNAIL: 'THUMBNAIL', OG: 'OG', UNKNOWN: 'UNKNOWN', }; var SendingMessageStatus = { NONE: 'none', SUCCEEDED: 'succeeded', FAILED: 'failed', PENDING: 'pending', }; var getMessageType = function (message, options) { var _a, _b; var isOgMessageEnabledInOpenChannel = options === null || options === void 0 ? void 0 : options.isOgMessageEnabledInOpenChannel; if (((_a = message === null || message === void 0 ? void 0 : message.isUserMessage) === null || _a === void 0 ? void 0 : _a.call(message)) || (message === null || message === void 0 ? void 0 : message.messageType) === 'user') { return ((message === null || message === void 0 ? void 0 : message.ogMetaData) && isOgMessageEnabledInOpenChannel) ? MessageTypes.OG : MessageTypes.USER; } if ((_b = message === null || message === void 0 ? void 0 : message.isAdminMessage) === null || _b === void 0 ? void 0 : _b.call(message)) { return MessageTypes.ADMIN; } if ((message === null || message === void 0 ? void 0 : message.messageType) === 'file') { return (index.isImage(message.type) || index.isVideo(message.type)) ? MessageTypes.THUMBNAIL : MessageTypes.FILE; } return MessageTypes.UNKNOWN; }; function OpenChannelMessage(props) { var _a; var _b; var message = props.message, chainTop = props.chainTop, chainBottom = props.chainBottom, hasSeparator = props.hasSeparator, renderMessage = props.renderMessage; var _c = OpenChannel_context.useOpenChannelContext(), currentOpenChannel = _c.currentOpenChannel, deleteMessage = _c.deleteMessage, updateMessage = _c.updateMessage, resendMessage = _c.resendMessage; var _d = LocalizationContext.useLocalization(), dateLocale = _d.dateLocale, stringSet = _d.stringSet; var editDisabled = currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isFrozen; var state = useSendbird.useSendbird().state; var currentUserId = (_b = state === null || state === void 0 ? void 0 : state.config) === null || _b === void 0 ? void 0 : _b.userId; var isOgMessageEnabledInOpenChannel = state.config.openChannel.enableOgtag; var sender; if ((message === null || message === void 0 ? void 0 : message.messageType) !== 'admin') { sender = message === null || message === void 0 ? void 0 : message.sender; } var _e = React.useState(false), showEdit = _e[0], setShowEdit = _e[1]; var _f = React.useState(false), showRemove = _f[0], setShowRemove = _f[1]; var _g = React.useState(false), showFileViewer = _g[0], setShowFileViewer = _g[1]; var editMessageInputRef = React.useRef(null); var isByMe = false; if (sender && (message === null || message === void 0 ? void 0 : message.messageType) !== 'admin') { // pending and failed messages are by me isByMe = currentUserId === sender.userId || (message === null || message === void 0 ? void 0 : message.sendingStatus) === SendingMessageStatus.PENDING || (message === null || message === void 0 ? void 0 : message.sendingStatus) === SendingMessageStatus.FAILED; } if (renderMessage) { return (React__default.default.createElement("div", { className: "sendbird-open-channel-msg-hoc sendbird-msg--scroll-ref", "data-testid": "sendbird-message-hoc" }, renderMessage({ message: message, chainTop: chainTop, chainBottom: chainBottom }))); } if ((message === null || message === void 0 ? void 0 : message.messageType) === 'user' && showEdit) { return (React__default.default.createElement(ui_MessageInput, { isEdit: true, channel: currentOpenChannel, disabled: editDisabled, ref: editMessageInputRef, message: message, onUpdateMessage: function (_a) { var messageId = _a.messageId, message = _a.message; updateMessage(messageId, message); setShowEdit(false); }, onCancelEdit: function () { setShowEdit(false); } })); } return (React__default.default.createElement("div", { className: "sendbird-open-channel-msg-hoc sendbird-msg--scroll-ref", "data-testid": "sendbird-message-hoc" }, React__default.default.createElement(React__default.default.Fragment, null, hasSeparator && (message === null || message === void 0 ? void 0 : message.createdAt) && (React__default.default.createElement(ui_DateSeparator, null, React__default.default.createElement(ui_Label.Label, { type: ui_Label.LabelTypography.CAPTION_2, color: ui_Label.LabelColors.ONBACKGROUND_2 }, index$1.format(message === null || message === void 0 ? void 0 : message.createdAt, stringSet.DATE_FORMAT__MESSAGE_LIST__DATE_SEPARATOR, { locale: dateLocale })))), (_a = {}, _a[MessageTypes.ADMIN] = (function () { if ((message === null || message === void 0 ? void 0 : message.messageType) === 'admin') { return (React__default.default.createElement(ui_OpenChannelAdminMessage, { message: message })); } })(), _a[MessageTypes.FILE] = (function () { var _a; if ((message === null || message === void 0 ? void 0 : message.messageType) === 'file') { return (React__default.default.createElement(ui_OpenchannelFileMessage, { message: message, isOperator: currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isOperator((_a = message === null || message === void 0 ? void 0 : message.sender) === null || _a === void 0 ? void 0 : _a.userId), isEphemeral: currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isEphemeral, disabled: editDisabled, userId: currentUserId, showRemove: setShowRemove, resendMessage: resendMessage, chainTop: chainTop, chainBottom: chainBottom })); } })(), _a[MessageTypes.OG] = (function () { var _a; if ((message === null || message === void 0 ? void 0 : message.messageType) === 'user' && isOgMessageEnabledInOpenChannel) { return (React__default.default.createElement(ui_OpenchannelOGMessage, { message: message, isOperator: currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isOperator((_a = message === null || message === void 0 ? void 0 : message.sender) === null || _a === void 0 ? void 0 : _a.userId), isEphemeral: currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isEphemeral, userId: currentUserId, showEdit: setShowEdit, disabled: editDisabled, showRemove: setShowRemove, resendMessage: resendMessage, chainTop: chainTop, chainBottom: chainBottom })); } })(), _a[MessageTypes.THUMBNAIL] = (function () { var _a; if ((message === null || message === void 0 ? void 0 : message.messageType) === 'file') { return (React__default.default.createElement(ui_OpenchannelThumbnailMessage, { message: message, isOperator: currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isOperator((_a = message === null || message === void 0 ? void 0 : message.sender) === null || _a === void 0 ? void 0 : _a.userId), isEphemeral: currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isEphemeral, disabled: editDisabled, userId: currentUserId, showRemove: setShowRemove, resendMessage: resendMessage, onClick: setShowFileViewer, chainTop: chainTop, chainBottom: chainBottom })); } })(), _a[MessageTypes.USER] = (function () { var _a; if ((message === null || message === void 0 ? void 0 : message.messageType) === 'user') { return (React__default.default.createElement(ui_OpenchannelUserMessage, { message: message, isOperator: currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isOperator((_a = message === null || message === void 0 ? void 0 : message.sender) === null || _a === void 0 ? void 0 : _a.userId), isEphemeral: currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.isEphemeral, userId: currentUserId, disabled: editDisabled, showEdit: setShowEdit, showRemove: setShowRemove, resendMessage: resendMessage, chainTop: chainTop, chainBottom: chainBottom })); } })(), _a[MessageTypes.UNKNOWN] = (function () { // return ( // <OpenChannelUnknownMessage message={message} /> // ); })(), _a)[getMessageType(message, { isOgMessageEnabledInOpenChannel: isOgMessageEnabledInOpenChannel })], showRemove && (React__default.default.createElement(RemoveMessageModal, { message: message, onCloseModal: function () { return setShowRemove(false); }, onDeleteMessage: function () { if ((message === null || message === void 0 ? void 0 : message.messageType) !== 'admin') { deleteMessage(message); } } })), showFileViewer && (message === null || message === void 0 ? void 0 : message.messageType) === 'file' && (React__default.default.createElement(ui_FileViewer.default, { onClose: function () { return setShowFileViewer(false); }, message: message, onDelete: function () { return deleteMessage(message); }, isByMe: isByMe }))))); } module.exports = OpenChannelMessage; //# sourceMappingURL=OpenChannelMessage.js.map