@atlaskit/profilecard 24.14.1 → 24.16.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 +22 -0
- package/__tests__/vr-tests/agent-profilecard.vr.tsx +5 -5
- package/__tests__/vr-tests/user-profilecard.vr.tsx +30 -30
- package/dist/cjs/client/ProfileCardClient.js +10 -10
- package/dist/cjs/client/RovoAgentCardClient.js +172 -56
- package/dist/cjs/client/TeamProfileCardClient.js +44 -14
- package/dist/cjs/client/UserProfileCardClient.js +2 -9
- package/dist/cjs/client/errorUtils.js +83 -5
- package/dist/cjs/components/Agent/Actions.js +20 -9
- package/dist/cjs/components/Agent/ActionsCompiled.js +18 -8
- package/dist/cjs/components/Agent/AgentDeleteConfirmationModal.js +3 -1
- package/dist/cjs/components/Agent/AgentProfileCard.js +24 -14
- package/dist/cjs/components/Agent/AgentProfileCardCompiled.js +23 -8
- package/dist/cjs/components/Agent/AgentProfileCardResourced.js +8 -5
- package/dist/cjs/components/Agent/AgentProfileCardTrigger.js +6 -2
- package/dist/cjs/components/Agent/hooks/useAgentActions.js +61 -30
- package/dist/cjs/components/Team/TeamForbiddenErrorState.js +21 -6
- package/dist/cjs/components/Team/TeamLoadingState.js +21 -6
- package/dist/cjs/components/Team/TeamProfileCard.js +155 -60
- package/dist/cjs/components/Team/TeamProfileCardTrigger.js +104 -33
- package/dist/cjs/components/common/ProfileCardTrigger.js +3 -1
- package/dist/cjs/components/team-profile-card/main.js +18 -9
- package/dist/cjs/components/team-profile-card/team-connections/main.js +36 -17
- package/dist/cjs/util/analytics.js +55 -0
- package/dist/es2019/client/ProfileCardClient.js +10 -10
- package/dist/es2019/client/RovoAgentCardClient.js +186 -58
- package/dist/es2019/client/TeamProfileCardClient.js +49 -16
- package/dist/es2019/client/UserProfileCardClient.js +3 -10
- package/dist/es2019/client/errorUtils.js +84 -3
- package/dist/es2019/components/Agent/Actions.js +21 -9
- package/dist/es2019/components/Agent/ActionsCompiled.js +19 -8
- package/dist/es2019/components/Agent/AgentDeleteConfirmationModal.js +3 -1
- package/dist/es2019/components/Agent/AgentProfileCard.js +24 -13
- package/dist/es2019/components/Agent/AgentProfileCardCompiled.js +23 -9
- package/dist/es2019/components/Agent/AgentProfileCardResourced.js +9 -5
- package/dist/es2019/components/Agent/AgentProfileCardTrigger.js +7 -2
- package/dist/es2019/components/Agent/hooks/useAgentActions.js +62 -30
- package/dist/es2019/components/Team/TeamForbiddenErrorState.js +17 -6
- package/dist/es2019/components/Team/TeamLoadingState.js +17 -6
- package/dist/es2019/components/Team/TeamProfileCard.js +144 -54
- package/dist/es2019/components/Team/TeamProfileCardTrigger.js +74 -10
- package/dist/es2019/components/common/ProfileCardTrigger.js +3 -1
- package/dist/es2019/components/team-profile-card/main.js +19 -9
- package/dist/es2019/components/team-profile-card/team-connections/main.js +38 -17
- package/dist/es2019/util/analytics.js +55 -0
- package/dist/esm/client/ProfileCardClient.js +10 -10
- package/dist/esm/client/RovoAgentCardClient.js +174 -58
- package/dist/esm/client/TeamProfileCardClient.js +46 -16
- package/dist/esm/client/UserProfileCardClient.js +3 -10
- package/dist/esm/client/errorUtils.js +82 -4
- package/dist/esm/components/Agent/Actions.js +20 -9
- package/dist/esm/components/Agent/ActionsCompiled.js +18 -8
- package/dist/esm/components/Agent/AgentDeleteConfirmationModal.js +3 -1
- package/dist/esm/components/Agent/AgentProfileCard.js +25 -13
- package/dist/esm/components/Agent/AgentProfileCardCompiled.js +24 -9
- package/dist/esm/components/Agent/AgentProfileCardResourced.js +8 -5
- package/dist/esm/components/Agent/AgentProfileCardTrigger.js +6 -2
- package/dist/esm/components/Agent/hooks/useAgentActions.js +61 -30
- package/dist/esm/components/Team/TeamForbiddenErrorState.js +22 -7
- package/dist/esm/components/Team/TeamLoadingState.js +22 -7
- package/dist/esm/components/Team/TeamProfileCard.js +156 -61
- package/dist/esm/components/Team/TeamProfileCardTrigger.js +105 -34
- package/dist/esm/components/common/ProfileCardTrigger.js +3 -1
- package/dist/esm/components/team-profile-card/main.js +18 -9
- package/dist/esm/components/team-profile-card/team-connections/main.js +36 -17
- package/dist/esm/util/analytics.js +55 -0
- package/dist/types/client/ProfileCardClient.d.ts +5 -5
- package/dist/types/client/RovoAgentCardClient.d.ts +5 -4
- package/dist/types/client/TeamProfileCardClient.d.ts +2 -1
- package/dist/types/client/errorUtils.d.ts +2 -1
- package/dist/types/client/types.d.ts +14 -2
- package/dist/types/components/Team/TeamForbiddenErrorState.d.ts +2 -1
- package/dist/types/components/Team/TeamLoadingState.d.ts +2 -1
- package/dist/types/components/Team/TeamProfileCardTrigger.d.ts +7 -2
- package/dist/types/types.d.ts +2 -0
- package/dist/types/util/analytics.d.ts +46 -2
- package/dist/types-ts4.5/client/ProfileCardClient.d.ts +5 -5
- package/dist/types-ts4.5/client/RovoAgentCardClient.d.ts +5 -4
- package/dist/types-ts4.5/client/TeamProfileCardClient.d.ts +2 -1
- package/dist/types-ts4.5/client/errorUtils.d.ts +2 -1
- package/dist/types-ts4.5/client/types.d.ts +14 -2
- package/dist/types-ts4.5/components/Team/TeamForbiddenErrorState.d.ts +2 -1
- package/dist/types-ts4.5/components/Team/TeamLoadingState.d.ts +2 -1
- package/dist/types-ts4.5/components/Team/TeamProfileCardTrigger.d.ts +7 -2
- package/dist/types-ts4.5/types.d.ts +2 -0
- package/dist/types-ts4.5/util/analytics.d.ts +46 -2
- package/package.json +8 -8
|
@@ -19,8 +19,10 @@ var _reactIntlNext = require("react-intl-next");
|
|
|
19
19
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
20
20
|
var _giveKudos = require("@atlaskit/give-kudos");
|
|
21
21
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
22
|
+
var _platformFeatureFlagsReact = require("@atlaskit/platform-feature-flags-react");
|
|
22
23
|
var _popup = _interopRequireDefault(require("@atlaskit/popup"));
|
|
23
24
|
var _compiled = require("@atlaskit/primitives/compiled");
|
|
25
|
+
var _teamsAppInternalAnalytics = require("@atlaskit/teams-app-internal-analytics");
|
|
24
26
|
var _constants = require("@atlaskit/theme/constants");
|
|
25
27
|
var _filterActions2 = _interopRequireDefault(require("../../internal/filterActions"));
|
|
26
28
|
var _messages = _interopRequireDefault(require("../../messages"));
|
|
@@ -32,6 +34,8 @@ var _Error = require("../Error");
|
|
|
32
34
|
var _lazyTeamProfileCard = require("./lazyTeamProfileCard");
|
|
33
35
|
var _TeamLoadingState = _interopRequireDefault(require("./TeamLoadingState"));
|
|
34
36
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
37
|
+
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; }
|
|
38
|
+
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) { (0, _defineProperty2.default)(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; }
|
|
35
39
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
36
40
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
37
41
|
var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*#__PURE__*/function (_React$PureComponent) {
|
|
@@ -56,10 +60,28 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
56
60
|
(0, _analytics.fireEvent)(_this.props.createAnalyticsEvent, payload);
|
|
57
61
|
}
|
|
58
62
|
});
|
|
63
|
+
(0, _defineProperty2.default)(_this, "fireAnalyticsNext", function (eventKey) {
|
|
64
|
+
// Don't fire any analytics if the component is unmounted
|
|
65
|
+
if (!_this._isMounted) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (_this.props.fireEvent) {
|
|
69
|
+
var _this$props;
|
|
70
|
+
for (var _len2 = arguments.length, attributes = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
71
|
+
attributes[_key2 - 1] = arguments[_key2];
|
|
72
|
+
}
|
|
73
|
+
(_this$props = _this.props).fireEvent.apply(_this$props, [eventKey].concat(attributes));
|
|
74
|
+
}
|
|
75
|
+
});
|
|
59
76
|
(0, _defineProperty2.default)(_this, "fireAnalyticsWithDuration", function (generator) {
|
|
60
77
|
var event = generator((0, _performance.getPageTime)() - _this.openTime);
|
|
61
78
|
_this.fireAnalytics(event);
|
|
62
79
|
});
|
|
80
|
+
(0, _defineProperty2.default)(_this, "fireAnalyticsWithDurationNext", function (eventKey, generator) {
|
|
81
|
+
var duration = (0, _performance.getPageTime)() - _this.openTime;
|
|
82
|
+
var attributes = generator(duration);
|
|
83
|
+
_this.fireAnalyticsNext(eventKey, attributes);
|
|
84
|
+
});
|
|
63
85
|
(0, _defineProperty2.default)(_this, "hideProfilecard", function () {
|
|
64
86
|
var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
65
87
|
clearTimeout(_this.showTimer);
|
|
@@ -101,7 +123,16 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
101
123
|
_this.openedByHover = false;
|
|
102
124
|
_this.showProfilecard(0);
|
|
103
125
|
if (!_this.state.visible) {
|
|
104
|
-
|
|
126
|
+
if ((0, _platformFeatureFlags.fg)('ptc-enable-profile-card-analytics-refactor')) {
|
|
127
|
+
_this.fireAnalyticsNext('ui.teamProfileCard.triggered', _objectSpread(_objectSpread({
|
|
128
|
+
method: 'click'
|
|
129
|
+
}, _analytics.PACKAGE_META_DATA), {}, {
|
|
130
|
+
firedAt: Math.round((0, _performance.getPageTime)()),
|
|
131
|
+
teamId: _this.props.teamId
|
|
132
|
+
}));
|
|
133
|
+
} else {
|
|
134
|
+
_this.fireAnalytics((0, _analytics.cardTriggered)('team', 'click', _this.props.teamId));
|
|
135
|
+
}
|
|
105
136
|
}
|
|
106
137
|
}
|
|
107
138
|
});
|
|
@@ -111,7 +142,16 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
111
142
|
}
|
|
112
143
|
if (!_this.state.visible) {
|
|
113
144
|
_this.openedByHover = true;
|
|
114
|
-
|
|
145
|
+
if ((0, _platformFeatureFlags.fg)('ptc-enable-profile-card-analytics-refactor')) {
|
|
146
|
+
_this.fireAnalyticsNext('ui.teamProfileCard.triggered', _objectSpread(_objectSpread({
|
|
147
|
+
method: 'hover'
|
|
148
|
+
}, _analytics.PACKAGE_META_DATA), {}, {
|
|
149
|
+
firedAt: Math.round((0, _performance.getPageTime)()),
|
|
150
|
+
teamId: _this.props.teamId
|
|
151
|
+
}));
|
|
152
|
+
} else {
|
|
153
|
+
_this.fireAnalytics((0, _analytics.cardTriggered)('team', 'hover', _this.props.teamId));
|
|
154
|
+
}
|
|
115
155
|
}
|
|
116
156
|
_this.showProfilecard(_config.DELAY_MS_SHOW);
|
|
117
157
|
});
|
|
@@ -131,7 +171,15 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
131
171
|
});
|
|
132
172
|
_this.showProfilecard(0);
|
|
133
173
|
if (!_this.state.visible) {
|
|
134
|
-
|
|
174
|
+
if ((0, _platformFeatureFlags.fg)('ptc-enable-profile-card-analytics-refactor')) {
|
|
175
|
+
_this.fireAnalyticsNext('ui.teamProfileCard.triggered', _objectSpread({
|
|
176
|
+
method: 'click',
|
|
177
|
+
firedAt: Math.round((0, _performance.getPageTime)()),
|
|
178
|
+
teamId: _this.props.teamId
|
|
179
|
+
}, _analytics.PACKAGE_META_DATA));
|
|
180
|
+
} else {
|
|
181
|
+
_this.fireAnalytics((0, _analytics.cardTriggered)('team', 'click', _this.props.teamId));
|
|
182
|
+
}
|
|
135
183
|
}
|
|
136
184
|
}
|
|
137
185
|
});
|
|
@@ -184,9 +232,9 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
184
232
|
isTriggeredByKeyboard: false
|
|
185
233
|
});
|
|
186
234
|
(0, _defineProperty2.default)(_this, "clientFetchProfile", function () {
|
|
187
|
-
var _this$
|
|
188
|
-
orgId = _this$
|
|
189
|
-
teamId = _this$
|
|
235
|
+
var _this$props2 = _this.props,
|
|
236
|
+
orgId = _this$props2.orgId,
|
|
237
|
+
teamId = _this$props2.teamId;
|
|
190
238
|
var isLoading = _this.state.isLoading;
|
|
191
239
|
if (isLoading === true) {
|
|
192
240
|
// don't fetch data when fetching is in process
|
|
@@ -199,13 +247,20 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
199
247
|
var fireEvent = function fireEvent(event) {
|
|
200
248
|
_this.fireAnalytics(event);
|
|
201
249
|
};
|
|
202
|
-
var
|
|
250
|
+
var fireAnalyticsNext = function fireAnalyticsNext(eventKey) {
|
|
251
|
+
var _this2;
|
|
252
|
+
for (var _len3 = arguments.length, attributes = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
253
|
+
attributes[_key3 - 1] = arguments[_key3];
|
|
254
|
+
}
|
|
255
|
+
(_this2 = _this).fireAnalyticsNext.apply(_this2, [eventKey].concat(attributes));
|
|
256
|
+
};
|
|
257
|
+
var requests = Promise.all([_this.props.resourceClient.getTeamProfile(teamId, orgId, fireEvent, fireAnalyticsNext), _this.props.resourceClient.shouldShowGiveKudos(), _this.props.resourceClient.getTeamCentralBaseUrl({
|
|
203
258
|
withOrgContext: true,
|
|
204
259
|
withSiteContext: true
|
|
205
260
|
})]);
|
|
206
261
|
requests.then(function (res) {
|
|
207
|
-
var
|
|
208
|
-
return (
|
|
262
|
+
var _this3;
|
|
263
|
+
return (_this3 = _this).handleClientSuccess.apply(_this3, (0, _toConsumableArray2.default)(res));
|
|
209
264
|
}, function (err) {
|
|
210
265
|
return _this.handleClientError(err);
|
|
211
266
|
}).catch(function (err) {
|
|
@@ -214,20 +269,27 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
214
269
|
});
|
|
215
270
|
});
|
|
216
271
|
(0, _defineProperty2.default)(_this, "onErrorBoundary", function () {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
272
|
+
if ((0, _platformFeatureFlags.fg)('ptc-enable-profile-card-analytics-refactor')) {
|
|
273
|
+
_this.fireAnalyticsNext('ui.teamProfileCard.rendered.errorBoundary', _objectSpread(_objectSpread({}, _analytics.PACKAGE_META_DATA), {}, {
|
|
274
|
+
firedAt: Math.round((0, _performance.getPageTime)()),
|
|
275
|
+
duration: 0
|
|
276
|
+
}));
|
|
277
|
+
} else {
|
|
278
|
+
_this.fireAnalytics((0, _analytics.profileCardRendered)('team', 'errorBoundary', {
|
|
279
|
+
duration: 0
|
|
280
|
+
}));
|
|
281
|
+
}
|
|
220
282
|
_this.setState({
|
|
221
283
|
renderError: true
|
|
222
284
|
});
|
|
223
285
|
});
|
|
224
286
|
(0, _defineProperty2.default)(_this, "renderProfileCard", function () {
|
|
225
|
-
var _this$
|
|
226
|
-
generateUserLink = _this$
|
|
227
|
-
onUserClick = _this$
|
|
228
|
-
viewingUserId = _this$
|
|
229
|
-
viewProfileLink = _this$
|
|
230
|
-
viewProfileOnClick = _this$
|
|
287
|
+
var _this$props3 = _this.props,
|
|
288
|
+
generateUserLink = _this$props3.generateUserLink,
|
|
289
|
+
onUserClick = _this$props3.onUserClick,
|
|
290
|
+
viewingUserId = _this$props3.viewingUserId,
|
|
291
|
+
viewProfileLink = _this$props3.viewProfileLink,
|
|
292
|
+
viewProfileOnClick = _this$props3.viewProfileOnClick;
|
|
231
293
|
var _this$state = _this.state,
|
|
232
294
|
data = _this$state.data,
|
|
233
295
|
error = _this$state.error,
|
|
@@ -237,6 +299,7 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
237
299
|
clientFetchProfile: _this.clientFetchProfile,
|
|
238
300
|
actions: _this.filterActions(),
|
|
239
301
|
analytics: _this.fireAnalyticsWithDuration,
|
|
302
|
+
analyticsNext: _this.fireAnalyticsWithDurationNext,
|
|
240
303
|
team: data || undefined,
|
|
241
304
|
generateUserLink: generateUserLink,
|
|
242
305
|
onUserClick: onUserClick,
|
|
@@ -246,7 +309,8 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
246
309
|
};
|
|
247
310
|
return /*#__PURE__*/_react.default.createElement("div", _this.cardListeners, _this.state.visible && /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
248
311
|
fallback: /*#__PURE__*/_react.default.createElement(_TeamLoadingState.default, {
|
|
249
|
-
analytics: _this.fireAnalyticsWithDuration
|
|
312
|
+
analytics: _this.fireAnalyticsWithDuration,
|
|
313
|
+
analyticsNext: _this.fireAnalyticsWithDurationNext
|
|
250
314
|
})
|
|
251
315
|
}, /*#__PURE__*/_react.default.createElement(_lazyTeamProfileCard.TeamProfileCardLazy, (0, _extends2.default)({}, newProps, {
|
|
252
316
|
isLoading: isLoading,
|
|
@@ -272,11 +336,11 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
272
336
|
}));
|
|
273
337
|
});
|
|
274
338
|
(0, _defineProperty2.default)(_this, "renderTrigger", function (triggerProps) {
|
|
275
|
-
var _this$
|
|
276
|
-
children = _this$
|
|
277
|
-
intl = _this$
|
|
278
|
-
triggerLinkType = _this$
|
|
279
|
-
viewProfileLink = _this$
|
|
339
|
+
var _this$props4 = _this.props,
|
|
340
|
+
children = _this$props4.children,
|
|
341
|
+
intl = _this$props4.intl,
|
|
342
|
+
triggerLinkType = _this$props4.triggerLinkType,
|
|
343
|
+
viewProfileLink = _this$props4.viewProfileLink;
|
|
280
344
|
if (triggerLinkType === 'none') {
|
|
281
345
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, _this.renderKudosLauncher(), /*#__PURE__*/_react.default.createElement(_compiled.Box, (0, _extends2.default)({
|
|
282
346
|
as: "span",
|
|
@@ -311,10 +375,10 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
311
375
|
}, {
|
|
312
376
|
key: "componentDidUpdate",
|
|
313
377
|
value: function componentDidUpdate(prevProps) {
|
|
314
|
-
var _this$
|
|
315
|
-
orgId = _this$
|
|
316
|
-
teamId = _this$
|
|
317
|
-
resourceClient = _this$
|
|
378
|
+
var _this$props5 = this.props,
|
|
379
|
+
orgId = _this$props5.orgId,
|
|
380
|
+
teamId = _this$props5.teamId,
|
|
381
|
+
resourceClient = _this$props5.resourceClient;
|
|
318
382
|
var visible = this.state.visible;
|
|
319
383
|
|
|
320
384
|
// just re-fetching data when the card opens
|
|
@@ -360,14 +424,14 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
360
424
|
}, {
|
|
361
425
|
key: "filterActions",
|
|
362
426
|
value: function filterActions() {
|
|
363
|
-
var
|
|
427
|
+
var _this4 = this;
|
|
364
428
|
var actions = (0, _filterActions2.default)(this.props.actions, this.state.data);
|
|
365
429
|
if (this.state.shouldShowGiveKudos) {
|
|
366
430
|
var kudosAction = {
|
|
367
431
|
label: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.giveKudosButton),
|
|
368
432
|
id: 'give-kudos',
|
|
369
433
|
callback: function callback() {
|
|
370
|
-
|
|
434
|
+
_this4.openKudosDrawer();
|
|
371
435
|
},
|
|
372
436
|
link: this.kudosUrl()
|
|
373
437
|
};
|
|
@@ -378,7 +442,7 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
378
442
|
}, {
|
|
379
443
|
key: "renderPopup",
|
|
380
444
|
value: function renderPopup() {
|
|
381
|
-
var
|
|
445
|
+
var _this5 = this;
|
|
382
446
|
if (this.state.renderError) {
|
|
383
447
|
return this.props.children;
|
|
384
448
|
}
|
|
@@ -390,7 +454,7 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
390
454
|
placement: this.props.position,
|
|
391
455
|
content: this.renderProfileCard,
|
|
392
456
|
trigger: function trigger(triggerProps) {
|
|
393
|
-
return
|
|
457
|
+
return _this5.renderTrigger(triggerProps);
|
|
394
458
|
},
|
|
395
459
|
zIndex: _constants.layers.modal(),
|
|
396
460
|
shouldFlip: true,
|
|
@@ -416,4 +480,11 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
416
480
|
triggerLinkType: 'link',
|
|
417
481
|
shouldRenderToParent: true
|
|
418
482
|
});
|
|
419
|
-
var
|
|
483
|
+
var TeamProfileCardTriggerWithAnalytics = function TeamProfileCardTriggerWithAnalytics(props) {
|
|
484
|
+
var _useAnalyticsEvents = (0, _teamsAppInternalAnalytics.useAnalyticsEvents)(),
|
|
485
|
+
fireEvent = _useAnalyticsEvents.fireEvent;
|
|
486
|
+
return /*#__PURE__*/_react.default.createElement(TeamProfileCardTriggerInternal, (0, _extends2.default)({}, props, {
|
|
487
|
+
fireEvent: fireEvent
|
|
488
|
+
}));
|
|
489
|
+
};
|
|
490
|
+
var _default = exports.default = (0, _platformFeatureFlagsReact.componentWithFG)('ptc-enable-profile-card-analytics-refactor', (0, _reactIntlNext.injectIntl)(TeamProfileCardTriggerWithAnalytics), (0, _analyticsNext.withAnalyticsEvents)()((0, _reactIntlNext.injectIntl)(TeamProfileCardTriggerInternal)));
|
|
@@ -135,7 +135,9 @@ function ProfileCardTriggerInner(_ref, ref) {
|
|
|
135
135
|
/*#__PURE__*/
|
|
136
136
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
137
137
|
_react.default.createElement("div", {
|
|
138
|
-
onMouseEnter: onMouseEnter
|
|
138
|
+
onMouseEnter: onMouseEnter
|
|
139
|
+
// eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
|
|
140
|
+
,
|
|
139
141
|
onMouseLeave: hideProfilecard,
|
|
140
142
|
onFocus: showProfilecard,
|
|
141
143
|
"data-testid": "profile-card--trigger-content"
|
|
@@ -18,7 +18,9 @@ var _avatarGroup = _interopRequireDefault(require("@atlaskit/avatar-group"));
|
|
|
18
18
|
var _heading = _interopRequireDefault(require("@atlaskit/heading"));
|
|
19
19
|
var _linkItem = _interopRequireDefault(require("@atlaskit/menu/link-item"));
|
|
20
20
|
var _verifiedTeamIcon = require("@atlaskit/people-teams-ui-public/verified-team-icon");
|
|
21
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
21
22
|
var _compiled = require("@atlaskit/primitives/compiled");
|
|
23
|
+
var _teamsAppInternalAnalytics = require("@atlaskit/teams-app-internal-analytics");
|
|
22
24
|
var _teamsAvatar = _interopRequireDefault(require("@atlaskit/teams-avatar"));
|
|
23
25
|
var _teamsPublic = require("@atlaskit/teams-public");
|
|
24
26
|
var _analytics = require("../../util/analytics");
|
|
@@ -82,6 +84,8 @@ var TeamProfileCard = exports.TeamProfileCard = function TeamProfileCard(_ref3)
|
|
|
82
84
|
loading = _useTeamContainers.loading;
|
|
83
85
|
var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
|
|
84
86
|
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
|
|
87
|
+
var _useAnalyticsEventsNe = (0, _teamsAppInternalAnalytics.useAnalyticsEvents)(),
|
|
88
|
+
fireEventNext = _useAnalyticsEventsNe.fireEvent;
|
|
85
89
|
// Ensure that the current container is not the only connection for this team before showing the "Where we work" section
|
|
86
90
|
var hasOtherTeamConnections = (0, _react.useMemo)(function () {
|
|
87
91
|
return teamContainers.filter(function (tc) {
|
|
@@ -92,18 +96,22 @@ var TeamProfileCard = exports.TeamProfileCard = function TeamProfileCard(_ref3)
|
|
|
92
96
|
// TODO: set isNewLayout to be true when clean up 'team-bi-directional-container-connection' experiment
|
|
93
97
|
var isNewLayout = Boolean(props.isKudosEnabled || props.otherActions);
|
|
94
98
|
var onClick = (0, _react.useCallback)(function () {
|
|
95
|
-
if (
|
|
96
|
-
(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
if ((0, _platformFeatureFlags.fg)('ptc-enable-profile-card-analytics-refactor')) {
|
|
100
|
+
fireEventNext('ui.button.clicked.viewTeamProfileButton', {});
|
|
101
|
+
} else {
|
|
102
|
+
if (createAnalyticsEvent) {
|
|
103
|
+
(0, _analytics.fireEvent)(createAnalyticsEvent, {
|
|
104
|
+
action: 'clicked',
|
|
105
|
+
actionSubject: 'button',
|
|
106
|
+
actionSubjectId: 'viewTeamProfileButton',
|
|
107
|
+
attributes: {}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
102
110
|
}
|
|
103
111
|
if (!isNewLayout) {
|
|
104
112
|
window.open(teamProfileUrl, '_blank');
|
|
105
113
|
}
|
|
106
|
-
}, [createAnalyticsEvent, teamProfileUrl, isNewLayout]);
|
|
114
|
+
}, [createAnalyticsEvent, teamProfileUrl, isNewLayout, fireEventNext]);
|
|
107
115
|
if (isNewLayout) {
|
|
108
116
|
return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
|
|
109
117
|
xcss: styles.wrapperStyles,
|
|
@@ -188,7 +196,8 @@ var TeamProfileCard = exports.TeamProfileCard = function TeamProfileCard(_ref3)
|
|
|
188
196
|
testId: "team-app-tile",
|
|
189
197
|
alt: "team-app-tile",
|
|
190
198
|
xcss: styles.teamAppTileStyles
|
|
191
|
-
})
|
|
199
|
+
}),
|
|
200
|
+
testId: "team-profile-card-profile-link-item"
|
|
192
201
|
}, /*#__PURE__*/_react.default.createElement(_compiled.Text, {
|
|
193
202
|
maxLines: 1,
|
|
194
203
|
color: "color.text"
|
|
@@ -11,7 +11,9 @@ var _runtime = require("@compiled/react/runtime");
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
13
13
|
var _menu = require("@atlaskit/menu");
|
|
14
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
15
|
var _compiled = require("@atlaskit/primitives/compiled");
|
|
16
|
+
var _teamsAppInternalAnalytics = require("@atlaskit/teams-app-internal-analytics");
|
|
15
17
|
var _teamsPublic = require("@atlaskit/teams-public");
|
|
16
18
|
var _analytics = require("../../../util/analytics");
|
|
17
19
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -35,16 +37,24 @@ var TeamConnections = exports.TeamConnections = function TeamConnections(_ref) {
|
|
|
35
37
|
containerTypeText = _getContainerProperti.containerTypeText;
|
|
36
38
|
var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
|
|
37
39
|
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
|
|
40
|
+
var _useAnalyticsEventsNe = (0, _teamsAppInternalAnalytics.useAnalyticsEvents)(),
|
|
41
|
+
fireEventNext = _useAnalyticsEventsNe.fireEvent;
|
|
38
42
|
var onClick = (0, _react.useCallback)(function () {
|
|
39
|
-
(0,
|
|
40
|
-
|
|
41
|
-
actionSubject: 'teamConnectionItem',
|
|
42
|
-
actionSubjectId: 'teamProfileCard',
|
|
43
|
-
attributes: {
|
|
43
|
+
if ((0, _platformFeatureFlags.fg)('ptc-enable-profile-card-analytics-refactor')) {
|
|
44
|
+
fireEventNext('ui.teamConnectionItem.clicked.teamProfileCard', {
|
|
44
45
|
container: containerType
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
(0, _analytics.fireEvent)(createAnalyticsEvent, {
|
|
49
|
+
action: 'clicked',
|
|
50
|
+
actionSubject: 'teamConnectionItem',
|
|
51
|
+
actionSubjectId: 'teamProfileCard',
|
|
52
|
+
attributes: {
|
|
53
|
+
container: containerType
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}, [containerType, createAnalyticsEvent, fireEventNext]);
|
|
48
58
|
return /*#__PURE__*/_react.default.createElement(_menu.LinkItem, {
|
|
49
59
|
href: link,
|
|
50
60
|
onClick: onClick,
|
|
@@ -89,16 +99,24 @@ var NewTeamConnections = exports.NewTeamConnections = function NewTeamConnection
|
|
|
89
99
|
containerTypeText = _getContainerProperti2.containerTypeText;
|
|
90
100
|
var _useAnalyticsEvents2 = (0, _analyticsNext.useAnalyticsEvents)(),
|
|
91
101
|
createAnalyticsEvent = _useAnalyticsEvents2.createAnalyticsEvent;
|
|
102
|
+
var _useAnalyticsEventsNe2 = (0, _teamsAppInternalAnalytics.useAnalyticsEvents)(),
|
|
103
|
+
fireEventNext = _useAnalyticsEventsNe2.fireEvent;
|
|
92
104
|
var onClick = (0, _react.useCallback)(function () {
|
|
93
|
-
(0,
|
|
94
|
-
|
|
95
|
-
actionSubject: 'teamConnectionItem',
|
|
96
|
-
actionSubjectId: 'teamProfileCard',
|
|
97
|
-
attributes: {
|
|
105
|
+
if ((0, _platformFeatureFlags.fg)('ptc-enable-profile-card-analytics-refactor')) {
|
|
106
|
+
fireEventNext('ui.teamConnectionItem.clicked.teamProfileCard', {
|
|
98
107
|
container: containerType
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
108
|
+
});
|
|
109
|
+
} else {
|
|
110
|
+
(0, _analytics.fireEvent)(createAnalyticsEvent, {
|
|
111
|
+
action: 'clicked',
|
|
112
|
+
actionSubject: 'teamConnectionItem',
|
|
113
|
+
actionSubjectId: 'teamProfileCard',
|
|
114
|
+
attributes: {
|
|
115
|
+
container: containerType
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}, [containerType, createAnalyticsEvent, fireEventNext]);
|
|
102
120
|
return /*#__PURE__*/_react.default.createElement(_menu.LinkItem, {
|
|
103
121
|
href: link,
|
|
104
122
|
onClick: onClick,
|
|
@@ -122,7 +140,8 @@ var NewTeamConnections = exports.NewTeamConnections = function NewTeamConnection
|
|
|
122
140
|
backgroundColor: 'color.background.neutral.subtle',
|
|
123
141
|
xcss: styles.containerTypeIconButtonStyles,
|
|
124
142
|
testId: "container-type-icon"
|
|
125
|
-
}, icon)
|
|
143
|
+
}, icon),
|
|
144
|
+
testId: "team-connection-item"
|
|
126
145
|
}, /*#__PURE__*/_react.default.createElement(_compiled.Text, {
|
|
127
146
|
maxLines: 1,
|
|
128
147
|
color: "color.text"
|
|
@@ -76,6 +76,11 @@ var getActionSubject = exports.getActionSubject = function getActionSubject(type
|
|
|
76
76
|
return 'user';
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @private
|
|
82
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
83
|
+
*/
|
|
79
84
|
var cardTriggered = exports.cardTriggered = function cardTriggered(type, method, teamId) {
|
|
80
85
|
return createEvent('ui', 'triggered', getActionSubject(type), undefined, _objectSpread({
|
|
81
86
|
method: method
|
|
@@ -83,33 +88,83 @@ var cardTriggered = exports.cardTriggered = function cardTriggered(type, method,
|
|
|
83
88
|
teamId: teamId
|
|
84
89
|
} : {}));
|
|
85
90
|
};
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @private
|
|
94
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
95
|
+
*/
|
|
86
96
|
var teamRequestAnalytics = exports.teamRequestAnalytics = function teamRequestAnalytics(action, attributes) {
|
|
87
97
|
return createEvent('operational', action, TEAM_SUBJECT, 'request', attributes);
|
|
88
98
|
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @private
|
|
102
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
103
|
+
*/
|
|
89
104
|
var userRequestAnalytics = exports.userRequestAnalytics = function userRequestAnalytics(action, attributes) {
|
|
90
105
|
return createEvent('operational', action, USER_SUBJECT, 'request', attributes);
|
|
91
106
|
};
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @private
|
|
110
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
111
|
+
*/
|
|
92
112
|
var profileCardRendered = exports.profileCardRendered = function profileCardRendered(type, actionSubjectId, attributes) {
|
|
93
113
|
return createEvent('ui', 'rendered', getActionSubject(type), actionSubjectId, attributes);
|
|
94
114
|
};
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @private
|
|
118
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
119
|
+
*/
|
|
95
120
|
var actionClicked = exports.actionClicked = function actionClicked(type, attributes) {
|
|
96
121
|
return createEvent('ui', 'clicked', getActionSubject(type), 'action', attributes);
|
|
97
122
|
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @private
|
|
126
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
127
|
+
*/
|
|
98
128
|
var reportingLinesClicked = exports.reportingLinesClicked = function reportingLinesClicked(attributes) {
|
|
99
129
|
return createEvent('ui', 'clicked', USER_SUBJECT, 'reportingLines', attributes);
|
|
100
130
|
};
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* @private
|
|
134
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
135
|
+
*/
|
|
101
136
|
var moreActionsClicked = exports.moreActionsClicked = function moreActionsClicked(type, attributes) {
|
|
102
137
|
return createEvent('ui', 'clicked', getActionSubject(type), 'moreActions', attributes);
|
|
103
138
|
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @private
|
|
142
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
143
|
+
*/
|
|
104
144
|
var teamAvatarClicked = exports.teamAvatarClicked = function teamAvatarClicked(attributes) {
|
|
105
145
|
return createEvent('ui', 'clicked', TEAM_SUBJECT, 'avatar', attributes);
|
|
106
146
|
};
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @private
|
|
150
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
151
|
+
*/
|
|
107
152
|
var moreMembersClicked = exports.moreMembersClicked = function moreMembersClicked(attributes) {
|
|
108
153
|
return createEvent('ui', 'clicked', TEAM_SUBJECT, 'moreMembers', attributes);
|
|
109
154
|
};
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @private
|
|
158
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
159
|
+
*/
|
|
110
160
|
var errorRetryClicked = exports.errorRetryClicked = function errorRetryClicked(attributes) {
|
|
111
161
|
return createEvent('ui', 'clicked', TEAM_SUBJECT, 'errorRetry', attributes);
|
|
112
162
|
};
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @private
|
|
166
|
+
* @deprecated Analytics events should be fired using the `@atlaskit/teams-app-internal-analytics` package.
|
|
167
|
+
*/
|
|
113
168
|
var agentRequestAnalytics = exports.agentRequestAnalytics = function agentRequestAnalytics(action, actionSubjectId, attributes) {
|
|
114
169
|
return createEvent('operational', action, AGENT_SUBJECT, actionSubjectId || 'request', attributes);
|
|
115
170
|
};
|
|
@@ -32,8 +32,8 @@ class ProfileCardClient {
|
|
|
32
32
|
getProfile(cloudId, userId, analytics, analyticsNext) {
|
|
33
33
|
return this.userClient.getProfile(cloudId, userId, analytics, analyticsNext);
|
|
34
34
|
}
|
|
35
|
-
getTeamProfile(teamId, orgId, analytics) {
|
|
36
|
-
return this.teamClient.getProfile(teamId, orgId, analytics);
|
|
35
|
+
getTeamProfile(teamId, orgId, analytics, analyticsNext) {
|
|
36
|
+
return this.teamClient.getProfile(teamId, orgId, analytics, analyticsNext);
|
|
37
37
|
}
|
|
38
38
|
getReportingLines(userId) {
|
|
39
39
|
var _this$tcClient2;
|
|
@@ -69,21 +69,21 @@ class ProfileCardClient {
|
|
|
69
69
|
}
|
|
70
70
|
return this.tcClient.checkWorkspaceExists();
|
|
71
71
|
}
|
|
72
|
-
getRovoAgentProfile(id, analytics) {
|
|
72
|
+
getRovoAgentProfile(id, analytics, analyticsNext) {
|
|
73
73
|
var _this$rovoAgentClient2;
|
|
74
|
-
return (_this$rovoAgentClient2 = this.rovoAgentClient) === null || _this$rovoAgentClient2 === void 0 ? void 0 : _this$rovoAgentClient2.getProfile(id, analytics);
|
|
74
|
+
return (_this$rovoAgentClient2 = this.rovoAgentClient) === null || _this$rovoAgentClient2 === void 0 ? void 0 : _this$rovoAgentClient2.getProfile(id, analytics, analyticsNext);
|
|
75
75
|
}
|
|
76
|
-
getRovoAgentPermissions(id, fireAnalytics) {
|
|
76
|
+
getRovoAgentPermissions(id, fireAnalytics, analyticsNext) {
|
|
77
77
|
var _this$rovoAgentClient3;
|
|
78
|
-
return (_this$rovoAgentClient3 = this.rovoAgentClient) === null || _this$rovoAgentClient3 === void 0 ? void 0 : _this$rovoAgentClient3.getPermissions(id, fireAnalytics);
|
|
78
|
+
return (_this$rovoAgentClient3 = this.rovoAgentClient) === null || _this$rovoAgentClient3 === void 0 ? void 0 : _this$rovoAgentClient3.getPermissions(id, fireAnalytics, analyticsNext);
|
|
79
79
|
}
|
|
80
|
-
deleteAgent(id, analytics) {
|
|
80
|
+
deleteAgent(id, analytics, analyticsNext) {
|
|
81
81
|
var _this$rovoAgentClient4;
|
|
82
|
-
return (_this$rovoAgentClient4 = this.rovoAgentClient) === null || _this$rovoAgentClient4 === void 0 ? void 0 : _this$rovoAgentClient4.deleteAgent(id, analytics);
|
|
82
|
+
return (_this$rovoAgentClient4 = this.rovoAgentClient) === null || _this$rovoAgentClient4 === void 0 ? void 0 : _this$rovoAgentClient4.deleteAgent(id, analytics, analyticsNext);
|
|
83
83
|
}
|
|
84
|
-
setFavouriteAgent(id, isFavourite, analytics) {
|
|
84
|
+
setFavouriteAgent(id, isFavourite, analytics, analyticsNext) {
|
|
85
85
|
var _this$rovoAgentClient5;
|
|
86
|
-
return (_this$rovoAgentClient5 = this.rovoAgentClient) === null || _this$rovoAgentClient5 === void 0 ? void 0 : _this$rovoAgentClient5.setFavouriteAgent(id, isFavourite, analytics);
|
|
86
|
+
return (_this$rovoAgentClient5 = this.rovoAgentClient) === null || _this$rovoAgentClient5 === void 0 ? void 0 : _this$rovoAgentClient5.setFavouriteAgent(id, isFavourite, analytics, analyticsNext);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
function maybeCreateTeamCentralClient(config, clients) {
|