@atlaskit/editor-plugin-avatar-group
Version:
Avatar Group plugin for @atlaskit/editor-core.
41 lines • 2.29 kB
JavaScript
import React from 'react';
import memoizeOne from 'memoize-one';
import { avatarGroupMessages } from '@atlaskit/editor-common/messages';
import { fg } from '@atlaskit/platform-feature-flags';
import { ColoredAvatarItem } from './colored-avatar-item';
const getUserNameForAttribution = (participant, participants, userNamesById = {}) => {
var _participants$find;
const actingUserId = participant.actingUserId;
if (!fg('platform_move_presence_agents') || !actingUserId) {
return undefined;
}
const currentParticipantName = (_participants$find = participants.find(user => user.sessionId !== participant.sessionId && user.userId === actingUserId && user.isHydrated)) === null || _participants$find === void 0 ? void 0 : _participants$find.name;
return currentParticipantName !== null && currentParticipantName !== void 0 ? currentParticipantName : userNamesById[actingUserId];
};
const getAvatarName = (participant, participants, formatMessage, userNamesById) => {
const participantName = participant.name || formatMessage(avatarGroupMessages.anonymousCollaborator);
const userNameForAttribution = getUserNameForAttribution(participant, participants, userNamesById);
if (!userNameForAttribution) {
return participantName;
}
return formatMessage(avatarGroupMessages.agentWithUser, {
agentName: participantName,
userName: userNameForAttribution
});
};
const toAvatar = (participant, api, formatMessage, participants, userNamesById = {}) => ({
name: getAvatarName(participant, participants, formatMessage, userNamesById),
src: participant.avatar,
size: 'medium',
presence: /*#__PURE__*/React.createElement(ColoredAvatarItem, {
api: api,
name: participant.name,
sessionId: participant.sessionId,
presenceId: participant.presenceId
})
});
const _default_1 = memoizeOne(toAvatar, function participantEquals([a,,, aParticipants, aUserNamesById = {}], [b,,, bParticipants, bUserNamesById = {}]) {
const actingUserId = a.actingUserId;
return a.name === b.name && a.avatar === b.avatar && a.sessionId === b.sessionId && actingUserId === b.actingUserId && (!actingUserId || getUserNameForAttribution(a, aParticipants, aUserNamesById) === getUserNameForAttribution(b, bParticipants, bUserNamesById));
});
export default _default_1;