UNPKG

stream-chat-react-native-core

Version:

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

45 lines 2.25 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.useChannelPreviewDisplayName = void 0; var _react = require("react"); var _ChatContext = require("../../../contexts/chatContext/ChatContext"); var _TranslationContext = require("../../../contexts/translationContext/TranslationContext"); var _useChannelName = require("../../../hooks/useChannelName"); var _useChannelMembersState = require("../../ChannelList/hooks/useChannelMembersState"); var getMemberName = member => { var _member$user, _member$user2; return ((_member$user = member.user) == null ? void 0 : _member$user.name) || ((_member$user2 = member.user) == null ? void 0 : _member$user2.id) || 'Unknown User'; }; var useChannelPreviewDisplayName = channel => { var _useChatContext = (0, _ChatContext.useChatContext)(), client = _useChatContext.client; var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(), t = _useTranslationContex.t; var currentUserId = client == null ? void 0 : client.userID; var members = (0, _useChannelMembersState.useChannelMembersState)(channel); var channelName = (0, _useChannelName.useChannelName)(channel); var displayName = (0, _react.useMemo)(() => { if (channelName) { return channelName; } var membersWithoutSelf = Object.values(members || {}).filter(member => { var _member$user3; return ((_member$user3 = member.user) == null ? void 0 : _member$user3.id) !== currentUserId; }); if (membersWithoutSelf.length === 1) { return getMemberName(membersWithoutSelf[0]); } else { var names = membersWithoutSelf.map(member => getMemberName(member)).map(name => name.split(' ')[0]); var sortedMembers = names.sort((a, b) => a.localeCompare(b)); var firstTwoMembers = sortedMembers.slice(0, 2); var remainingMembers = sortedMembers.slice(2); return `${firstTwoMembers.join(', ').concat(' ')}${remainingMembers.length > 0 ? t('and {{ count }} others', { count: remainingMembers.length }) : ''}`; } }, [channelName, currentUserId, members, t]); return displayName; }; exports.useChannelPreviewDisplayName = useChannelPreviewDisplayName; //# sourceMappingURL=useChannelPreviewDisplayName.js.map