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
JavaScript
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