UNPKG

@sendbird/uikit-react

Version:

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

513 lines (498 loc) 42.2 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var LocalizationContext = require('../../chunks/bundle-DPDyqKIJ.js'); var ui_Label = require('../../chunks/bundle-zgmRG2KL.js'); var ui_Icon = require('../../ui/Icon.js'); var OpenChannelSettings_context = require('../context.js'); var OpenChannelSettings_components_OpenChannelProfile = require('./OpenChannelProfile.js'); var ui_Modal = require('../../chunks/bundle-DZlJeh0V.js'); var useSendbird = require('../../chunks/bundle-Bq15P9qk.js'); var OpenChannelSettings_components_ParticipantUI = require('../../chunks/bundle-CiIV14jC.js'); var ui_Accordion = require('../../ui/Accordion.js'); var ui_Button = require('../../ui/Button.js'); var ui_ContextMenu = require('../../chunks/bundle-DGV1BX0m.js'); var ui_IconButton = require('../../ui/IconButton.js'); var _tslib = require('../../chunks/bundle-Conb-pOy.js'); var ui_UserListItem = require('../../ui/UserListItem.js'); var utils = require('../../chunks/bundle-CkQrhwR6.js'); require('../../chunks/bundle-BbrBawlX.js'); require('../../chunks/bundle-Cyl6_qLo.js'); require('@sendbird/chat/openChannel'); require('../../chunks/bundle-Bnb8seJF.js'); require('../../chunks/bundle-t8BQsgL5.js'); require('../../chunks/bundle-B19RHFpR.js'); require('../../chunks/bundle-Cfh78Xnm.js'); require('@sendbird/chat'); require('@sendbird/chat/groupChannel'); require('../../ui/TextButton.js'); require('../../chunks/bundle-DurllD3r.js'); require('../../ui/OpenChannelAvatar.js'); require('../../chunks/bundle-B7KG10z2.js'); require('../../ui/ImageRenderer.js'); require('../../chunks/bundle-C99t7tzf.js'); require('../../chunks/bundle-Bvjprr6O.js'); require('./EditDetailsModal.js'); require('../../chunks/bundle-dUH189qO.js'); require('../../ui/Input.js'); require('react-dom'); require('../../chunks/bundle-Fv6PNPGZ.js'); require('../../ui/AccordionGroup.js'); require('../../ui/MutedAvatarOverlay.js'); require('../../ui/UserProfile.js'); require('../../sendbirdSelectors.js'); require('../../ui/SortByRow.js'); require('../../chunks/bundle-fYxs1lss.js'); require('../../utils/message/getOutgoingMessageState.js'); require('../../chunks/bundle-DAdgL6r8.js'); require('../../chunks/bundle-Dobj18FB.js'); require('../../chunks/bundle-CVJwHwWn.js'); require('../../ui/Checkbox.js'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefaultCompat(React); function DeleteChannel() { var _a = React.useState(false), showDeleteChannelModal = _a[0], setShowDeleteChannelModal = _a[1]; var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; var _b = useSendbird.useSendbird().state.config, isOnline = _b.isOnline, logger = _b.logger; var _c = OpenChannelSettings_context.useOpenChannelSettingsContext(), channel = _c.channel, onDeleteChannel = _c.onDeleteChannel; var deleteChannel = function () { channel === null || channel === void 0 ? void 0 : channel.delete().then(function (response) { logger.info('OpenChannelSettings: Delete channel success', response); if (onDeleteChannel) { onDeleteChannel(channel); } }).catch(function (error) { logger.warning('OpenChannelSettings: Delete channel failed', error); }); }; return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement("div", { className: "sendbird-openchannel-settings__panel-item\n sendbird-openchannel-settings__delete-channel\n ".concat(!isOnline ? 'sendbird-openchannel-settings__panel-item__disabled' : ''), role: "button", tabIndex: 0, onKeyDown: function () { if (!isOnline) { return; } setShowDeleteChannelModal(true); }, onClick: function () { if (!isOnline) { return; } setShowDeleteChannelModal(true); } }, React__default.default.createElement(ui_Icon.default, { type: ui_Icon.IconTypes.DELETE, fillColor: ui_Icon.IconColors.ERROR, className: [ 'sendbird-openchannel-settings__panel-icon-left', 'sendbird-openchannel-settings__panel-icon__delete', ].join(' '), height: "24px", width: "24px" }), React__default.default.createElement(ui_Label.Label, { type: ui_Label.LabelTypography.SUBTITLE_1, color: ui_Label.LabelColors.ONBACKGROUND_1 }, stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_PANEL)), showDeleteChannelModal && (React__default.default.createElement(ui_Modal.Modal, { isFullScreenOnMobile: true, onCancel: function () { setShowDeleteChannelModal(false); }, onSubmit: function () { deleteChannel(); }, titleText: stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_TITLE, submitText: stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_SUBMIT }, stringSet.OPEN_CHANNEL_SETTINGS__DELETE_CHANNEL_CONTEXT)))); } function OperatorListModal(_a) { var _b; var onCancel = _a.onCancel; var _c = React.useState([]), users = _c[0], setUsers = _c[1]; var _d = React.useState(null), operatorQuery = _d[0], setOperatorQuery = _d[1]; var channel = OpenChannelSettings_context.useOpenChannelSettingsContext().channel; 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 stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; React.useEffect(function () { var operatorListQuery = channel === null || channel === void 0 ? void 0 : channel.createOperatorListQuery({ limit: 20, }); if (operatorListQuery) { operatorListQuery.next().then(function (participants) { setUsers(participants); }); setOperatorQuery(operatorListQuery); } }, []); return (React__default.default.createElement("div", null, React__default.default.createElement(ui_Modal.Modal, { hideFooter: true, isFullScreenOnMobile: true, titleText: stringSet.OPEN_CHANNEL_SETTINGS__OPERATORS__TITLE_ALL, onCancel: onCancel }, React__default.default.createElement("div", { className: "sendbird-more-users__popup-scroll", onScroll: function (e) { var hasNext = operatorQuery === null || operatorQuery === void 0 ? void 0 : operatorQuery.hasNext; var target = e.target; var fetchMore = (target.clientHeight + target.scrollTop === target.scrollHeight); if (hasNext && fetchMore) { operatorQuery.next().then(function (o) { setUsers(_tslib.__spreadArray(_tslib.__spreadArray([], users, true), o, true)); }); } } }, users.map(function (operator) { return (React__default.default.createElement(ui_UserListItem.UserListItem, { currentUser: currentUserId, user: operator, key: operator.userId, action: function (_a) { var parentRef = _a.parentRef, actionRef = _a.actionRef; return (currentUserId !== (operator === null || operator === void 0 ? void 0 : operator.userId) ? (React__default.default.createElement(ui_ContextMenu.ContextMenu, { menuTrigger: function (toggleDropdown) { return (React__default.default.createElement(ui_IconButton, { className: "sendbird-user-message__more__menu", width: "32px", height: "32px", onClick: toggleDropdown }, React__default.default.createElement(ui_Icon.default, { width: "24px", height: "24px", type: ui_Icon.IconTypes.MORE, fillColor: ui_Icon.IconColors.CONTENT_INVERSE }))); }, menuItems: function (closeDropdown) { return (React__default.default.createElement(ui_ContextMenu.MenuItems, { parentContainRef: parentRef, parentRef: actionRef, closeDropdown: closeDropdown, openLeft: true }, React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () { channel === null || channel === void 0 ? void 0 : channel.removeOperators([operator.userId]).then(function () { setUsers(users.filter(function (_a) { var userId = _a.userId; return userId !== operator.userId; })); }); closeDropdown(); }, testID: "open_channel_setting_operator_context_menu_unregister_operator" }, stringSet.OPEN_CHANNEL_SETTING__MODERATION__UNREGISTER_OPERATOR))); } })) : React__default.default.createElement(React__default.default.Fragment, null)); } })); }))))); } function AddOperatorsModal(_a) { var onCancel = _a.onCancel, onSubmit = _a.onSubmit; var _b = React.useState([]), participants = _b[0], setParticipants = _b[1]; var _c = React.useState({}), selectedUsers = _c[0], setSelectedUsers = _c[1]; var _d = React.useState(null), participantQuery = _d[0], setParticipantQuery = _d[1]; var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; var channel = OpenChannelSettings_context.useOpenChannelSettingsContext().channel; React.useEffect(function () { var participantListQuery = channel === null || channel === void 0 ? void 0 : channel.createParticipantListQuery({ limit: 20, }); if (participantListQuery) { participantListQuery.next().then(function (users) { setParticipants(users); }); setParticipantQuery(participantListQuery); } }, []); var selectedCount = Object.keys(selectedUsers).filter(function (m) { return selectedUsers[m]; }).length; return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(ui_Modal.Modal, { isFullScreenOnMobile: true, type: ui_Button.ButtonTypes.PRIMARY, submitText: stringSet.CHANNEL_SETTING__OPERATORS__ADD_BUTTON, onCancel: onCancel, onSubmit: function () { var users = Object.keys(selectedUsers).filter(function (m) { return selectedUsers[m]; }); channel === null || channel === void 0 ? void 0 : channel.addOperators(users).then(function () { onSubmit(users); }); }, titleText: stringSet.OPEN_CHANNEL_CONVERSATION__SELECT_PARTICIPANTS }, React__default.default.createElement(ui_Label.Label, { color: (selectedCount > 0) ? ui_Label.LabelColors.PRIMARY : ui_Label.LabelColors.ONBACKGROUND_3, type: ui_Label.LabelTypography.CAPTION_1 }, "".concat(selectedCount, " ").concat(stringSet.MODAL__INVITE_MEMBER__SELECTED)), React__default.default.createElement("div", { className: "sendbird-more-users__popup-scroll", onScroll: function (e) { var hasNext = participantQuery ? participantQuery.hasNext : false; var target = e.target; var fetchMore = (target.clientHeight + target.scrollTop === target.scrollHeight); if (hasNext && fetchMore && participantQuery) { participantQuery.next().then(function (o) { setParticipants(_tslib.__spreadArray(_tslib.__spreadArray([], participants, true), o, true)); }); } } }, participants.map(function (participant) { var isOperator = (channel === null || channel === void 0 ? void 0 : channel.operators.find(function (operator) { return (operator === null || operator === void 0 ? void 0 : operator.userId) === (participant === null || participant === void 0 ? void 0 : participant.userId); })) ? true : false; return (React__default.default.createElement(ui_UserListItem.UserListItem, { user: participant, key: participant.userId, checkBox: true, checked: selectedUsers[participant.userId] || isOperator, disabled: isOperator, isOperator: isOperator, onChange: function (event) { var _a; var modifiedSelectedUsers = _tslib.__assign(_tslib.__assign({}, selectedUsers), (_a = {}, _a[event.target.id] = event.target.checked, _a)); if (!event.target.checked) { delete modifiedSelectedUsers[event.target.id]; } setSelectedUsers(modifiedSelectedUsers); } })); }))))); } var OperatorList = function () { var _a, _b; var _c = React.useState(false), showAdd = _c[0], setShowAdd = _c[1]; var _d = React.useState(false), showMore = _d[0], setShowMore = _d[1]; var state = useSendbird.useSendbird().state; var currentUserId = (_a = state === null || state === void 0 ? void 0 : state.config) === null || _a === void 0 ? void 0 : _a.userId; var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; var channel = OpenChannelSettings_context.useOpenChannelSettingsContext().channel; return (React__default.default.createElement("div", null, (_b = channel === null || channel === void 0 ? void 0 : channel.operators) === null || _b === void 0 ? void 0 : _b.slice(0, 10).map(function (operator) { return (React__default.default.createElement(OpenChannelSettings_components_ParticipantUI.UserListItem, { key: operator.userId, user: operator, currentUser: currentUserId, action: function (_a) { var actionRef = _a.actionRef; return (currentUserId !== (operator === null || operator === void 0 ? void 0 : operator.userId) ? (React__default.default.createElement(ui_ContextMenu.ContextMenu, { menuTrigger: function (toggleDropdown) { return (React__default.default.createElement(ui_IconButton, { className: "sendbird-openchannel-operator-list__menu", width: "32px", height: "32px", onClick: toggleDropdown }, React__default.default.createElement(ui_Icon.default, { width: "24px", height: "24px", type: ui_Icon.IconTypes.MORE, fillColor: ui_Icon.IconColors.CONTENT_INVERSE }))); }, menuItems: function (closeDropdown) { return (React__default.default.createElement(ui_ContextMenu.MenuItems, { parentRef: actionRef, closeDropdown: closeDropdown, openLeft: true }, React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () { channel === null || channel === void 0 ? void 0 : channel.removeOperators([operator.userId]).then(function () { closeDropdown(); }); }, testID: "open_channel_setting_operator_context_menu_unregister_operator" }, stringSet.OPEN_CHANNEL_SETTING__MODERATION__UNREGISTER_OPERATOR), React__default.default.createElement(ui_ContextMenu.MuteMenuItem, { channel: channel, user: operator, onChange: function () { return closeDropdown(); }, onError: function () { // FIXME: handle error later closeDropdown(); }, testID: "open_channel_setting_operator_context_menu_".concat(operator.isMuted ? 'unmute' : 'mute') }, operator.isMuted ? stringSet.OPEN_CHANNEL_SETTING__MODERATION__UNMUTE : stringSet.OPEN_CHANNEL_SETTING__MODERATION__MUTE), React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () { channel === null || channel === void 0 ? void 0 : channel.banUser(operator).then(function () { closeDropdown(); }); }, testID: "open_channel_setting_operator_context_menu_ban" }, stringSet.OPEN_CHANNEL_SETTING__MODERATION__BAN))); } })) : React__default.default.createElement(React__default.default.Fragment, null)); } })); }), React__default.default.createElement("div", { className: "sendbird-openchannel-operator-list__footer" }, React__default.default.createElement(ui_Button.default, { type: ui_Button.ButtonTypes.SECONDARY, size: ui_Button.ButtonSizes.SMALL, onClick: function () { setShowAdd(true); } }, stringSet.OPEN_CHANNEL_SETTINGS__OPERATORS__TITLE_ADD), (channel === null || channel === void 0 ? void 0 : channel.operators) && channel.operators.length > 10 && (React__default.default.createElement(ui_Button.default, { type: ui_Button.ButtonTypes.SECONDARY, size: ui_Button.ButtonSizes.SMALL, onClick: function () { setShowMore(true); } }, stringSet.OPEN_CHANNEL_SETTINGS__OPERATORS__TITLE_ALL))), showMore && (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(OperatorListModal, { onCancel: function () { setShowMore(false); } }))), showAdd && (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(AddOperatorsModal, { onCancel: function () { return setShowAdd(false); }, onSubmit: function () { setShowAdd(false); } }))))); }; function MutedParticipantsModal(_a) { var _b; var onCancel = _a.onCancel; var _c = React.useState([]), mutedUsers = _c[0], setMutedUsers = _c[1]; var _d = React.useState(null), userListQuery = _d[0], setUserListQuery = _d[1]; var channel = OpenChannelSettings_context.useOpenChannelSettingsContext().channel; 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 stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; React.useEffect(function () { var mutedUserListQuery = channel === null || channel === void 0 ? void 0 : channel.createMutedUserListQuery({ limit: 10, }); mutedUserListQuery === null || mutedUserListQuery === void 0 ? void 0 : mutedUserListQuery.next().then(function (users) { setMutedUsers(users); }); if (mutedUserListQuery) { setUserListQuery(mutedUserListQuery); } }, []); return (React__default.default.createElement("div", null, React__default.default.createElement(ui_Modal.Modal, { isFullScreenOnMobile: true, hideFooter: true, onCancel: function () { return onCancel(); }, onSubmit: utils.noop, titleText: stringSet.OPEN_CHANNEL_SETTINGS__MUTED_MEMBERS__TITLE }, React__default.default.createElement("div", { className: "sendbird-more-members__popup-scroll", onScroll: function (e) { var hasNext = userListQuery === null || userListQuery === void 0 ? void 0 : userListQuery.hasNext; var target = e.target; var fetchMore = (target.clientHeight + target.scrollTop === target.scrollHeight); if (hasNext && fetchMore) { userListQuery.next().then(function (o) { setMutedUsers(_tslib.__spreadArray(_tslib.__spreadArray([], mutedUsers, true), o, true)); }); } } }, mutedUsers.map(function (mutedUser) { return (React__default.default.createElement(ui_UserListItem.UserListItem, { currentUser: currentUserId, user: mutedUser, key: mutedUser.userId, action: function (_a) { var actionRef = _a.actionRef; return ((mutedUser === null || mutedUser === void 0 ? void 0 : mutedUser.userId) !== currentUserId ? (React__default.default.createElement(ui_ContextMenu.ContextMenu, { menuTrigger: function (toggleDropdown) { return (React__default.default.createElement(ui_IconButton, { className: "sendbird-user-message__more__menu", width: "32px", height: "32px", onClick: toggleDropdown }, React__default.default.createElement(ui_Icon.default, { width: "24px", height: "24px", type: ui_Icon.IconTypes.MORE, fillColor: ui_Icon.IconColors.CONTENT_INVERSE }))); }, menuItems: function (closeDropdown) { return (React__default.default.createElement(ui_ContextMenu.MenuItems, { parentRef: actionRef, closeDropdown: closeDropdown, openLeft: true }, React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () { channel === null || channel === void 0 ? void 0 : channel.unmuteUser(mutedUser).then(function () { closeDropdown(); setMutedUsers(mutedUsers.filter(function (u) { return (u.userId !== mutedUser.userId); })); }); }, testID: "open_channel_setting_muted_member_context_menu_unmute" }, stringSet.OPEN_CHANNEL_SETTING__MODERATION__UNMUTE))); } })) : React__default.default.createElement(React__default.default.Fragment, null)); } })); }))))); } var MutedParticipantList = function () { var _a; var _b = React.useState([]), mutedUsers = _b[0], setMutedUsers = _b[1]; var _c = React.useState(false), hasNext = _c[0], setHasNext = _c[1]; var _d = React.useState(false), showModal = _d[0], setShowModal = _d[1]; var channel = OpenChannelSettings_context.useOpenChannelSettingsContext().channel; var state = useSendbird.useSendbird().state; var currentUserId = (_a = state === null || state === void 0 ? void 0 : state.config) === null || _a === void 0 ? void 0 : _a.userId; var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; React.useEffect(function () { if (!channel) { setMutedUsers([]); return; } var mutedUserListQuery = channel === null || channel === void 0 ? void 0 : channel.createMutedUserListQuery({ limit: 10, }); mutedUserListQuery.next().then(function (members) { setMutedUsers(members); setHasNext(mutedUserListQuery.hasNext); }); }, [channel]); var refreshList = React.useCallback(function () { if (!channel) { setMutedUsers([]); return; } var mutedUserListQuery = channel === null || channel === void 0 ? void 0 : channel.createMutedUserListQuery({ limit: 10, }); mutedUserListQuery.next().then(function (members) { setMutedUsers(members); setHasNext(mutedUserListQuery.hasNext); }); }, [channel]); return (React__default.default.createElement(React__default.default.Fragment, null, mutedUsers.map(function (mutedUser) { return (React__default.default.createElement(OpenChannelSettings_components_ParticipantUI.UserListItem, { key: mutedUser.userId, user: mutedUser, currentUser: currentUserId, isOperator: channel === null || channel === void 0 ? void 0 : channel.isOperator(mutedUser.userId), action: function (_a) { var actionRef = _a.actionRef; return ((mutedUser === null || mutedUser === void 0 ? void 0 : mutedUser.userId) !== currentUserId ? (React__default.default.createElement(ui_ContextMenu.ContextMenu, { menuTrigger: function (toggleDropdown) { return (React__default.default.createElement(ui_IconButton, { className: "sendbird-user-message__more__menu", width: "32px", height: "32px", onClick: toggleDropdown }, React__default.default.createElement(ui_Icon.default, { width: "24px", height: "24px", type: ui_Icon.IconTypes.MORE, fillColor: ui_Icon.IconColors.CONTENT_INVERSE }))); }, menuItems: function (closeDropdown) { return (React__default.default.createElement(ui_ContextMenu.MenuItems, { closeDropdown: closeDropdown, openLeft: true, parentRef: actionRef }, React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () { channel === null || channel === void 0 ? void 0 : channel.unmuteUser(mutedUser).then(function () { refreshList(); closeDropdown(); }); }, testID: "open_channel_setting_muted_member_context_menu_unmute" }, stringSet.OPEN_CHANNEL_SETTING__MODERATION__UNMUTE))); } })) : React__default.default.createElement(React__default.default.Fragment, null)); } })); }), mutedUsers && mutedUsers.length === 0 && (React__default.default.createElement(ui_Label.Label, { className: "sendbird-channel-settings__empty-list", type: ui_Label.LabelTypography.SUBTITLE_2, color: ui_Label.LabelColors.ONBACKGROUND_3 }, stringSet.OPEN_CHANNEL_SETTINGS__MUTED_MEMBERS__NO_ONE)), hasNext && (React__default.default.createElement("div", { className: "sendbird-channel-settings-muted-participant-list__footer" }, React__default.default.createElement(ui_Button.default, { type: ui_Button.ButtonTypes.SECONDARY, size: ui_Button.ButtonSizes.SMALL, onClick: function () { setShowModal(true); } }, stringSet.OPEN_CHANNEL_SETTINGS__MUTED_MEMBERS__TITLE_ALL))), showModal && (React__default.default.createElement(MutedParticipantsModal, { onCancel: function () { setShowModal(false); refreshList(); } })))); }; function BannedUsersModal(_a) { var _b; var onCancel = _a.onCancel; var _c = React.useState([]), bannedUsers = _c[0], setBannedUsers = _c[1]; var _d = React.useState(null), userListQuery = _d[0], setUserListQuery = _d[1]; var channel = OpenChannelSettings_context.useOpenChannelSettingsContext().channel; var state = useSendbird.useSendbird().state; var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; var currentUserId = (_b = state === null || state === void 0 ? void 0 : state.config) === null || _b === void 0 ? void 0 : _b.userId; React.useEffect(function () { var bannedUserListQuery = channel === null || channel === void 0 ? void 0 : channel.createBannedUserListQuery(); bannedUserListQuery === null || bannedUserListQuery === void 0 ? void 0 : bannedUserListQuery.next().then(function (users) { setBannedUsers(users); }); setUserListQuery(bannedUserListQuery !== null && bannedUserListQuery !== void 0 ? bannedUserListQuery : null); }, []); return (React__default.default.createElement("div", null, React__default.default.createElement(ui_Modal.Modal, { hideFooter: true, isFullScreenOnMobile: true, onCancel: function () { return onCancel(); }, onSubmit: utils.noop, titleText: stringSet.OPEN_CHANNEL_SETTINGS__MUTED_MEMBERS__TITLE }, React__default.default.createElement("div", { className: "sendbird-more-members__popup-scroll", onScroll: function (e) { var hasNext = userListQuery === null || userListQuery === void 0 ? void 0 : userListQuery.hasNext; var target = e.target; var fetchMore = (target.clientHeight + target.scrollTop === target.scrollHeight); if (hasNext && fetchMore) { userListQuery.next().then(function (o) { setBannedUsers(_tslib.__spreadArray(_tslib.__spreadArray([], bannedUsers, true), o, true)); }); } } }, bannedUsers.map(function (bannedUser) { return (React__default.default.createElement(ui_UserListItem.UserListItem, { user: bannedUser, key: bannedUser.userId, action: function (_a) { var actionRef = _a.actionRef; return ((bannedUser === null || bannedUser === void 0 ? void 0 : bannedUser.userId) !== currentUserId ? (React__default.default.createElement(ui_ContextMenu.ContextMenu, { menuTrigger: function (toggleDropdown) { return (React__default.default.createElement(ui_IconButton, { className: "sendbird-user-message__more__menu", width: "32px", height: "32px", onClick: toggleDropdown }, React__default.default.createElement(ui_Icon.default, { width: "24px", height: "24px", type: ui_Icon.IconTypes.MORE, fillColor: ui_Icon.IconColors.CONTENT_INVERSE }))); }, menuItems: function (closeDropdown) { return (React__default.default.createElement(ui_ContextMenu.MenuItems, { parentRef: actionRef, closeDropdown: closeDropdown, openLeft: true }, React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () { channel === null || channel === void 0 ? void 0 : channel.unbanUser(bannedUser).then(function () { closeDropdown(); setBannedUsers(bannedUsers.filter(function (u) { return (u.userId !== bannedUser.userId); })); }); }, testID: "open_channel_setting_banned_user_context_menu_unban" }, stringSet.OPEN_CHANNEL_SETTING__MODERATION__UNBAN))); } })) : React__default.default.createElement(React__default.default.Fragment, null)); } })); }))))); } var BannedUserList = function () { var _a; var _b = React.useState([]), bannedUsers = _b[0], setBannedUsers = _b[1]; var _c = React.useState(false), hasNext = _c[0], setHasNext = _c[1]; var _d = React.useState(false), showModal = _d[0], setShowModal = _d[1]; var channel = OpenChannelSettings_context.useOpenChannelSettingsContext().channel; var state = useSendbird.useSendbird().state; var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; var currentUserId = (_a = state === null || state === void 0 ? void 0 : state.config) === null || _a === void 0 ? void 0 : _a.userId; React.useEffect(function () { if (!channel) { setBannedUsers([]); return; } var bannedUserListQuery = channel === null || channel === void 0 ? void 0 : channel.createBannedUserListQuery(); bannedUserListQuery.next().then(function (users) { setBannedUsers(users); setHasNext(bannedUserListQuery.hasNext); }); }, [channel]); var refreshList = React.useCallback(function () { if (!channel) { setBannedUsers([]); return; } var bannedUserListQuery = channel === null || channel === void 0 ? void 0 : channel.createBannedUserListQuery(); bannedUserListQuery.next().then(function (users) { setBannedUsers(users); setHasNext(bannedUserListQuery.hasNext); }); }, [channel]); return (React__default.default.createElement(React__default.default.Fragment, null, bannedUsers.map(function (bannedUser) { return (React__default.default.createElement(OpenChannelSettings_components_ParticipantUI.UserListItem, { key: bannedUser.userId, user: bannedUser, isOperator: channel === null || channel === void 0 ? void 0 : channel.isOperator(bannedUser.userId), action: function (_a) { var actionRef = _a.actionRef; return ((bannedUser === null || bannedUser === void 0 ? void 0 : bannedUser.userId) !== currentUserId ? (React__default.default.createElement(ui_ContextMenu.ContextMenu, { menuTrigger: function (toggleDropdown) { return (React__default.default.createElement(ui_IconButton, { className: "sendbird-user-message__more__menu", width: "32px", height: "32px", onClick: toggleDropdown }, React__default.default.createElement(ui_Icon.default, { width: "24px", height: "24px", type: ui_Icon.IconTypes.MORE, fillColor: ui_Icon.IconColors.CONTENT_INVERSE }))); }, menuItems: function (closeDropdown) { return (React__default.default.createElement(ui_ContextMenu.MenuItems, { parentRef: actionRef, closeDropdown: closeDropdown, openLeft: true }, React__default.default.createElement(ui_ContextMenu.MenuItem$1, { onClick: function () { channel === null || channel === void 0 ? void 0 : channel.unbanUser(bannedUser).then(function () { closeDropdown(); refreshList(); }); }, testID: "open_channel_setting_banned_user_context_menu_unban" }, stringSet.OPEN_CHANNEL_SETTING__MODERATION__UNBAN))); } })) : React__default.default.createElement(React__default.default.Fragment, null)); } })); }), bannedUsers && bannedUsers.length === 0 && (React__default.default.createElement(ui_Label.Label, { className: "sendbird-channel-settings__empty-list", type: ui_Label.LabelTypography.SUBTITLE_2, color: ui_Label.LabelColors.ONBACKGROUND_3 }, stringSet.OPEN_CHANNEL_SETTINGS__BANNED_MEMBERS__NO_ONE)), hasNext && (React__default.default.createElement("div", { className: "sendbird-channel-settings-banned-user-list__footer" }, React__default.default.createElement(ui_Button.default, { type: ui_Button.ButtonTypes.SECONDARY, size: ui_Button.ButtonSizes.SMALL, onClick: function () { setShowModal(true); } }, stringSet.OPEN_CHANNEL_SETTINGS__BANNED_MEMBERS__TITLE_ALL))), showModal && (React__default.default.createElement(BannedUsersModal, { onCancel: function () { setShowModal(false); refreshList(); } })))); }; var copyToClipboard = function (text) { // @ts-ignore: Unreachable code error if (window.clipboardData && window.clipboardData.setData) { // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible. // @ts-ignore: Unreachable code error return window.clipboardData.setData('Text', text); } if (document.queryCommandSupported && document.queryCommandSupported('copy')) { var textarea = document.createElement('textarea'); textarea.textContent = text; textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge. document.body.appendChild(textarea); textarea.select(); try { return document.execCommand('copy'); // Security exception may be thrown by some browsers. } catch (ex) { return false; } finally { document.body.removeChild(textarea); } } return false; }; var OperatorUI = function (_a) { var renderChannelProfile = _a.renderChannelProfile; var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet; var _b = OpenChannelSettings_context.useOpenChannelSettingsContext(), onCloseClick = _b.onCloseClick, channel = _b.channel; return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement("div", { className: "sendbird-openchannel-settings__header" }, React__default.default.createElement(ui_Label.Label, { type: ui_Label.LabelTypography.H_2, color: ui_Label.LabelColors.ONBACKGROUND_1 }, stringSet.CHANNEL_SETTING__HEADER__TITLE), React__default.default.createElement(ui_Icon.default, { className: "sendbird-openchannel-settings__close-icon", type: ui_Icon.IconTypes.CLOSE, height: "24px", width: "24px", onClick: function () { onCloseClick === null || onCloseClick === void 0 ? void 0 : onCloseClick(); } })), React__default.default.createElement("div", { className: "sendbird-openchannel-settings__profile" }, (renderChannelProfile === null || renderChannelProfile === void 0 ? void 0 : renderChannelProfile()) || (React__default.default.createElement(OpenChannelSettings_components_OpenChannelProfile, null))), React__default.default.createElement("div", { className: "sendbird-openchannel-settings__url" }, React__default.default.createElement(ui_Icon.default, { className: "sendbird-openchannel-settings__copy-icon", type: ui_Icon.IconTypes.COPY, height: "22px", width: "22px", onClick: function () { var _a; copyToClipboard((_a = channel === null || channel === void 0 ? void 0 : channel.url) !== null && _a !== void 0 ? _a : ''); } }), React__default.default.createElement(ui_Label.Label, { className: "sendbird-openchannel-settings__url-label", type: ui_Label.LabelTypography.CAPTION_2, color: ui_Label.LabelColors.ONBACKGROUND_2 }, stringSet.OPEN_CHANNEL_SETTINGS__OPERATOR_URL), React__default.default.createElement(ui_Label.Label, { className: "sendbird-openchannel-settings__url-value", type: ui_Label.LabelTypography.SUBTITLE_2 }, channel === null || channel === void 0 ? void 0 : channel.url)), React__default.default.createElement(ui_Accordion.AccordionGroup, null, React__default.default.createElement(ui_Accordion.default, { className: "sendbird-openchannel-settings__operators-list", id: "operators", renderTitle: function () { return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(ui_Icon.default, { className: "sendbird-openchannel-settings__operator-accordion-icon", type: ui_Icon.IconTypes.OPERATOR, fillColor: ui_Icon.IconColors.PRIMARY, width: "24px", height: "24px" }), React__default.default.createElement(ui_Label.Label, { type: ui_Label.LabelTypography.SUBTITLE_1, color: ui_Label.LabelColors.ONBACKGROUND_1 }, stringSet.OPEN_CHANNEL_SETTINGS__OPERATORS_TITLE))); }, renderContent: function () { return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(OperatorList, null))); } }), React__default.default.createElement(ui_Accordion.default, { className: "sendbird-channel-settings__operators-list", id: "participants", renderTitle: function () { return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(ui_Icon.default, { type: ui_Icon.IconTypes.MEMBERS, fillColor: ui_Icon.IconColors.PRIMARY, width: 24, height: 24, className: "sendbird-openchannel-settings__operator-accordion-icon" }), React__default.default.createElement(ui_Label.Label, { type: ui_Label.LabelTypography.SUBTITLE_1, color: ui_Label.LabelColors.ONBACKGROUND_1 }, stringSet.OPEN_CHANNEL_SETTINGS__PARTICIPANTS_ACCORDION_TITLE))); }, renderContent: function () { return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(OpenChannelSettings_components_ParticipantUI.ParticipantList, { isOperatorView: true }))); } }), React__default.default.createElement(ui_Accordion.default, { className: "sendbird-channel-settings__operators-list", id: "mutedMembers", renderTitle: function () { return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(ui_Icon.default, { className: "sendbird-openchannel-settings__operator-accordion-icon", type: ui_Icon.IconTypes.MUTE, fillColor: ui_Icon.IconColors.PRIMARY, width: "24px", height: "24px" }), React__default.default.createElement(ui_Label.Label, { type: ui_Label.LabelTypography.SUBTITLE_1, color: ui_Label.LabelColors.ONBACKGROUND_1 }, stringSet.OPEN_CHANNEL_SETTINGS__MUTED_MEMBERS__TITLE))); }, renderContent: function () { return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(MutedParticipantList, null))); } }), React__default.default.createElement(ui_Accordion.default, { className: "sendbird-channel-settings__operators-list", id: "bannedUsers", renderTitle: function () { return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(ui_Icon.default, { className: "sendbird-openchannel-settings__operator-accordion-icon", type: ui_Icon.IconTypes.BAN, fillColor: ui_Icon.IconColors.PRIMARY, width: "24px", height: "24px" }), React__default.default.createElement(ui_Label.Label, { type: ui_Label.LabelTypography.SUBTITLE_1, color: ui_Label.LabelColors.ONBACKGROUND_1 }, stringSet.OPEN_CHANNEL_SETTINGS__BANNED_MEMBERS__TITLE))); }, renderContent: function () { return (React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(BannedUserList, null))); } })), React__default.default.createElement(DeleteChannel, null))); }; exports.OperatorUI = OperatorUI; exports.copyToClipboard = copyToClipboard; exports.default = OperatorUI; //# sourceMappingURL=OperatorUI.js.map