UNPKG

@atlaskit/profilecard

Version:

A React component to display a card with user information.

90 lines (87 loc) 2.27 kB
import { fg } from '@atlaskit/platform-feature-flags'; import { AGGQuery } from './graphqlUtils'; const ARI_PREFIX = 'ari:cloud:identity::team/'; export const extractIdFromAri = ari => { const slashPos = ari.indexOf('/'); const id = ari.slice(slashPos + 1); return id; }; /** * @deprecated Use idToAriSafe instead */ export const idToAri = teamId => { return `ari:cloud:identity::team/${teamId}`; }; export const idToAriSafe = teamIdOrTeamAri => teamIdOrTeamAri.startsWith(ARI_PREFIX) ? teamIdOrTeamAri : idToAri(teamIdOrTeamAri); export const convertTeam = result => { var _team$members; const { team } = result; return { ...team, id: extractIdFromAri(team.id), members: (_team$members = team.members) === null || _team$members === void 0 ? void 0 : _team$members.nodes.map(({ member }) => ({ id: member.accountId, fullName: member.name, avatarUrl: member.picture })) }; }; // indented so it's const TEAM_FRAGMENT = ` id displayName description smallHeaderImageUrl largeHeaderImageUrl smallAvatarImageUrl largeAvatarImageUrl isVerified members { nodes { member { accountId name picture } } } `; // We alias the team node to always be team export const GATEWAY_QUERY_V2 = `query TeamCard($teamId: ID!, $siteId: String!) { Team: team { team: teamV2(id: $teamId, siteId: $siteId) @optIn(to: "Team-v2") { ${TEAM_FRAGMENT} } } }`; export const buildGatewayQuery = ({ teamId, siteId }) => ({ query: GATEWAY_QUERY_V2, variables: { teamId: fg('team_id_to_ari_safe') ? idToAriSafe(teamId) : idToAri(teamId), siteId: siteId || 'None' } }); export const addHeaders = headers => { headers.append('X-ExperimentalApi', 'teams-beta'); headers.append('X-ExperimentalApi', 'team-members-beta'); headers.append('atl-client-name', "@atlaskit/profilecard"); headers.append('atl-client-version', "23.8.0"); return headers; }; export async function getTeamFromAGG(url, teamId, siteId) { const query = buildGatewayQuery({ teamId, siteId }); const { Team } = await AGGQuery(url, query, addHeaders); return convertTeam(Team); }