@atlaskit/teams-client 4.21.0 → 4.22.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/common/utils/permissions/constants.js +52 -8
  3. package/dist/cjs/common/utils/permissions/has-permission.js +4 -3
  4. package/dist/cjs/common/utils/permissions/types.js +2 -2
  5. package/dist/cjs/common/utils/ufo/constants.js +1 -1
  6. package/dist/cjs/common/utils/ufo/index.js +2 -2
  7. package/dist/cjs/services/legion-client/index.js +213 -192
  8. package/dist/cjs/services/main.js +566 -540
  9. package/dist/cjs/services/sentry/utils/get-sentry-config.js +1 -1
  10. package/dist/es2019/common/utils/permissions/constants.js +53 -8
  11. package/dist/es2019/common/utils/permissions/has-permission.js +4 -3
  12. package/dist/es2019/common/utils/permissions/types.js +2 -2
  13. package/dist/es2019/common/utils/ufo/constants.js +1 -1
  14. package/dist/es2019/common/utils/ufo/index.js +2 -2
  15. package/dist/es2019/services/legion-client/index.js +4 -0
  16. package/dist/es2019/services/main.js +6 -0
  17. package/dist/es2019/services/sentry/utils/get-sentry-config.js +1 -1
  18. package/dist/esm/common/utils/permissions/constants.js +52 -8
  19. package/dist/esm/common/utils/permissions/has-permission.js +4 -3
  20. package/dist/esm/common/utils/permissions/types.js +2 -2
  21. package/dist/esm/common/utils/ufo/constants.js +1 -1
  22. package/dist/esm/common/utils/ufo/index.js +2 -2
  23. package/dist/esm/services/legion-client/index.js +213 -192
  24. package/dist/esm/services/main.js +566 -540
  25. package/dist/esm/services/sentry/utils/get-sentry-config.js +1 -1
  26. package/dist/types/common/utils/permissions/constants.d.ts +3 -3
  27. package/dist/types/common/utils/permissions/has-permission.d.ts +3 -2
  28. package/dist/types/common/utils/permissions/types.d.ts +1 -1
  29. package/dist/types/common/utils/ufo/constants.d.ts +2 -2
  30. package/dist/types/services/legion-client/index.d.ts +1 -0
  31. package/dist/types/services/main.d.ts +4 -0
  32. package/dist/types-ts4.5/common/utils/permissions/constants.d.ts +3 -3
  33. package/dist/types-ts4.5/common/utils/permissions/has-permission.d.ts +3 -2
  34. package/dist/types-ts4.5/common/utils/permissions/types.d.ts +3 -1
  35. package/dist/types-ts4.5/common/utils/ufo/constants.d.ts +2 -1
  36. package/dist/types-ts4.5/services/legion-client/index.d.ts +1 -0
  37. package/dist/types-ts4.5/services/main.d.ts +4 -0
  38. package/package.json +1 -4
@@ -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("4.20.0") ||
39
+ release: "".concat("@atlaskit/teams-client", "@").concat("0.0.0-development") ||
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) || '---',
@@ -1,6 +1,6 @@
1
1
  import FeatureGates from '@atlaskit/feature-gate-js-client';
2
2
  import { fg } from '@atlaskit/platform-feature-flags';
3
- export const allPermissions = (defaultPermission, isMember) => ({
3
+ export const allPermissions = (defaultPermission, isMember, isOrgAdmin) => ({
4
4
  ADD_MEMBER_TO_TEAM: defaultPermission,
5
5
  JOIN_TEAM: defaultPermission,
6
6
  REQUEST_TO_JOIN: defaultPermission,
@@ -17,9 +17,11 @@ export const allPermissions = (defaultPermission, isMember) => ({
17
17
  DELETE_TEAM: defaultPermission,
18
18
  EDIT_TEAM_SETTINGS: defaultPermission,
19
19
  EDIT_TEAM_MEMBERSHIP: defaultPermission,
20
+ EDIT_TEAM_TYPE: defaultPermission && isOrgAdmin,
20
21
  REMOVE_AGENT_FROM_TEAM: defaultPermission,
21
22
  ADD_AGENT_TO_TEAM: defaultPermission,
22
- ARCHIVE_TEAM: defaultPermission && isMember
23
+ ARCHIVE_TEAM: defaultPermission && isMember,
24
+ UNARCHIVE_TEAM: false
23
25
  });
24
26
  export const vanityActions = ['EDIT_DESCRIPTION', 'EDIT_TEAM_NAME', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK'];
25
27
  export const openPermissions = permission => ({
@@ -39,30 +41,73 @@ export const SCIMSyncTeamPermissions = (isMember, isOrgAdmin, source) => ({
39
41
  EDIT_TEAM_LINK: isMember || isOrgAdmin,
40
42
  EDIT_TEAM_NAME: isOrgAdmin && source === 'ATLASSIAN_GROUP' && fg('enable_edit_team_name_external_type_teams')
41
43
  });
42
- export const getPermissionMap = (settings, permission, isMember, isOrgAdmin, source) => {
44
+
45
+ /**
46
+ * Returns permission map for disbanded teams
47
+ * Only UNARCHIVE_TEAM action is allowed based on team settings and user permissions
48
+ */
49
+ const getDisbandedTeamPermissionMap = (settings, permission, isMember, isOrgAdmin) => {
50
+ const newTeamProfileEnabled = FeatureGates.getExperimentValue('new_team_profile', 'isEnabled', false);
51
+ const isArchiveTeamEnabled = fg('legion-enable-archive-teams') && newTeamProfileEnabled;
52
+
53
+ // Base permission map - all actions disabled for disbanded teams
54
+ const basePermissions = allPermissions(false, false, false);
55
+
56
+ // UNARCHIVE_TEAM permission based on team settings
57
+ let canUnarchive = false;
58
+ if (isArchiveTeamEnabled) {
59
+ if (settings === 'EXTERNAL') {
60
+ // For EXTERNAL teams, only org admins can unarchive
61
+ canUnarchive = isOrgAdmin;
62
+ } else if (settings === 'OPEN' || settings === 'MEMBER_INVITE') {
63
+ // For OPEN and MEMBER_INVITE teams, members with FULL_WRITE can unarchive
64
+ canUnarchive = isMember && permission === 'FULL_WRITE';
65
+ }
66
+ }
67
+ return {
68
+ ...basePermissions,
69
+ UNARCHIVE_TEAM: canUnarchive,
70
+ DELETE_TEAM: canUnarchive
71
+ };
72
+ };
73
+
74
+ /**
75
+ * Returns permission map for active teams based on team settings
76
+ */
77
+ const getActiveTeamPermissionMap = (settings, permission, isMember, isOrgAdmin, source) => {
43
78
  const newTeamProfileEnabled = FeatureGates.getExperimentValue('new_team_profile', 'isEnabled', false);
44
79
  const isArchiveTeamEnabled = fg('legion-enable-archive-teams') && newTeamProfileEnabled;
45
80
  if (settings === 'OPEN') {
46
81
  return {
47
- ...allPermissions(permission === 'FULL_WRITE', isMember),
82
+ ...allPermissions(permission === 'FULL_WRITE', isMember, isOrgAdmin),
48
83
  ...openPermissions(permission),
49
84
  ARCHIVE_TEAM: isArchiveTeamEnabled && permission === 'FULL_WRITE' && isMember
50
85
  };
51
86
  }
52
87
  if (settings === 'MEMBER_INVITE') {
53
88
  return {
54
- ...allPermissions(permission === 'FULL_WRITE', isMember),
89
+ ...allPermissions(permission === 'FULL_WRITE', isMember, isOrgAdmin),
55
90
  ...inviteOnlyPermissions(permission),
56
91
  ARCHIVE_TEAM: isArchiveTeamEnabled && permission === 'FULL_WRITE' && isMember
57
92
  };
58
93
  } else if (settings === 'EXTERNAL') {
59
94
  return {
60
- ...allPermissions(false, isMember),
95
+ ...allPermissions(false, isMember, isOrgAdmin),
61
96
  ...SCIMSyncTeamPermissions(isMember, isOrgAdmin, source),
62
97
  ADD_AGENT_TO_TEAM: newTeamProfileEnabled && (isMember || isOrgAdmin),
63
98
  REMOVE_AGENT_FROM_TEAM: newTeamProfileEnabled && (isMember || isOrgAdmin),
64
- ARCHIVE_TEAM: isArchiveTeamEnabled && isOrgAdmin
99
+ ARCHIVE_TEAM: isArchiveTeamEnabled && isOrgAdmin,
100
+ EDIT_TEAM_TYPE: isOrgAdmin
65
101
  };
66
102
  }
67
- return allPermissions(false, false);
103
+ return allPermissions(false, false, false);
104
+ };
105
+ export const getPermissionMap = (settings, permission, isMember, isOrgAdmin, source, state) => {
106
+ // Handle disbanded teams with special permission map
107
+ if (state === 'DISBANDED') {
108
+ return getDisbandedTeamPermissionMap(settings, permission, isMember, isOrgAdmin);
109
+ }
110
+
111
+ // For active teams (or when state is not provided), use existing logic
112
+ return getActiveTeamPermissionMap(settings, permission, isMember, isOrgAdmin, source);
68
113
  };
@@ -1,6 +1,6 @@
1
1
  import { isMember } from '../team';
2
2
  import { getPermissionMap, vanityActions } from './constants';
3
- export function hasPermission(action, settings, permission, isPeopleBrowseEnabled, currentUserMembership, teamVisibilityPermissions, source) {
3
+ export function hasPermission(action, settings, permission, isPeopleBrowseEnabled, currentUserMembership, teamVisibilityPermissions, source, state) {
4
4
  if (!isPeopleBrowseEnabled && !vanityActions.includes(action)) {
5
5
  return false;
6
6
  }
@@ -11,14 +11,15 @@ export function hasPermission(action, settings, permission, isPeopleBrowseEnable
11
11
  teamPermission: permission,
12
12
  isMemberOfTeam,
13
13
  isOrgAdmin,
14
- source
14
+ source,
15
+ state
15
16
  });
16
17
  }
17
18
  /**
18
19
  * Determines if a user has permission perform a given action on a team
19
20
  */
20
21
  export function userCan(action, options) {
21
- return getPermissionMap(options.membershipSettings, options.teamPermission, options.isMemberOfTeam, options.isOrgAdmin, options.source)[action];
22
+ return getPermissionMap(options.membershipSettings, options.teamPermission, options.isMemberOfTeam, options.isOrgAdmin, options.source, options.state)[action];
22
23
  }
23
24
 
24
25
  /**
@@ -1,5 +1,5 @@
1
1
  export const AllTeamActions = ['ADD_MEMBER_TO_TEAM', 'JOIN_TEAM', 'REQUEST_TO_JOIN', 'CANCEL_JOIN_REQUEST', 'APPROVE_JOIN_REQUEST', 'REJECT_JOIN_REQUEST', 'REMOVE_MEMBER_FROM_TEAM', 'CANCEL_INVITE', 'LEAVE_TEAM', 'REMOVE_AGENT_FROM_TEAM', 'ADD_AGENT_TO_TEAM',
2
2
  // Visual
3
- 'EDIT_TEAM_NAME', 'EDIT_DESCRIPTION', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK', 'EDIT_TEAM_SETTINGS', 'EDIT_TEAM_MEMBERSHIP',
3
+ 'EDIT_TEAM_NAME', 'EDIT_DESCRIPTION', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK', 'EDIT_TEAM_SETTINGS', 'EDIT_TEAM_MEMBERSHIP', 'EDIT_TEAM_TYPE',
4
4
  // Serious
5
- 'DELETE_TEAM', 'ARCHIVE_TEAM'];
5
+ 'DELETE_TEAM', 'ARCHIVE_TEAM', 'UNARCHIVE_TEAM'];
@@ -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', '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', '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
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: "4.20.0",
30
+ packageVersion: "0.0.0-development",
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: "4.20.0",
38
+ packageVersion: "0.0.0-development",
39
39
  packageName: "@atlaskit/teams-client"
40
40
  }
41
41
  });
@@ -251,6 +251,10 @@ export class LegionClient extends RestClient {
251
251
  const siteId = this.getCloudId();
252
252
  return this.postResourceRaw(`${v4UrlPath}/archive?siteId=${siteId}`, JSON.stringify([this.trimTeamARI(teamId)]));
253
253
  }
254
+ async unArchiveTeam(teamId) {
255
+ const siteId = this.getCloudId();
256
+ return this.postResourceRaw(`${v4UrlPath}/unarchive?siteId=${siteId}`, JSON.stringify([this.trimTeamARI(teamId)]));
257
+ }
254
258
 
255
259
  /**
256
260
  * @private
@@ -350,6 +350,12 @@ export class TeamsClient {
350
350
  async archiveTeam(teamId) {
351
351
  return this.measurePerformance('archiveTeam', () => this._legionClient.archiveTeam(teamId));
352
352
  }
353
+ /**
354
+ * Unarchive a team
355
+ */
356
+ async unarchiveTeam(teamId) {
357
+ return this.measurePerformance('unarchiveTeam', () => this._legionClient.unArchiveTeam(teamId));
358
+ }
353
359
 
354
360
  /**
355
361
  * @private
@@ -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"}@${"4.20.0"}` ||
31
+ release: `${"@atlaskit/teams-client"}@${"0.0.0-development"}` ||
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) || '---',
@@ -3,7 +3,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
3
3
  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; }
4
4
  import FeatureGates from '@atlaskit/feature-gate-js-client';
5
5
  import { fg } from '@atlaskit/platform-feature-flags';
6
- export var allPermissions = function allPermissions(defaultPermission, isMember) {
6
+ export var allPermissions = function allPermissions(defaultPermission, isMember, isOrgAdmin) {
7
7
  return {
8
8
  ADD_MEMBER_TO_TEAM: defaultPermission,
9
9
  JOIN_TEAM: defaultPermission,
@@ -21,9 +21,11 @@ export var allPermissions = function allPermissions(defaultPermission, isMember)
21
21
  DELETE_TEAM: defaultPermission,
22
22
  EDIT_TEAM_SETTINGS: defaultPermission,
23
23
  EDIT_TEAM_MEMBERSHIP: defaultPermission,
24
+ EDIT_TEAM_TYPE: defaultPermission && isOrgAdmin,
24
25
  REMOVE_AGENT_FROM_TEAM: defaultPermission,
25
26
  ADD_AGENT_TO_TEAM: defaultPermission,
26
- ARCHIVE_TEAM: defaultPermission && isMember
27
+ ARCHIVE_TEAM: defaultPermission && isMember,
28
+ UNARCHIVE_TEAM: false
27
29
  };
28
30
  };
29
31
  export var vanityActions = ['EDIT_DESCRIPTION', 'EDIT_TEAM_NAME', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK'];
@@ -50,24 +52,66 @@ export var SCIMSyncTeamPermissions = function SCIMSyncTeamPermissions(isMember,
50
52
  EDIT_TEAM_NAME: isOrgAdmin && source === 'ATLASSIAN_GROUP' && fg('enable_edit_team_name_external_type_teams')
51
53
  };
52
54
  };
53
- export var getPermissionMap = function getPermissionMap(settings, permission, isMember, isOrgAdmin, source) {
55
+
56
+ /**
57
+ * Returns permission map for disbanded teams
58
+ * Only UNARCHIVE_TEAM action is allowed based on team settings and user permissions
59
+ */
60
+ var getDisbandedTeamPermissionMap = function getDisbandedTeamPermissionMap(settings, permission, isMember, isOrgAdmin) {
61
+ var newTeamProfileEnabled = FeatureGates.getExperimentValue('new_team_profile', 'isEnabled', false);
62
+ var isArchiveTeamEnabled = fg('legion-enable-archive-teams') && newTeamProfileEnabled;
63
+
64
+ // Base permission map - all actions disabled for disbanded teams
65
+ var basePermissions = allPermissions(false, false, false);
66
+
67
+ // UNARCHIVE_TEAM permission based on team settings
68
+ var canUnarchive = false;
69
+ if (isArchiveTeamEnabled) {
70
+ if (settings === 'EXTERNAL') {
71
+ // For EXTERNAL teams, only org admins can unarchive
72
+ canUnarchive = isOrgAdmin;
73
+ } else if (settings === 'OPEN' || settings === 'MEMBER_INVITE') {
74
+ // For OPEN and MEMBER_INVITE teams, members with FULL_WRITE can unarchive
75
+ canUnarchive = isMember && permission === 'FULL_WRITE';
76
+ }
77
+ }
78
+ return _objectSpread(_objectSpread({}, basePermissions), {}, {
79
+ UNARCHIVE_TEAM: canUnarchive,
80
+ DELETE_TEAM: canUnarchive
81
+ });
82
+ };
83
+
84
+ /**
85
+ * Returns permission map for active teams based on team settings
86
+ */
87
+ var getActiveTeamPermissionMap = function getActiveTeamPermissionMap(settings, permission, isMember, isOrgAdmin, source) {
54
88
  var newTeamProfileEnabled = FeatureGates.getExperimentValue('new_team_profile', 'isEnabled', false);
55
89
  var isArchiveTeamEnabled = fg('legion-enable-archive-teams') && newTeamProfileEnabled;
56
90
  if (settings === 'OPEN') {
57
- return _objectSpread(_objectSpread(_objectSpread({}, allPermissions(permission === 'FULL_WRITE', isMember)), openPermissions(permission)), {}, {
91
+ return _objectSpread(_objectSpread(_objectSpread({}, allPermissions(permission === 'FULL_WRITE', isMember, isOrgAdmin)), openPermissions(permission)), {}, {
58
92
  ARCHIVE_TEAM: isArchiveTeamEnabled && permission === 'FULL_WRITE' && isMember
59
93
  });
60
94
  }
61
95
  if (settings === 'MEMBER_INVITE') {
62
- return _objectSpread(_objectSpread(_objectSpread({}, allPermissions(permission === 'FULL_WRITE', isMember)), inviteOnlyPermissions(permission)), {}, {
96
+ return _objectSpread(_objectSpread(_objectSpread({}, allPermissions(permission === 'FULL_WRITE', isMember, isOrgAdmin)), inviteOnlyPermissions(permission)), {}, {
63
97
  ARCHIVE_TEAM: isArchiveTeamEnabled && permission === 'FULL_WRITE' && isMember
64
98
  });
65
99
  } else if (settings === 'EXTERNAL') {
66
- return _objectSpread(_objectSpread(_objectSpread({}, allPermissions(false, isMember)), SCIMSyncTeamPermissions(isMember, isOrgAdmin, source)), {}, {
100
+ return _objectSpread(_objectSpread(_objectSpread({}, allPermissions(false, isMember, isOrgAdmin)), SCIMSyncTeamPermissions(isMember, isOrgAdmin, source)), {}, {
67
101
  ADD_AGENT_TO_TEAM: newTeamProfileEnabled && (isMember || isOrgAdmin),
68
102
  REMOVE_AGENT_FROM_TEAM: newTeamProfileEnabled && (isMember || isOrgAdmin),
69
- ARCHIVE_TEAM: isArchiveTeamEnabled && isOrgAdmin
103
+ ARCHIVE_TEAM: isArchiveTeamEnabled && isOrgAdmin,
104
+ EDIT_TEAM_TYPE: isOrgAdmin
70
105
  });
71
106
  }
72
- return allPermissions(false, false);
107
+ return allPermissions(false, false, false);
108
+ };
109
+ export var getPermissionMap = function getPermissionMap(settings, permission, isMember, isOrgAdmin, source, state) {
110
+ // Handle disbanded teams with special permission map
111
+ if (state === 'DISBANDED') {
112
+ return getDisbandedTeamPermissionMap(settings, permission, isMember, isOrgAdmin);
113
+ }
114
+
115
+ // For active teams (or when state is not provided), use existing logic
116
+ return getActiveTeamPermissionMap(settings, permission, isMember, isOrgAdmin, source);
73
117
  };
@@ -1,6 +1,6 @@
1
1
  import { isMember } from '../team';
2
2
  import { getPermissionMap, vanityActions } from './constants';
3
- export function hasPermission(action, settings, permission, isPeopleBrowseEnabled, currentUserMembership, teamVisibilityPermissions, source) {
3
+ export function hasPermission(action, settings, permission, isPeopleBrowseEnabled, currentUserMembership, teamVisibilityPermissions, source, state) {
4
4
  if (!isPeopleBrowseEnabled && !vanityActions.includes(action)) {
5
5
  return false;
6
6
  }
@@ -11,14 +11,15 @@ export function hasPermission(action, settings, permission, isPeopleBrowseEnable
11
11
  teamPermission: permission,
12
12
  isMemberOfTeam: isMemberOfTeam,
13
13
  isOrgAdmin: isOrgAdmin,
14
- source: source
14
+ source: source,
15
+ state: state
15
16
  });
16
17
  }
17
18
  /**
18
19
  * Determines if a user has permission perform a given action on a team
19
20
  */
20
21
  export function userCan(action, options) {
21
- return getPermissionMap(options.membershipSettings, options.teamPermission, options.isMemberOfTeam, options.isOrgAdmin, options.source)[action];
22
+ return getPermissionMap(options.membershipSettings, options.teamPermission, options.isMemberOfTeam, options.isOrgAdmin, options.source, options.state)[action];
22
23
  }
23
24
 
24
25
  /**
@@ -1,5 +1,5 @@
1
1
  export var AllTeamActions = ['ADD_MEMBER_TO_TEAM', 'JOIN_TEAM', 'REQUEST_TO_JOIN', 'CANCEL_JOIN_REQUEST', 'APPROVE_JOIN_REQUEST', 'REJECT_JOIN_REQUEST', 'REMOVE_MEMBER_FROM_TEAM', 'CANCEL_INVITE', 'LEAVE_TEAM', 'REMOVE_AGENT_FROM_TEAM', 'ADD_AGENT_TO_TEAM',
2
2
  // Visual
3
- 'EDIT_TEAM_NAME', 'EDIT_DESCRIPTION', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK', 'EDIT_TEAM_SETTINGS', 'EDIT_TEAM_MEMBERSHIP',
3
+ 'EDIT_TEAM_NAME', 'EDIT_DESCRIPTION', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK', 'EDIT_TEAM_SETTINGS', 'EDIT_TEAM_MEMBERSHIP', 'EDIT_TEAM_TYPE',
4
4
  // Serious
5
- 'DELETE_TEAM', 'ARCHIVE_TEAM'];
5
+ 'DELETE_TEAM', 'ARCHIVE_TEAM', 'UNARCHIVE_TEAM'];
@@ -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', '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', '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'];
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: "4.20.0",
48
+ packageVersion: "0.0.0-development",
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: "4.20.0",
56
+ packageVersion: "0.0.0-development",
57
57
  packageName: "@atlaskit/teams-client"
58
58
  }
59
59
  }]);