@atlaskit/profilecard
Version:
A React component to display a card with user information.
93 lines (89 loc) • 2.24 kB
JavaScript
/// <reference types="node" />
// for typing `process`
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
state
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: idToAriSafe(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', "24.44.17");
return headers;
};
export async function getTeamFromAGG(url, teamId, siteId) {
const query = buildGatewayQuery({
teamId,
siteId
});
const {
Team
} = await AGGQuery(url, query, addHeaders);
return convertTeam(Team);
}