UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

179 lines 7.99 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useChannelMemberActionItems = exports.getChannelMemberActionItems = exports.buildDefaultChannelMemberActionItems = void 0; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _useChannelActions = require("./useChannelActions"); var _useUserActions = require("./useUserActions"); var _useUserMuteActive = require("../../components/Message/hooks/useUserMuteActive"); var _contexts = require("../../contexts"); var _ComponentsContext = require("../../contexts/componentsContext/ComponentsContext"); var _useChannelOwnCapabilities = require("../useChannelOwnCapabilities"); var _useStateStore2 = require("../useStateStore"); var _jsxRuntime = require("react/jsx-runtime"); var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/hooks/actions/useChannelMemberActionItems.tsx"; function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var cachedDefaultIcons; var getDefaultIcons = () => { if (!cachedDefaultIcons) { cachedDefaultIcons = require("../../contexts/componentsContext/defaultComponents").defaultIcons; } return cachedDefaultIcons; }; var ChannelMemberActionsIcon = ({ Icon, ...rest }) => { var _useTheme = (0, _contexts.useTheme)(), semantics = _useTheme.theme.semantics; return (0, _jsxRuntime.jsx)(Icon, { stroke: semantics.textSecondary, width: 20, height: 20, ...rest }); }; var buildDefaultChannelMemberActionItems = channelMemberActionItemsParams => { var removeMembers = channelMemberActionItemsParams.channelActions.removeMembers, _channelMemberActionI = channelMemberActionItemsParams.icons, icons = _channelMemberActionI === void 0 ? getDefaultIcons() : _channelMemberActionI, isBlocked = channelMemberActionItemsParams.isBlocked, isCurrentUser = channelMemberActionItemsParams.isCurrentUser, member = channelMemberActionItemsParams.member, ownCapabilities = channelMemberActionItemsParams.ownCapabilities, t = channelMemberActionItemsParams.t, _channelMemberActionI2 = channelMemberActionItemsParams.userActions, blockUser = _channelMemberActionI2.blockUser, muteUser = _channelMemberActionI2.muteUser, unblockUser = _channelMemberActionI2.unblockUser, unmuteUser = _channelMemberActionI2.unmuteUser, userMuteActive = channelMemberActionItemsParams.userMuteActive; var canRemoveMember = ownCapabilities?.includes('update-channel-members') ?? false; var actionItems = []; if (!isCurrentUser) { actionItems.push({ action: userMuteActive ? unmuteUser : muteUser, Icon: props => userMuteActive ? (0, _jsxRuntime.jsx)(ChannelMemberActionsIcon, { Icon: icons.Sound, ...props }) : (0, _jsxRuntime.jsx)(ChannelMemberActionsIcon, { Icon: icons.Mute, ...props, fill: props.fill ?? props.stroke, stroke: undefined }), id: 'muteUser', label: userMuteActive ? t('Unmute User') : t('Mute User'), type: 'standard' }, { action: isBlocked ? unblockUser : (...args) => { var name = member.user?.name || member.user?.id || ''; _reactNative.Alert.alert(t('Block {{ name }}', { name }), t("They won't be able to message or call you. You can unblock them later."), [{ style: 'cancel', text: t('Cancel') }, { onPress: function () { var _ref = (0, _asyncToGenerator2.default)(function* () { yield blockUser(...args); }); return function onPress() { return _ref.apply(this, arguments); }; }(), style: 'destructive', text: t('Block') }]); }, Icon: props => (0, _jsxRuntime.jsx)(ChannelMemberActionsIcon, { Icon: icons.BlockUser, ...props }), id: 'block', label: isBlocked ? t('Unblock User') : t('Block User'), type: isBlocked ? 'standard' : 'destructive' }); if (canRemoveMember) { actionItems.push({ action: () => { var memberId = member.user?.id; if (!memberId) { return; } _reactNative.Alert.alert(t('Remove User'), t('Are you sure you want to remove this member from the channel?'), [{ style: 'cancel', text: t('Cancel') }, { onPress: function () { var _ref2 = (0, _asyncToGenerator2.default)(function* () { yield removeMembers([memberId]); }); return function onPress() { return _ref2.apply(this, arguments); }; }(), style: 'destructive', text: t('Remove') }]); }, Icon: props => (0, _jsxRuntime.jsx)(ChannelMemberActionsIcon, { Icon: icons.UserDelete, ...props }), id: 'removeMember', label: t('Remove User'), type: 'destructive' }); } } return actionItems; }; exports.buildDefaultChannelMemberActionItems = buildDefaultChannelMemberActionItems; var getChannelMemberActionItems = ({ defaultItems }) => defaultItems; exports.getChannelMemberActionItems = getChannelMemberActionItems; var blockedUsersStateSelector = state => ({ userIds: state.userIds }); var useChannelMemberActionItems = ({ channel, member, getChannelMemberActionItems: getChannelMemberActionItemsProp = getChannelMemberActionItems }) => { var _useTranslationContex = (0, _contexts.useTranslationContext)(), t = _useTranslationContex.t; var _useComponentsContext = (0, _ComponentsContext.useComponentsContext)(), icons = _useComponentsContext.icons; var userActions = (0, _useUserActions.useUserActions)(member.user); var channelActions = (0, _useChannelActions.useChannelActions)(channel); var ownCapabilities = (0, _useChannelOwnCapabilities.useChannelOwnCapabilities)(channel); var userMuteActive = (0, _useUserMuteActive.useUserMuteActive)(member.user); var _useStateStore = (0, _useStateStore2.useStateStore)(channel.getClient().blockedUsers, blockedUsersStateSelector), blockedUserIds = _useStateStore.userIds; var isBlocked = blockedUserIds.includes(member.user?.id ?? ''); var isCurrentUser = member.user?.id === channel.getClient().userID; var channelMemberActionItemsParams = (0, _react.useMemo)(() => ({ channel, channelActions, icons, isBlocked, isCurrentUser, member, ownCapabilities, t, userActions, userMuteActive }), [channel, channelActions, icons, isBlocked, isCurrentUser, member, ownCapabilities, t, userActions, userMuteActive]); var defaultItems = (0, _react.useMemo)(() => buildDefaultChannelMemberActionItems(channelMemberActionItemsParams), [channelMemberActionItemsParams]); return (0, _react.useMemo)(() => getChannelMemberActionItemsProp({ context: channelMemberActionItemsParams, defaultItems }), [channelMemberActionItemsParams, defaultItems, getChannelMemberActionItemsProp]); }; exports.useChannelMemberActionItems = useChannelMemberActionItems; //# sourceMappingURL=useChannelMemberActionItems.js.map