@atlaskit/teams-client 4.26.0 → 4.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/common/utils/permissions/constants.js +5 -4
- package/dist/cjs/common/utils/ufo/constants.js +1 -1
- package/dist/cjs/common/utils/ufo/index.js +2 -2
- package/dist/cjs/services/agg-client/utils/query-context-headers.js +19 -0
- package/dist/cjs/services/collaborationgraph-client/index.js +24 -0
- package/dist/cjs/services/graphql-client/main.js +34 -7
- package/dist/cjs/services/graphql-client/utils/index.js +5 -2
- package/dist/cjs/services/legion-client/index.js +3 -1
- package/dist/cjs/services/main.js +243 -209
- package/dist/cjs/services/sentry/utils/get-sentry-config.js +1 -1
- package/dist/es2019/common/utils/permissions/constants.js +5 -4
- package/dist/es2019/common/utils/ufo/constants.js +1 -1
- package/dist/es2019/common/utils/ufo/index.js +2 -2
- package/dist/es2019/services/agg-client/utils/query-context-headers.js +14 -0
- package/dist/es2019/services/collaborationgraph-client/index.js +21 -0
- package/dist/es2019/services/graphql-client/main.js +26 -1
- package/dist/es2019/services/graphql-client/utils/index.js +2 -1
- package/dist/es2019/services/legion-client/index.js +3 -1
- package/dist/es2019/services/main.js +7 -0
- package/dist/es2019/services/sentry/utils/get-sentry-config.js +1 -1
- package/dist/esm/common/utils/permissions/constants.js +5 -4
- package/dist/esm/common/utils/ufo/constants.js +1 -1
- package/dist/esm/common/utils/ufo/index.js +2 -2
- package/dist/esm/services/agg-client/utils/query-context-headers.js +14 -0
- package/dist/esm/services/collaborationgraph-client/index.js +24 -0
- package/dist/esm/services/graphql-client/main.js +34 -7
- package/dist/esm/services/graphql-client/utils/index.js +5 -2
- package/dist/esm/services/legion-client/index.js +3 -1
- package/dist/esm/services/main.js +243 -209
- package/dist/esm/services/sentry/utils/get-sentry-config.js +1 -1
- package/dist/types/common/utils/permissions/constants.d.ts +1 -0
- package/dist/types/common/utils/ufo/constants.d.ts +2 -2
- package/dist/types/services/agg-client/utils/query-context-headers.d.ts +5 -0
- package/dist/types/services/collaborationgraph-client/index.d.ts +25 -0
- package/dist/types/services/graphql-client/main.d.ts +4 -0
- package/dist/types/services/graphql-client/types.d.ts +1 -0
- package/dist/types/services/legion-client/index.d.ts +2 -0
- package/dist/types/services/main.d.ts +4 -0
- package/dist/types-ts4.5/common/utils/permissions/constants.d.ts +1 -0
- package/dist/types-ts4.5/common/utils/ufo/constants.d.ts +2 -1
- package/dist/types-ts4.5/services/agg-client/utils/query-context-headers.d.ts +5 -0
- package/dist/types-ts4.5/services/collaborationgraph-client/index.d.ts +25 -0
- package/dist/types-ts4.5/services/graphql-client/main.d.ts +4 -0
- package/dist/types-ts4.5/services/graphql-client/types.d.ts +1 -0
- package/dist/types-ts4.5/services/legion-client/index.d.ts +2 -0
- package/dist/types-ts4.5/services/main.d.ts +4 -0
- package/package.json +4 -1
|
@@ -36,7 +36,7 @@ function getSentryConfig(options) {
|
|
|
36
36
|
return _objectSpread(_objectSpread(_objectSpread({}, otherOptions), DEFAULT_SENTRY_CONFIG), {}, {
|
|
37
37
|
// Standalone __VERSION__ is set from `bin/set-release-version.sh`
|
|
38
38
|
// when building to deploy to production
|
|
39
|
-
release: "".concat("@atlaskit/teams-client", "@").concat("
|
|
39
|
+
release: "".concat("@atlaskit/teams-client", "@").concat("4.27.0") ||
|
|
40
40
|
// @ts-ignore Jira - window.BUILD_KEY
|
|
41
41
|
window.BUILD_KEY || ( // @ts-ignore Confluence - window.__buildInfo
|
|
42
42
|
(_window$__buildInfo = window.__buildInfo) === null || _window$__buildInfo === void 0 ? void 0 : _window$__buildInfo.FRONTEND_VERSION) || '---',
|
|
@@ -22,7 +22,7 @@ export const allPermissions = (defaultPermission, isMember, isOrgAdmin) => ({
|
|
|
22
22
|
ADD_AGENT_TO_TEAM: defaultPermission,
|
|
23
23
|
ARCHIVE_TEAM: defaultPermission && isMember,
|
|
24
24
|
UNARCHIVE_TEAM: false,
|
|
25
|
-
CAN_EDIT_HIERARCHY: defaultPermission
|
|
25
|
+
CAN_EDIT_HIERARCHY: defaultPermission,
|
|
26
26
|
CAN_CHANGE_MEMBERSHIP_SETTINGS: defaultPermission
|
|
27
27
|
});
|
|
28
28
|
export const vanityActions = ['EDIT_DESCRIPTION', 'EDIT_TEAM_NAME', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK'];
|
|
@@ -41,7 +41,9 @@ export const SCIMSyncTeamPermissions = (isMember, isOrgAdmin, source) => ({
|
|
|
41
41
|
EDIT_DESCRIPTION: isMember || isOrgAdmin,
|
|
42
42
|
EDIT_TEAM_SETTINGS: isMember || isOrgAdmin,
|
|
43
43
|
EDIT_TEAM_LINK: isMember || isOrgAdmin,
|
|
44
|
-
EDIT_TEAM_NAME: isOrgAdmin && source === 'ATLASSIAN_GROUP' && fg('enable_edit_team_name_external_type_teams')
|
|
44
|
+
EDIT_TEAM_NAME: isOrgAdmin && source === 'ATLASSIAN_GROUP' && fg('enable_edit_team_name_external_type_teams'),
|
|
45
|
+
//Org admins should not be able to edit hierarchies of HRIS synced teams
|
|
46
|
+
CAN_EDIT_HIERARCHY: source === 'ATLASSIAN_GROUP' && isOrgAdmin
|
|
45
47
|
});
|
|
46
48
|
|
|
47
49
|
/**
|
|
@@ -99,8 +101,7 @@ const getActiveTeamPermissionMap = (settings, permission, isMember, isOrgAdmin,
|
|
|
99
101
|
...SCIMSyncTeamPermissions(isMember, isOrgAdmin, source),
|
|
100
102
|
ADD_AGENT_TO_TEAM: newTeamProfileEnabled && (isMember || isOrgAdmin),
|
|
101
103
|
REMOVE_AGENT_FROM_TEAM: newTeamProfileEnabled && (isMember || isOrgAdmin),
|
|
102
|
-
ARCHIVE_TEAM: isArchiveTeamEnabled && isOrgAdmin
|
|
103
|
-
CAN_EDIT_HIERARCHY: permission === 'FULL_WRITE' && isOrgAdmin
|
|
104
|
+
ARCHIVE_TEAM: isArchiveTeamEnabled && isOrgAdmin
|
|
104
105
|
};
|
|
105
106
|
} else if (settings === 'ORG_ADMIN_MANAGED') {
|
|
106
107
|
// NOTE: Only org admins will received FULL_WRITE permission
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ExperiencePerformanceTypes, ExperienceTypes } from '@atlaskit/ufo';
|
|
2
2
|
import { TeamsUFOExperience } from './index';
|
|
3
|
-
const TeamsClientExperienceKeyList = ['getAllTeams', 'getTeamById', 'updateTeamById', 'querySettings', 'queryFeatureFlags', 'queryTeamMemberships', 'queryUser', 'inviteUsersToTeam', 'getMyTeamMembership', 'getTeamLinksByTeamId', 'createTeamLink', 'updateTeamLink', 'deleteTeamLink', 'reorderTeamLink', 'acceptTeamInvitation', 'declineTeamInvitation', 'selfJoinTeam', 'cancelJoinRequest', 'acceptJoinRequest', 'declineJoinRequest', 'deleteTeamMembership', 'revokeTeamInvite', 'deleteTeam', 'archiveTeam', 'unarchiveTeam', 'unlinkTeamFromGroup', 'isSingleFullMemberTeam', 'createTeam', 'createTeamContainers', 'createExternalTeam', 'getProfileWithMutability', 'getIsSiteAdmin', 'addUsersToTeam', 'removeTeamMemberships', 'getRecommendedProducts', 'joinOrRequestDefaultAccessToProductsBulk', 'getReadMediaToken', 'getWriteUserMediaToken', 'updateUserHeaderImage', 'getWriteTeamMediaToken', 'getSoftDeletedTeamById', 'restoreTeam', 'getUserInSiteUserBase', 'getLinkedTeamsBulk', 'getTeamProfileDetails', 'getUserContainers', 'getPermissions', 'getUserManageConfig', 'getMyAvatarUploadedStatus', 'deleteUserAvatar', 'getTeamLinkIcons', 'getTeamInSlack', 'getOrgScope', 'restoreTeamToSyncedGroup', 'getTeamAndGroupDiff', 'linkExistingTeamToGroup', 'fetchUserAvatarInfo', 'getOrgEligibilityForManagedTeams', 'updateUser', 'updateUserAvatar', 'disconnectTeamInSlack', 'updateTeamInSlack', 'getUserTenure', 'getAriFromUrl', 'getWebLinkTitle', 'addAgentToTeam', 'getTeamEnabledSites', 'assignTeamsToSites', 'removeAgentTeamAssociation', 'getAssignedTeams', 'setTeamSiteAssignmentPermission', 'getUnassignedTeams', 'getTeamSiteAssignmentOrgDetails', 'getTeamsToBeClonedToJsmSites', 'getReportingLines'];
|
|
3
|
+
const TeamsClientExperienceKeyList = ['getAllTeams', 'getTeamById', 'updateTeamById', 'querySettings', 'queryFeatureFlags', 'queryTeamMemberships', 'queryUser', 'inviteUsersToTeam', 'getMyTeamMembership', 'getTeamLinksByTeamId', 'createTeamLink', 'updateTeamLink', 'deleteTeamLink', 'reorderTeamLink', 'acceptTeamInvitation', 'declineTeamInvitation', 'selfJoinTeam', 'cancelJoinRequest', 'acceptJoinRequest', 'declineJoinRequest', 'deleteTeamMembership', 'revokeTeamInvite', 'deleteTeam', 'archiveTeam', 'unarchiveTeam', 'unlinkTeamFromGroup', 'isSingleFullMemberTeam', 'createTeam', 'createTeamContainers', 'createExternalTeam', 'getProfileWithMutability', 'getIsSiteAdmin', 'addUsersToTeam', 'removeTeamMemberships', 'getRecommendedProducts', 'joinOrRequestDefaultAccessToProductsBulk', 'getReadMediaToken', 'getWriteUserMediaToken', 'updateUserHeaderImage', 'getWriteTeamMediaToken', 'getSoftDeletedTeamById', 'restoreTeam', 'getUserInSiteUserBase', 'getLinkedTeamsBulk', 'getTeamProfileDetails', 'getUserContainers', 'getRecommendedUsers', 'getPermissions', 'getUserManageConfig', 'getMyAvatarUploadedStatus', 'deleteUserAvatar', 'getTeamLinkIcons', 'getTeamInSlack', 'getOrgScope', 'restoreTeamToSyncedGroup', 'getTeamAndGroupDiff', 'linkExistingTeamToGroup', 'fetchUserAvatarInfo', 'getOrgEligibilityForManagedTeams', 'updateUser', 'updateUserAvatar', 'disconnectTeamInSlack', 'updateTeamInSlack', 'getUserTenure', 'getAriFromUrl', 'getWebLinkTitle', 'addAgentToTeam', 'getTeamEnabledSites', 'assignTeamsToSites', 'removeAgentTeamAssociation', 'getAssignedTeams', 'setTeamSiteAssignmentPermission', 'getUnassignedTeams', 'getTeamSiteAssignmentOrgDetails', 'getTeamsToBeClonedToJsmSites', 'getReportingLines'];
|
|
4
4
|
export const TEAMS_CLIENT_EXPERIENCES = new Map([...TeamsClientExperienceKeyList.map(key => [key,
|
|
5
5
|
// camelCase to kebab-case
|
|
6
6
|
new TeamsUFOExperience(`teams-client-${key.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()}`, {
|
|
@@ -27,7 +27,7 @@ export class TeamsUFOExperience extends UFOExperience {
|
|
|
27
27
|
return super.failure({
|
|
28
28
|
metadata: {
|
|
29
29
|
error: createErrorMetadata(error),
|
|
30
|
-
packageVersion: "
|
|
30
|
+
packageVersion: "4.27.0",
|
|
31
31
|
packageName: "@atlaskit/teams-client"
|
|
32
32
|
}
|
|
33
33
|
});
|
|
@@ -35,7 +35,7 @@ export class TeamsUFOExperience extends UFOExperience {
|
|
|
35
35
|
return super.failure({
|
|
36
36
|
metadata: {
|
|
37
37
|
error: 'unknown error',
|
|
38
|
-
packageVersion: "
|
|
38
|
+
packageVersion: "4.27.0",
|
|
39
39
|
packageName: "@atlaskit/teams-client"
|
|
40
40
|
}
|
|
41
41
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates headers object with X-Query-Context header if cloudId is provided and feature flag is enabled.
|
|
5
|
+
* Use this for AGG client makeGraphQLRequest calls.
|
|
6
|
+
*/
|
|
7
|
+
export function createQueryContextHeaders(cloudId) {
|
|
8
|
+
if (!cloudId || !fg('enable_x_query_context_header')) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
'X-Query-Context': `ari:cloud:platform::site/${cloudId}`
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -31,6 +31,27 @@ export class CollaborationGraphClient extends RestClient {
|
|
|
31
31
|
expanded: true
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
+
getRecommendedUsers({
|
|
35
|
+
accountId,
|
|
36
|
+
cloudId,
|
|
37
|
+
maxNumberOfResults = 12,
|
|
38
|
+
filter = 'account_status:"active" AND (NOT email_domain:"connect.atlassian.com") AND (NOT account_type:"app")'
|
|
39
|
+
}) {
|
|
40
|
+
return this.postResource('/v2/recommend/user', {
|
|
41
|
+
context: {
|
|
42
|
+
userId: accountId,
|
|
43
|
+
tenantId: cloudId
|
|
44
|
+
},
|
|
45
|
+
modelRequestParams: {
|
|
46
|
+
experience: 'CgUserNearbyUser',
|
|
47
|
+
caller: 'atlas'
|
|
48
|
+
},
|
|
49
|
+
requestingUserId: accountId,
|
|
50
|
+
expand: 'existing',
|
|
51
|
+
maxNumberOfResults,
|
|
52
|
+
filter
|
|
53
|
+
});
|
|
54
|
+
}
|
|
34
55
|
}
|
|
35
56
|
export default new CollaborationGraphClient({
|
|
36
57
|
serviceUrl: DEFAULT_CONFIG.collaborationGraphUrl
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
1
2
|
import { DefaultError, GraphQLError } from '../../common/utils/error';
|
|
2
3
|
import { BaseClient } from '../base-client';
|
|
3
4
|
import { handleGraphQLRequest } from './utils';
|
|
@@ -9,9 +10,33 @@ export class BaseGraphQlClient extends BaseClient {
|
|
|
9
10
|
setServiceUrl(serviceUrl) {
|
|
10
11
|
this.serviceUrl = serviceUrl;
|
|
11
12
|
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Creates query context headers if cloudId is available and feature flag is enabled.
|
|
16
|
+
*/
|
|
17
|
+
createQueryContextHeaders(cloudId) {
|
|
18
|
+
if (!cloudId || !fg('enable_x_query_context_header')) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
'X-Query-Context': `ari:cloud:platform::site/${cloudId}`
|
|
23
|
+
};
|
|
24
|
+
}
|
|
12
25
|
async makeGraphQLRequest(body, options = {}) {
|
|
13
26
|
try {
|
|
14
|
-
|
|
27
|
+
// Automatically add X-Query-Context header if cloudId is available in context
|
|
28
|
+
const cloudId = this.getCloudId();
|
|
29
|
+
const queryContextHeaders = this.createQueryContextHeaders(cloudId);
|
|
30
|
+
|
|
31
|
+
// Merge headers: query context headers first, then provided headers (provided headers take precedence)
|
|
32
|
+
const mergedOptions = {
|
|
33
|
+
...options,
|
|
34
|
+
headers: {
|
|
35
|
+
...queryContextHeaders,
|
|
36
|
+
...options.headers
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return handleGraphQLRequest(this.serviceUrl, body, mergedOptions);
|
|
15
40
|
} catch (error) {
|
|
16
41
|
if (error instanceof GraphQLError) {
|
|
17
42
|
throw error;
|
|
@@ -8,7 +8,8 @@ export async function makeGraphQLRequestWithoutRetries(serviceUrl, body, options
|
|
|
8
8
|
const request = fetch(url, {
|
|
9
9
|
method: 'POST',
|
|
10
10
|
headers: new Headers({
|
|
11
|
-
'Content-Type': 'application/json'
|
|
11
|
+
'Content-Type': 'application/json',
|
|
12
|
+
...(options.headers || {})
|
|
12
13
|
}),
|
|
13
14
|
credentials: 'include',
|
|
14
15
|
body: JSON.stringify(body)
|
|
@@ -11,6 +11,7 @@ import { RestClient } from '../rest-client';
|
|
|
11
11
|
* @property {string[]} memberAccountIds - List of member account IDs to filter teams
|
|
12
12
|
* @property {boolean} useDefaultSort - Whether to use the default sort order
|
|
13
13
|
* @property {boolean} showEmptyTeams - Whether to return empty teams in the search
|
|
14
|
+
* @property {string[]} teamTypeIdsFilter - List of team type IDs to filter teams
|
|
14
15
|
*/
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -77,7 +78,8 @@ export class LegionClient extends RestClient {
|
|
|
77
78
|
membership: {
|
|
78
79
|
memberAccountIds: allTeamsQuery.memberAccountIds
|
|
79
80
|
},
|
|
80
|
-
showEmptyTeams: allTeamsQuery.showEmptyTeams
|
|
81
|
+
showEmptyTeams: allTeamsQuery.showEmptyTeams,
|
|
82
|
+
teamTypeIdsFilter: allTeamsQuery.teamTypeIdsFilter
|
|
81
83
|
});
|
|
82
84
|
const teams = entities.map(t => this.mapTeamSearchResponseV4ToTeamWithMembership(t));
|
|
83
85
|
return {
|
|
@@ -603,6 +603,13 @@ export class TeamsClient {
|
|
|
603
603
|
return this.measurePerformance('getUserContainers', () => this._collaborationGraphClient.getUserContainers(...args));
|
|
604
604
|
}
|
|
605
605
|
|
|
606
|
+
/**
|
|
607
|
+
* Fetch recommended users from collaboration graph
|
|
608
|
+
*/
|
|
609
|
+
async getRecommendedUsers(...args) {
|
|
610
|
+
return this.measurePerformance('getRecommendedUsers', () => this._collaborationGraphClient.getRecommendedUsers(...args));
|
|
611
|
+
}
|
|
612
|
+
|
|
606
613
|
/**
|
|
607
614
|
* Fetch mutatability of external managed user fields
|
|
608
615
|
*/
|
|
@@ -28,7 +28,7 @@ export function getSentryConfig(options) {
|
|
|
28
28
|
...DEFAULT_SENTRY_CONFIG,
|
|
29
29
|
// Standalone __VERSION__ is set from `bin/set-release-version.sh`
|
|
30
30
|
// when building to deploy to production
|
|
31
|
-
release: `${"@atlaskit/teams-client"}@${"
|
|
31
|
+
release: `${"@atlaskit/teams-client"}@${"4.27.0"}` ||
|
|
32
32
|
// @ts-ignore Jira - window.BUILD_KEY
|
|
33
33
|
window.BUILD_KEY || ( // @ts-ignore Confluence - window.__buildInfo
|
|
34
34
|
(_window$__buildInfo = window.__buildInfo) === null || _window$__buildInfo === void 0 ? void 0 : _window$__buildInfo.FRONTEND_VERSION) || '---',
|
|
@@ -26,7 +26,7 @@ export var allPermissions = function allPermissions(defaultPermission, isMember,
|
|
|
26
26
|
ADD_AGENT_TO_TEAM: defaultPermission,
|
|
27
27
|
ARCHIVE_TEAM: defaultPermission && isMember,
|
|
28
28
|
UNARCHIVE_TEAM: false,
|
|
29
|
-
CAN_EDIT_HIERARCHY: defaultPermission
|
|
29
|
+
CAN_EDIT_HIERARCHY: defaultPermission,
|
|
30
30
|
CAN_CHANGE_MEMBERSHIP_SETTINGS: defaultPermission
|
|
31
31
|
};
|
|
32
32
|
};
|
|
@@ -51,7 +51,9 @@ export var SCIMSyncTeamPermissions = function SCIMSyncTeamPermissions(isMember,
|
|
|
51
51
|
EDIT_DESCRIPTION: isMember || isOrgAdmin,
|
|
52
52
|
EDIT_TEAM_SETTINGS: isMember || isOrgAdmin,
|
|
53
53
|
EDIT_TEAM_LINK: isMember || isOrgAdmin,
|
|
54
|
-
EDIT_TEAM_NAME: isOrgAdmin && source === 'ATLASSIAN_GROUP' && fg('enable_edit_team_name_external_type_teams')
|
|
54
|
+
EDIT_TEAM_NAME: isOrgAdmin && source === 'ATLASSIAN_GROUP' && fg('enable_edit_team_name_external_type_teams'),
|
|
55
|
+
//Org admins should not be able to edit hierarchies of HRIS synced teams
|
|
56
|
+
CAN_EDIT_HIERARCHY: source === 'ATLASSIAN_GROUP' && isOrgAdmin
|
|
55
57
|
};
|
|
56
58
|
};
|
|
57
59
|
|
|
@@ -103,8 +105,7 @@ var getActiveTeamPermissionMap = function getActiveTeamPermissionMap(settings, p
|
|
|
103
105
|
return _objectSpread(_objectSpread(_objectSpread({}, allPermissions(false, isMember, isOrgAdmin)), SCIMSyncTeamPermissions(isMember, isOrgAdmin, source)), {}, {
|
|
104
106
|
ADD_AGENT_TO_TEAM: newTeamProfileEnabled && (isMember || isOrgAdmin),
|
|
105
107
|
REMOVE_AGENT_FROM_TEAM: newTeamProfileEnabled && (isMember || isOrgAdmin),
|
|
106
|
-
ARCHIVE_TEAM: isArchiveTeamEnabled && isOrgAdmin
|
|
107
|
-
CAN_EDIT_HIERARCHY: permission === 'FULL_WRITE' && isOrgAdmin
|
|
108
|
+
ARCHIVE_TEAM: isArchiveTeamEnabled && isOrgAdmin
|
|
108
109
|
});
|
|
109
110
|
} else if (settings === 'ORG_ADMIN_MANAGED') {
|
|
110
111
|
// NOTE: Only org admins will received FULL_WRITE permission
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
2
|
import { ExperiencePerformanceTypes, ExperienceTypes } from '@atlaskit/ufo';
|
|
3
3
|
import { TeamsUFOExperience } from './index';
|
|
4
|
-
var TeamsClientExperienceKeyList = ['getAllTeams', 'getTeamById', 'updateTeamById', 'querySettings', 'queryFeatureFlags', 'queryTeamMemberships', 'queryUser', 'inviteUsersToTeam', 'getMyTeamMembership', 'getTeamLinksByTeamId', 'createTeamLink', 'updateTeamLink', 'deleteTeamLink', 'reorderTeamLink', 'acceptTeamInvitation', 'declineTeamInvitation', 'selfJoinTeam', 'cancelJoinRequest', 'acceptJoinRequest', 'declineJoinRequest', 'deleteTeamMembership', 'revokeTeamInvite', 'deleteTeam', 'archiveTeam', 'unarchiveTeam', 'unlinkTeamFromGroup', 'isSingleFullMemberTeam', 'createTeam', 'createTeamContainers', 'createExternalTeam', 'getProfileWithMutability', 'getIsSiteAdmin', 'addUsersToTeam', 'removeTeamMemberships', 'getRecommendedProducts', 'joinOrRequestDefaultAccessToProductsBulk', 'getReadMediaToken', 'getWriteUserMediaToken', 'updateUserHeaderImage', 'getWriteTeamMediaToken', 'getSoftDeletedTeamById', 'restoreTeam', 'getUserInSiteUserBase', 'getLinkedTeamsBulk', 'getTeamProfileDetails', 'getUserContainers', 'getPermissions', 'getUserManageConfig', 'getMyAvatarUploadedStatus', 'deleteUserAvatar', 'getTeamLinkIcons', 'getTeamInSlack', 'getOrgScope', 'restoreTeamToSyncedGroup', 'getTeamAndGroupDiff', 'linkExistingTeamToGroup', 'fetchUserAvatarInfo', 'getOrgEligibilityForManagedTeams', 'updateUser', 'updateUserAvatar', 'disconnectTeamInSlack', 'updateTeamInSlack', 'getUserTenure', 'getAriFromUrl', 'getWebLinkTitle', 'addAgentToTeam', 'getTeamEnabledSites', 'assignTeamsToSites', 'removeAgentTeamAssociation', 'getAssignedTeams', 'setTeamSiteAssignmentPermission', 'getUnassignedTeams', 'getTeamSiteAssignmentOrgDetails', 'getTeamsToBeClonedToJsmSites', 'getReportingLines'];
|
|
4
|
+
var TeamsClientExperienceKeyList = ['getAllTeams', 'getTeamById', 'updateTeamById', 'querySettings', 'queryFeatureFlags', 'queryTeamMemberships', 'queryUser', 'inviteUsersToTeam', 'getMyTeamMembership', 'getTeamLinksByTeamId', 'createTeamLink', 'updateTeamLink', 'deleteTeamLink', 'reorderTeamLink', 'acceptTeamInvitation', 'declineTeamInvitation', 'selfJoinTeam', 'cancelJoinRequest', 'acceptJoinRequest', 'declineJoinRequest', 'deleteTeamMembership', 'revokeTeamInvite', 'deleteTeam', 'archiveTeam', 'unarchiveTeam', 'unlinkTeamFromGroup', 'isSingleFullMemberTeam', 'createTeam', 'createTeamContainers', 'createExternalTeam', 'getProfileWithMutability', 'getIsSiteAdmin', 'addUsersToTeam', 'removeTeamMemberships', 'getRecommendedProducts', 'joinOrRequestDefaultAccessToProductsBulk', 'getReadMediaToken', 'getWriteUserMediaToken', 'updateUserHeaderImage', 'getWriteTeamMediaToken', 'getSoftDeletedTeamById', 'restoreTeam', 'getUserInSiteUserBase', 'getLinkedTeamsBulk', 'getTeamProfileDetails', 'getUserContainers', 'getRecommendedUsers', 'getPermissions', 'getUserManageConfig', 'getMyAvatarUploadedStatus', 'deleteUserAvatar', 'getTeamLinkIcons', 'getTeamInSlack', 'getOrgScope', 'restoreTeamToSyncedGroup', 'getTeamAndGroupDiff', 'linkExistingTeamToGroup', 'fetchUserAvatarInfo', 'getOrgEligibilityForManagedTeams', 'updateUser', 'updateUserAvatar', 'disconnectTeamInSlack', 'updateTeamInSlack', 'getUserTenure', 'getAriFromUrl', 'getWebLinkTitle', 'addAgentToTeam', 'getTeamEnabledSites', 'assignTeamsToSites', 'removeAgentTeamAssociation', 'getAssignedTeams', 'setTeamSiteAssignmentPermission', 'getUnassignedTeams', 'getTeamSiteAssignmentOrgDetails', 'getTeamsToBeClonedToJsmSites', 'getReportingLines'];
|
|
5
5
|
export var TEAMS_CLIENT_EXPERIENCES = new Map(_toConsumableArray(TeamsClientExperienceKeyList.map(function (key) {
|
|
6
6
|
return [key,
|
|
7
7
|
// camelCase to kebab-case
|
|
@@ -45,7 +45,7 @@ export var TeamsUFOExperience = /*#__PURE__*/function (_UFOExperience) {
|
|
|
45
45
|
return _superPropGet(TeamsUFOExperience, "failure", this, 3)([{
|
|
46
46
|
metadata: {
|
|
47
47
|
error: createErrorMetadata(error),
|
|
48
|
-
packageVersion: "
|
|
48
|
+
packageVersion: "4.27.0",
|
|
49
49
|
packageName: "@atlaskit/teams-client"
|
|
50
50
|
}
|
|
51
51
|
}]);
|
|
@@ -53,7 +53,7 @@ export var TeamsUFOExperience = /*#__PURE__*/function (_UFOExperience) {
|
|
|
53
53
|
return _superPropGet(TeamsUFOExperience, "failure", this, 3)([{
|
|
54
54
|
metadata: {
|
|
55
55
|
error: 'unknown error',
|
|
56
|
-
packageVersion: "
|
|
56
|
+
packageVersion: "4.27.0",
|
|
57
57
|
packageName: "@atlaskit/teams-client"
|
|
58
58
|
}
|
|
59
59
|
}]);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates headers object with X-Query-Context header if cloudId is provided and feature flag is enabled.
|
|
5
|
+
* Use this for AGG client makeGraphQLRequest calls.
|
|
6
|
+
*/
|
|
7
|
+
export function createQueryContextHeaders(cloudId) {
|
|
8
|
+
if (!cloudId || !fg('enable_x_query_context_header')) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
'X-Query-Context': "ari:cloud:platform::site/".concat(cloudId)
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -44,6 +44,30 @@ export var CollaborationGraphClient = /*#__PURE__*/function (_RestClient) {
|
|
|
44
44
|
expanded: true
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
+
}, {
|
|
48
|
+
key: "getRecommendedUsers",
|
|
49
|
+
value: function getRecommendedUsers(_ref2) {
|
|
50
|
+
var accountId = _ref2.accountId,
|
|
51
|
+
cloudId = _ref2.cloudId,
|
|
52
|
+
_ref2$maxNumberOfResu = _ref2.maxNumberOfResults,
|
|
53
|
+
maxNumberOfResults = _ref2$maxNumberOfResu === void 0 ? 12 : _ref2$maxNumberOfResu,
|
|
54
|
+
_ref2$filter = _ref2.filter,
|
|
55
|
+
filter = _ref2$filter === void 0 ? 'account_status:"active" AND (NOT email_domain:"connect.atlassian.com") AND (NOT account_type:"app")' : _ref2$filter;
|
|
56
|
+
return this.postResource('/v2/recommend/user', {
|
|
57
|
+
context: {
|
|
58
|
+
userId: accountId,
|
|
59
|
+
tenantId: cloudId
|
|
60
|
+
},
|
|
61
|
+
modelRequestParams: {
|
|
62
|
+
experience: 'CgUserNearbyUser',
|
|
63
|
+
caller: 'atlas'
|
|
64
|
+
},
|
|
65
|
+
requestingUserId: accountId,
|
|
66
|
+
expand: 'existing',
|
|
67
|
+
maxNumberOfResults: maxNumberOfResults,
|
|
68
|
+
filter: filter
|
|
69
|
+
});
|
|
70
|
+
}
|
|
47
71
|
}]);
|
|
48
72
|
}(RestClient);
|
|
49
73
|
export default new CollaborationGraphClient({
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
1
2
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
3
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
4
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
@@ -5,8 +6,11 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
|
|
|
5
6
|
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
6
7
|
import _inherits from "@babel/runtime/helpers/inherits";
|
|
7
8
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
11
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
9
12
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
13
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
10
14
|
import { DefaultError, GraphQLError } from '../../common/utils/error';
|
|
11
15
|
import { BaseClient } from '../base-client';
|
|
12
16
|
import { handleGraphQLRequest } from './utils';
|
|
@@ -24,34 +28,57 @@ export var BaseGraphQlClient = /*#__PURE__*/function (_BaseClient) {
|
|
|
24
28
|
value: function setServiceUrl(serviceUrl) {
|
|
25
29
|
this.serviceUrl = serviceUrl;
|
|
26
30
|
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Creates query context headers if cloudId is available and feature flag is enabled.
|
|
34
|
+
*/
|
|
35
|
+
}, {
|
|
36
|
+
key: "createQueryContextHeaders",
|
|
37
|
+
value: function createQueryContextHeaders(cloudId) {
|
|
38
|
+
if (!cloudId || !fg('enable_x_query_context_header')) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
'X-Query-Context': "ari:cloud:platform::site/".concat(cloudId)
|
|
43
|
+
};
|
|
44
|
+
}
|
|
27
45
|
}, {
|
|
28
46
|
key: "makeGraphQLRequest",
|
|
29
47
|
value: function () {
|
|
30
48
|
var _makeGraphQLRequest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(body) {
|
|
31
49
|
var options,
|
|
50
|
+
cloudId,
|
|
51
|
+
queryContextHeaders,
|
|
52
|
+
mergedOptions,
|
|
32
53
|
_args = arguments;
|
|
33
54
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
34
55
|
while (1) switch (_context.prev = _context.next) {
|
|
35
56
|
case 0:
|
|
36
57
|
options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
|
|
37
58
|
_context.prev = 1;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
59
|
+
// Automatically add X-Query-Context header if cloudId is available in context
|
|
60
|
+
cloudId = this.getCloudId();
|
|
61
|
+
queryContextHeaders = this.createQueryContextHeaders(cloudId); // Merge headers: query context headers first, then provided headers (provided headers take precedence)
|
|
62
|
+
mergedOptions = _objectSpread(_objectSpread({}, options), {}, {
|
|
63
|
+
headers: _objectSpread(_objectSpread({}, queryContextHeaders), options.headers)
|
|
64
|
+
});
|
|
65
|
+
return _context.abrupt("return", handleGraphQLRequest(this.serviceUrl, body, mergedOptions));
|
|
66
|
+
case 8:
|
|
67
|
+
_context.prev = 8;
|
|
41
68
|
_context.t0 = _context["catch"](1);
|
|
42
69
|
if (!(_context.t0 instanceof GraphQLError)) {
|
|
43
|
-
_context.next =
|
|
70
|
+
_context.next = 12;
|
|
44
71
|
break;
|
|
45
72
|
}
|
|
46
73
|
throw _context.t0;
|
|
47
|
-
case
|
|
74
|
+
case 12:
|
|
48
75
|
this.logException(_context.t0, 'UnknownError in GraphQLClient.makeGraphQLRequestWithoutRetries');
|
|
49
76
|
throw new DefaultError({});
|
|
50
|
-
case
|
|
77
|
+
case 14:
|
|
51
78
|
case "end":
|
|
52
79
|
return _context.stop();
|
|
53
80
|
}
|
|
54
|
-
}, _callee, this, [[1,
|
|
81
|
+
}, _callee, this, [[1, 8]]);
|
|
55
82
|
}));
|
|
56
83
|
function makeGraphQLRequest(_x) {
|
|
57
84
|
return _makeGraphQLRequest.apply(this, arguments);
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
1
2
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
3
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
6
|
import { GraphQLError, HttpError } from '../../../common/utils/error';
|
|
4
7
|
import { EXPONENTIAL_BACKOFF_RETRY_POLICY, is5xx, isFetchResponse, withExponentialBackoff } from '../../../common/utils/http';
|
|
5
8
|
import { handleResponse } from '../../../common/utils/status-code-handlers-provider';
|
|
@@ -25,9 +28,9 @@ function _makeGraphQLRequestWithoutRetries() {
|
|
|
25
28
|
url = serviceUrl + operationNameQuery;
|
|
26
29
|
request = fetch(url, {
|
|
27
30
|
method: 'POST',
|
|
28
|
-
headers: new Headers({
|
|
31
|
+
headers: new Headers(_objectSpread({
|
|
29
32
|
'Content-Type': 'application/json'
|
|
30
|
-
}),
|
|
33
|
+
}, options.headers || {})),
|
|
31
34
|
credentials: 'include',
|
|
32
35
|
body: JSON.stringify(body)
|
|
33
36
|
}).then(function (res) {
|
|
@@ -26,6 +26,7 @@ import { RestClient } from '../rest-client';
|
|
|
26
26
|
* @property {string[]} memberAccountIds - List of member account IDs to filter teams
|
|
27
27
|
* @property {boolean} useDefaultSort - Whether to use the default sort order
|
|
28
28
|
* @property {boolean} showEmptyTeams - Whether to return empty teams in the search
|
|
29
|
+
* @property {string[]} teamTypeIdsFilter - List of team type IDs to filter teams
|
|
29
30
|
*/
|
|
30
31
|
|
|
31
32
|
/**
|
|
@@ -124,7 +125,8 @@ export var LegionClient = /*#__PURE__*/function (_RestClient) {
|
|
|
124
125
|
membership: {
|
|
125
126
|
memberAccountIds: allTeamsQuery.memberAccountIds
|
|
126
127
|
},
|
|
127
|
-
showEmptyTeams: allTeamsQuery.showEmptyTeams
|
|
128
|
+
showEmptyTeams: allTeamsQuery.showEmptyTeams,
|
|
129
|
+
teamTypeIdsFilter: allTeamsQuery.teamTypeIdsFilter
|
|
128
130
|
});
|
|
129
131
|
case 5:
|
|
130
132
|
_yield$this$postResou = _context2.sent;
|