UNPKG

@atlaskit/editor-plugin-avatar-group

Version:

Avatar Group plugin for @atlaskit/editor-core.

41 lines 2.29 kB
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;