@sendbird/uikit-react
Version:
Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
113 lines (106 loc) • 7.19 kB
JavaScript
'use strict';
var React = require('react');
var ui_ContextMenu = require('./bundle-DGV1BX0m.js');
var LocalizationContext = require('./bundle-DPDyqKIJ.js');
var useSendbird = require('./bundle-Bq15P9qk.js');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
var OpenChannelMessageStatusTypes = {
NONE: 'none',
PENDING: 'pending',
FAILED: 'failed',
CANCELED: 'canceled',
SUCCEEDED: 'succeeded',
};
var getSenderFromMessage = function (message) {
// @ts-ignore
return message.sender || message._sender;
};
var checkIsSent = function (status) { return (status === OpenChannelMessageStatusTypes.SUCCEEDED); };
var checkIsPending = function (status) { return (status === OpenChannelMessageStatusTypes.PENDING); };
var checkIsFailed = function (status) { return (status === OpenChannelMessageStatusTypes.FAILED); };
var checkIsByMe = function (message, userId) { return (getSenderFromMessage(message).userId === userId); };
var isFineCopy = function (_a) {
var _b;
var message = _a.message;
return ((message === null || message === void 0 ? void 0 : message.messageType) === 'user' && ((_b = message === null || message === void 0 ? void 0 : message.message) === null || _b === void 0 ? void 0 : _b.length) > 0);
};
var isFineResend = function (_a) {
var message = _a.message, status = _a.status, userId = _a.userId;
return checkIsByMe(message, userId)
&& checkIsFailed(status)
// @ts-ignore
&& (message === null || message === void 0 ? void 0 : message.isResendable);
};
var isFineEdit = function (_a) {
var _b;
var message = _a.message, status = _a.status, userId = _a.userId;
return checkIsByMe(message, userId) && checkIsSent(status) && ((_b = message === null || message === void 0 ? void 0 : message.isUserMessage) === null || _b === void 0 ? void 0 : _b.call(message));
};
var isFineDelete = function (_a) {
var message = _a.message, userId = _a.userId;
return checkIsByMe(message, userId);
};
var isFineDownload = function (_a) {
var _b;
var message = _a.message, status = _a.status;
if (((_b = message === null || message === void 0 ? void 0 : message.isFileMessage) === null || _b === void 0 ? void 0 : _b.call(message)) && checkIsSent(status)) {
return true;
}
return false;
};
var showMenuTrigger = function (props) {
var message = props.message, status = props.status, userId = props.userId;
// @ts-ignore
if (message.messageType === 'user') {
return (isFineDelete({ message: message, status: status, userId: userId })
|| isFineEdit({ message: message, status: status, userId: userId })
// @ts-ignore
|| isFineCopy({ message: message, status: status, userId: userId })
|| isFineResend({ message: message, status: status, userId: userId }));
}
else {
return (isFineDelete({ message: message, status: status, userId: userId })
|| isFineResend({ message: message, status: status, userId: userId }));
}
};
var OpenChannelMobileMenu = function (props) {
var message = props.message, parentRef = props.parentRef, resendMessage = props.resendMessage, showEdit = props.showEdit, showRemove = props.showRemove, copyToClipboard = props.copyToClipboard, hideMenu = props.hideMenu, _a = props.isEphemeral, isEphemeral = _a === void 0 ? false : _a;
var userMessage = message;
var status = message === null || message === void 0 ? void 0 : message.sendingStatus;
var stringSet = LocalizationContext.useLocalization().stringSet;
var userId = useSendbird.useSendbird().state.config.userId;
var fileMessage = message;
return (React__default.default.createElement(ui_ContextMenu.ContextMenu, { isOpen: true, menuItems: function () { return (React__default.default.createElement(ui_ContextMenu.MenuItems, { className: "sendbird-openchannel__mobile-menu", parentRef: parentRef, parentContainRef: parentRef, closeDropdown: hideMenu },
isFineCopy({ message: userMessage, userId: userId, status: status }) && (React__default.default.createElement(ui_ContextMenu.MenuItem$1, { className: "sendbird-openchannel-og-message__top__context-menu__copy", onClick: function () {
copyToClipboard === null || copyToClipboard === void 0 ? void 0 : copyToClipboard();
}, testID: "open_channel_mobile_context_menu_copy" },
React__default.default.createElement(React__default.default.Fragment, null, stringSet.CONTEXT_MENU_DROPDOWN__COPY))),
(!isEphemeral && isFineEdit({ message: message, userId: userId, status: status })) && (React__default.default.createElement(ui_ContextMenu.MenuItem$1, { className: "sendbird-openchannel-og-message__top__context-menu__edit", onClick: function () {
showEdit === null || showEdit === void 0 ? void 0 : showEdit();
}, testID: "open_channel_mobile_context_menu_edit" },
React__default.default.createElement(React__default.default.Fragment, null, stringSet.CONTEXT_MENU_DROPDOWN__EDIT))),
isFineResend({ message: message, userId: userId, status: status }) && (React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () {
resendMessage === null || resendMessage === void 0 ? void 0 : resendMessage();
}, testID: "open_channel_mobile_context_menu_resend" },
React__default.default.createElement(React__default.default.Fragment, null, stringSet.CONTEXT_MENU_DROPDOWN__RESEND))),
(!isEphemeral && isFineDelete({ message: message, userId: userId, status: status })) && (React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () {
showRemove === null || showRemove === void 0 ? void 0 : showRemove();
}, testID: "open_channel_mobile_context_menu_delete" },
React__default.default.createElement(React__default.default.Fragment, null, stringSet.CONTEXT_MENU_DROPDOWN__DELETE))),
isFineDownload({ message: message, status: status }) && (React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () {
hideMenu();
}, testID: "open_channel_mobile_context_menu_download_file" },
React__default.default.createElement("a", { className: "sendbird-openchannel__mobile-menu-hyperlink", rel: "noopener noreferrer", href: fileMessage === null || fileMessage === void 0 ? void 0 : fileMessage.url, target: "_blank" }, stringSet.CONTEXT_MENU_DROPDOWN__SAVE))))); } }));
};
exports.OpenChannelMobileMenu = OpenChannelMobileMenu;
exports.checkIsFailed = checkIsFailed;
exports.checkIsPending = checkIsPending;
exports.checkIsSent = checkIsSent;
exports.getSenderFromMessage = getSenderFromMessage;
exports.isFineCopy = isFineCopy;
exports.isFineDelete = isFineDelete;
exports.isFineEdit = isFineEdit;
exports.isFineResend = isFineResend;
exports.showMenuTrigger = showMenuTrigger;
//# sourceMappingURL=bundle-VChMoNJa.js.map