@atlaskit/link-datasource 1.29.3 → 1.29.5
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 +13 -0
- package/dist/cjs/services/mocks.js +44 -2
- package/dist/cjs/services/useBasicFilterAGG.js +19 -7
- package/dist/cjs/services/utils.js +3 -2
- package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.js +15 -3
- package/dist/cjs/ui/confluence-search-modal/basic-filters/hooks/useBasicFilterHydration.js +79 -0
- package/dist/cjs/ui/confluence-search-modal/basic-filters/hooks/useCurrentUserInfo.js +2 -6
- package/dist/cjs/ui/confluence-search-modal/basic-filters/hooks/useRecommendation.js +1 -0
- package/dist/cjs/ui/confluence-search-modal/basic-filters/index.js +4 -2
- package/dist/cjs/ui/confluence-search-modal/confluence-search-container/index.js +23 -1
- package/dist/cjs/ui/confluence-search-modal/modal/index.js +19 -2
- package/dist/cjs/ui/table-footer/powered-by-jsm-assets/index.js +1 -1
- package/dist/es2019/services/mocks.js +43 -1
- package/dist/es2019/services/useBasicFilterAGG.js +16 -6
- package/dist/es2019/services/utils.js +7 -0
- package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.js +15 -4
- package/dist/es2019/ui/confluence-search-modal/basic-filters/hooks/useBasicFilterHydration.js +39 -0
- package/dist/es2019/ui/confluence-search-modal/basic-filters/hooks/useCurrentUserInfo.js +2 -7
- package/dist/es2019/ui/confluence-search-modal/basic-filters/hooks/useRecommendation.js +1 -0
- package/dist/es2019/ui/confluence-search-modal/basic-filters/index.js +4 -2
- package/dist/es2019/ui/confluence-search-modal/confluence-search-container/index.js +24 -1
- package/dist/es2019/ui/confluence-search-modal/modal/index.js +17 -2
- package/dist/es2019/ui/table-footer/powered-by-jsm-assets/index.js +1 -1
- package/dist/esm/services/mocks.js +43 -1
- package/dist/esm/services/useBasicFilterAGG.js +20 -8
- package/dist/esm/services/utils.js +2 -1
- package/dist/esm/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.js +16 -4
- package/dist/esm/ui/confluence-search-modal/basic-filters/hooks/useBasicFilterHydration.js +72 -0
- package/dist/esm/ui/confluence-search-modal/basic-filters/hooks/useCurrentUserInfo.js +2 -6
- package/dist/esm/ui/confluence-search-modal/basic-filters/hooks/useRecommendation.js +1 -0
- package/dist/esm/ui/confluence-search-modal/basic-filters/index.js +4 -2
- package/dist/esm/ui/confluence-search-modal/confluence-search-container/index.js +23 -1
- package/dist/esm/ui/confluence-search-modal/modal/index.js +19 -2
- package/dist/esm/ui/table-footer/powered-by-jsm-assets/index.js +1 -1
- package/dist/types/services/mocks.d.ts +11 -0
- package/dist/types/services/useBasicFilterAGG.d.ts +2 -1
- package/dist/types/services/utils.d.ts +1 -0
- package/dist/types/ui/common/modal/popup-select/types.d.ts +4 -0
- package/dist/types/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.d.ts +2 -1
- package/dist/types/ui/confluence-search-modal/basic-filters/hooks/useBasicFilterHydration.d.ts +6 -0
- package/dist/types/ui/confluence-search-modal/basic-filters/index.d.ts +2 -1
- package/dist/types/ui/confluence-search-modal/basic-filters/types.d.ts +8 -0
- package/dist/types/ui/confluence-search-modal/confluence-search-container/index.d.ts +6 -2
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.d.ts +2 -3
- package/dist/types-ts4.5/services/mocks.d.ts +11 -0
- package/dist/types-ts4.5/services/useBasicFilterAGG.d.ts +2 -1
- package/dist/types-ts4.5/services/utils.d.ts +1 -0
- package/dist/types-ts4.5/ui/common/modal/popup-select/types.d.ts +4 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.d.ts +2 -1
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/hooks/useBasicFilterHydration.d.ts +6 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/index.d.ts +2 -1
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/types.d.ts +8 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/confluence-search-container/index.d.ts +6 -2
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.d.ts +2 -3
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 1.29.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#94901](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/94901) [`da964fcdc828`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/da964fcdc828) - [ED-23097] Bump ADF schema to version 35.12.1
|
|
8
|
+
- [#95182](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/95182) [`3d3dd335b8e8`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/3d3dd335b8e8) - The internal composition of this component has changed. There is no expected change in behavior.
|
|
9
|
+
|
|
10
|
+
## 1.29.4
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [#92797](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/92797) [`55f4c6b7a6f0`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/55f4c6b7a6f0) - The changes here adds the logic to hydrate Edited/Created by filter values.
|
|
15
|
+
|
|
3
16
|
## 1.29.3
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.mockUserRecommendationsResponse = exports.mockHydrateJqlResponse = exports.mockFieldValuesResponse = void 0;
|
|
6
|
+
exports.mockUserRecommendationsResponse = exports.mockUserHydrationResponse = exports.mockTransformedUserHydrationResponse = exports.mockHydrateJqlResponse = exports.mockFieldValuesResponse = void 0;
|
|
7
7
|
var mockHydrateJqlResponse = exports.mockHydrateJqlResponse = {
|
|
8
8
|
data: {
|
|
9
9
|
jira: {
|
|
@@ -282,4 +282,46 @@ var mockUserRecommendationsResponse = exports.mockUserRecommendationsResponse =
|
|
|
282
282
|
isConfluenceExternalCollaborator: false
|
|
283
283
|
}
|
|
284
284
|
}]
|
|
285
|
-
};
|
|
285
|
+
};
|
|
286
|
+
var mockUserHydrationResponse = exports.mockUserHydrationResponse = {
|
|
287
|
+
data: {
|
|
288
|
+
users: [{
|
|
289
|
+
accountId: '655363:d8dff7fe-efb7-4073-a3cd-12463ac79e1c',
|
|
290
|
+
name: 'Peter Grasevski',
|
|
291
|
+
picture: 'https://secure.gravatar.com/avatar/f4bb2f6eef1621e67cd136c0be9af81c?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FPG-5.png'
|
|
292
|
+
}, {
|
|
293
|
+
accountId: '62cf07378afb5805e5d46454',
|
|
294
|
+
name: 'Richard Wang',
|
|
295
|
+
picture: 'https://avatar-management--avatars.us-west-2.staging.public.atl-paas.net/62cf07378afb5805e5d46454/5d1719ab-8717-4837-9ae7-a3761c3b6604/128'
|
|
296
|
+
}, {
|
|
297
|
+
accountId: '62f3ed1ee50f2f2a39573e7f',
|
|
298
|
+
name: 'Luke Muller',
|
|
299
|
+
picture: 'https://avatar-management--avatars.us-west-2.staging.public.atl-paas.net/62f3ed1ee50f2f2a39573e7f/1bd99ace-ea01-4d41-b0ab-3e1ebc353914/128'
|
|
300
|
+
}, {
|
|
301
|
+
accountId: '6232212a62dc1e006802dea8',
|
|
302
|
+
name: 'Nidhin Joseph',
|
|
303
|
+
picture: 'https://secure.gravatar.com/avatar/815c1ee3e8e2839ef94bf90b134d1c68?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FNJ-2.png'
|
|
304
|
+
}]
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
var mockTransformedUserHydrationResponse = exports.mockTransformedUserHydrationResponse = [{
|
|
308
|
+
optionType: 'avatarLabel',
|
|
309
|
+
label: 'Peter Grasevski',
|
|
310
|
+
value: '655363:d8dff7fe-efb7-4073-a3cd-12463ac79e1c',
|
|
311
|
+
avatar: 'https://secure.gravatar.com/avatar/f4bb2f6eef1621e67cd136c0be9af81c?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FPG-5.png'
|
|
312
|
+
}, {
|
|
313
|
+
optionType: 'avatarLabel',
|
|
314
|
+
label: 'Richard Wang',
|
|
315
|
+
value: '62cf07378afb5805e5d46454',
|
|
316
|
+
avatar: 'https://avatar-management--avatars.us-west-2.staging.public.atl-paas.net/62cf07378afb5805e5d46454/5d1719ab-8717-4837-9ae7-a3761c3b6604/128'
|
|
317
|
+
}, {
|
|
318
|
+
optionType: 'avatarLabel',
|
|
319
|
+
label: 'Luke Muller',
|
|
320
|
+
value: '62f3ed1ee50f2f2a39573e7f',
|
|
321
|
+
avatar: 'https://avatar-management--avatars.us-west-2.staging.public.atl-paas.net/62f3ed1ee50f2f2a39573e7f/1bd99ace-ea01-4d41-b0ab-3e1ebc353914/128'
|
|
322
|
+
}, {
|
|
323
|
+
optionType: 'avatarLabel',
|
|
324
|
+
label: 'Nidhin Joseph',
|
|
325
|
+
value: '6232212a62dc1e006802dea8',
|
|
326
|
+
avatar: 'https://secure.gravatar.com/avatar/815c1ee3e8e2839ef94bf90b134d1c68?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FNJ-2.png'
|
|
327
|
+
}];
|
|
@@ -13,20 +13,18 @@ var _utils = require("./utils");
|
|
|
13
13
|
var AGG_BASE_URL = '/gateway/api/graphql';
|
|
14
14
|
var useBasicFilterAGG = exports.useBasicFilterAGG = function useBasicFilterAGG() {
|
|
15
15
|
var requestCall = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
16
|
-
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(body) {
|
|
16
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(body, headers) {
|
|
17
17
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
18
18
|
while (1) switch (_context.prev = _context.next) {
|
|
19
19
|
case 0:
|
|
20
|
-
return _context.abrupt("return", (0, _linkingCommon.request)('post', AGG_BASE_URL, body,
|
|
21
|
-
'X-ExperimentalApi': 'JiraJqlBuilder'
|
|
22
|
-
}, [200, 201, 202, 203, 204]));
|
|
20
|
+
return _context.abrupt("return", (0, _linkingCommon.request)('post', AGG_BASE_URL, body, headers, [200, 201, 202, 203, 204]));
|
|
23
21
|
case 1:
|
|
24
22
|
case "end":
|
|
25
23
|
return _context.stop();
|
|
26
24
|
}
|
|
27
25
|
}, _callee);
|
|
28
26
|
}));
|
|
29
|
-
return function (_x) {
|
|
27
|
+
return function (_x, _x2) {
|
|
30
28
|
return _ref.apply(this, arguments);
|
|
31
29
|
};
|
|
32
30
|
}(), []);
|
|
@@ -38,6 +36,8 @@ var useBasicFilterAGG = exports.useBasicFilterAGG = function useBasicFilterAGG()
|
|
|
38
36
|
},
|
|
39
37
|
operationName: 'hydrate',
|
|
40
38
|
query: _utils.hydrateJQLQuery
|
|
39
|
+
}, {
|
|
40
|
+
'X-ExperimentalApi': 'JiraJqlBuilder'
|
|
41
41
|
});
|
|
42
42
|
}, [requestCall]);
|
|
43
43
|
var getFieldValues = (0, _react.useCallback)(function (_ref2) {
|
|
@@ -59,6 +59,8 @@ var useBasicFilterAGG = exports.useBasicFilterAGG = function useBasicFilterAGG()
|
|
|
59
59
|
},
|
|
60
60
|
operationName: 'fieldValues',
|
|
61
61
|
query: _utils.fieldValuesQuery
|
|
62
|
+
}, {
|
|
63
|
+
'X-ExperimentalApi': 'JiraJqlBuilder'
|
|
62
64
|
});
|
|
63
65
|
}, [requestCall]);
|
|
64
66
|
var getCurrentUserInfo = (0, _react.useCallback)(function () {
|
|
@@ -67,11 +69,21 @@ var useBasicFilterAGG = exports.useBasicFilterAGG = function useBasicFilterAGG()
|
|
|
67
69
|
query: _utils.userQuery
|
|
68
70
|
});
|
|
69
71
|
}, [requestCall]);
|
|
72
|
+
var getUsersFromAccountIDs = (0, _react.useCallback)(function (accountIds) {
|
|
73
|
+
return requestCall({
|
|
74
|
+
variables: {
|
|
75
|
+
accountIds: accountIds
|
|
76
|
+
},
|
|
77
|
+
operationName: 'userHydration',
|
|
78
|
+
query: _utils.userHydration
|
|
79
|
+
});
|
|
80
|
+
}, [requestCall]);
|
|
70
81
|
return (0, _react.useMemo)(function () {
|
|
71
82
|
return {
|
|
72
83
|
getHydratedJQL: getHydratedJQL,
|
|
73
84
|
getFieldValues: getFieldValues,
|
|
74
|
-
getCurrentUserInfo: getCurrentUserInfo
|
|
85
|
+
getCurrentUserInfo: getCurrentUserInfo,
|
|
86
|
+
getUsersFromAccountIDs: getUsersFromAccountIDs
|
|
75
87
|
};
|
|
76
|
-
}, [getHydratedJQL, getFieldValues, getCurrentUserInfo]);
|
|
88
|
+
}, [getHydratedJQL, getFieldValues, getCurrentUserInfo, getUsersFromAccountIDs]);
|
|
77
89
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.userQuery = exports.hydrateJQLQuery = exports.fieldValuesQuery = void 0;
|
|
6
|
+
exports.userQuery = exports.userHydration = exports.hydrateJQLQuery = exports.fieldValuesQuery = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* HELLO DEV :wave
|
|
9
9
|
* If you are here to change these queries, please also remember to update the query in jira/src/packages/platform/linking/link-datasource/src/index.tsx
|
|
@@ -13,4 +13,5 @@ exports.userQuery = exports.hydrateJQLQuery = exports.fieldValuesQuery = void 0;
|
|
|
13
13
|
|
|
14
14
|
var hydrateJQLQuery = exports.hydrateJQLQuery = "query hydrate($cloudId: ID!, $jql: String!) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n hydrateJqlQuery(query: $jql) {\n ... on JiraJqlHydratedQuery {\n fields {\n ... on JiraJqlQueryHydratedField {\n jqlTerm\n values {\n ... on JiraJqlQueryHydratedValue {\n values {\n ... on JiraJqlProjectFieldValue {\n jqlTerm\n displayName\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n jqlTerm\n displayName\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n jqlTerm\n displayName\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlUserFieldValue {\n jqlTerm\n displayName\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n jqlTerm\n displayName\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}";
|
|
15
15
|
var fieldValuesQuery = exports.fieldValuesQuery = "query fieldValues($cloudId: ID!, $first: Int = 10, $jqlTerm: String!, $jql: String!, $searchString: String!, $after: String) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n fieldValues(\n first: $first\n jqlTerm: $jqlTerm\n jqlContext: $jql\n searchString: $searchString\n after: $after\n ) {\n totalCount\n pageInfo {\n endCursor\n }\n edges {\n node {\n jqlTerm\n displayName\n ... on JiraJqlProjectFieldValue {\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlUserFieldValue {\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n}";
|
|
16
|
-
var userQuery = exports.userQuery = "query userQuery {\n me {\n user {\n id\n accountId\n }\n }\n}";
|
|
16
|
+
var userQuery = exports.userQuery = "query userQuery {\n me {\n user {\n id\n accountId\n }\n }\n}";
|
|
17
|
+
var userHydration = exports.userHydration = "query userHydration($accountIds: [ID!]!) {\n users(accountIds: $accountIds) {\n accountId\n name\n picture\n }\n}";
|
package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.js
CHANGED
|
@@ -25,7 +25,9 @@ var EditedOrCreatedByFilter = function EditedOrCreatedByFilter(_ref) {
|
|
|
25
25
|
var cloudId = _ref.cloudId,
|
|
26
26
|
onSelectionChange = _ref.onSelectionChange,
|
|
27
27
|
_ref$selection = _ref.selection,
|
|
28
|
-
selection = _ref$selection === void 0 ? [] : _ref$selection
|
|
28
|
+
selection = _ref$selection === void 0 ? [] : _ref$selection,
|
|
29
|
+
_ref$isHydrating = _ref.isHydrating,
|
|
30
|
+
isHydrating = _ref$isHydrating === void 0 ? false : _ref$isHydrating;
|
|
29
31
|
var _useCurrentUserInfo = (0, _useCurrentUserInfo2.useCurrentUserInfo)(),
|
|
30
32
|
user = _useCurrentUserInfo.user;
|
|
31
33
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
@@ -34,7 +36,9 @@ var EditedOrCreatedByFilter = function EditedOrCreatedByFilter(_ref) {
|
|
|
34
36
|
status = _useRecommendation.status,
|
|
35
37
|
filterOptions = _useRecommendation.filterOptions,
|
|
36
38
|
fetchFilterOptions = _useRecommendation.fetchFilterOptions,
|
|
37
|
-
errors = _useRecommendation.errors
|
|
39
|
+
errors = _useRecommendation.errors,
|
|
40
|
+
resetHook = _useRecommendation.reset;
|
|
41
|
+
var currentSiteCloudId = (0, _react.useRef)(cloudId || '');
|
|
38
42
|
var _useState = (0, _react.useState)(''),
|
|
39
43
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
40
44
|
searchTerm = _useState2[0],
|
|
@@ -85,6 +89,14 @@ var EditedOrCreatedByFilter = function EditedOrCreatedByFilter(_ref) {
|
|
|
85
89
|
var isLoading = status === 'loading' || status === 'empty';
|
|
86
90
|
var isEmpty = status === 'resolved' && filterOptionsLength === 0;
|
|
87
91
|
var isDisabled = !cloudId || !(user !== null && user !== void 0 && user.accountId);
|
|
92
|
+
(0, _react.useEffect)(function () {
|
|
93
|
+
if (cloudId && currentSiteCloudId.current !== cloudId) {
|
|
94
|
+
currentSiteCloudId.current = cloudId;
|
|
95
|
+
if (status === 'resolved') {
|
|
96
|
+
resetHook();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}, [cloudId, resetHook, status]);
|
|
88
100
|
return /*#__PURE__*/_react.default.createElement(_popupSelect.FilterPopupSelect, {
|
|
89
101
|
buttonLabel: formatMessage(_messages.editedOrCreatedByMessage.buttonLabel),
|
|
90
102
|
filterName: filterName,
|
|
@@ -94,7 +106,7 @@ var EditedOrCreatedByFilter = function EditedOrCreatedByFilter(_ref) {
|
|
|
94
106
|
selectedOptions: selection,
|
|
95
107
|
onSelectionChange: handleOptionSelection,
|
|
96
108
|
onInputChange: handleInputChange,
|
|
97
|
-
showHydrating:
|
|
109
|
+
showHydrating: isHydrating,
|
|
98
110
|
shouldShowFooter: false,
|
|
99
111
|
status: status,
|
|
100
112
|
onMenuOpen: handleMenuOpen,
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useBasicFilterHydration = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _react = require("react");
|
|
12
|
+
var _useBasicFilterAGG2 = require("../../../../services/useBasicFilterAGG");
|
|
13
|
+
var useBasicFilterHydration = exports.useBasicFilterHydration = function useBasicFilterHydration() {
|
|
14
|
+
var _useState = (0, _react.useState)('empty'),
|
|
15
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
16
|
+
status = _useState2[0],
|
|
17
|
+
setStatus = _useState2[1];
|
|
18
|
+
var _useBasicFilterAGG = (0, _useBasicFilterAGG2.useBasicFilterAGG)(),
|
|
19
|
+
getUsersFromAccountIDs = _useBasicFilterAGG.getUsersFromAccountIDs;
|
|
20
|
+
var _useState3 = (0, _react.useState)([]),
|
|
21
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
22
|
+
users = _useState4[0],
|
|
23
|
+
setUsers = _useState4[1];
|
|
24
|
+
var convertUserHydrationResponseToFilterOptions = function convertUserHydrationResponseToFilterOptions(response) {
|
|
25
|
+
var _response$data, _response$data2;
|
|
26
|
+
if (!((_response$data = response.data) !== null && _response$data !== void 0 && _response$data.users)) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
return (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.users.map(function (item) {
|
|
30
|
+
return {
|
|
31
|
+
optionType: 'avatarLabel',
|
|
32
|
+
label: item.name,
|
|
33
|
+
value: item.accountId,
|
|
34
|
+
avatar: item.picture
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
var hydrateUsersFromAccountIds = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
39
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(accountIds) {
|
|
40
|
+
var response;
|
|
41
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
42
|
+
while (1) switch (_context.prev = _context.next) {
|
|
43
|
+
case 0:
|
|
44
|
+
_context.prev = 0;
|
|
45
|
+
setStatus('loading');
|
|
46
|
+
_context.next = 4;
|
|
47
|
+
return getUsersFromAccountIDs(accountIds);
|
|
48
|
+
case 4:
|
|
49
|
+
response = _context.sent;
|
|
50
|
+
if (!(response.errors && response.errors.length > 0)) {
|
|
51
|
+
_context.next = 7;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
throw new Error(JSON.stringify(response.errors));
|
|
55
|
+
case 7:
|
|
56
|
+
setUsers(convertUserHydrationResponseToFilterOptions(response));
|
|
57
|
+
setStatus('resolved');
|
|
58
|
+
_context.next = 14;
|
|
59
|
+
break;
|
|
60
|
+
case 11:
|
|
61
|
+
_context.prev = 11;
|
|
62
|
+
_context.t0 = _context["catch"](0);
|
|
63
|
+
setStatus('rejected');
|
|
64
|
+
case 14:
|
|
65
|
+
case "end":
|
|
66
|
+
return _context.stop();
|
|
67
|
+
}
|
|
68
|
+
}, _callee, null, [[0, 11]]);
|
|
69
|
+
}));
|
|
70
|
+
return function (_x) {
|
|
71
|
+
return _ref.apply(this, arguments);
|
|
72
|
+
};
|
|
73
|
+
}(), [getUsersFromAccountIDs]);
|
|
74
|
+
return {
|
|
75
|
+
hydrateUsersFromAccountIds: hydrateUsersFromAccountIds,
|
|
76
|
+
status: status,
|
|
77
|
+
users: users
|
|
78
|
+
};
|
|
79
|
+
};
|
|
@@ -19,7 +19,7 @@ var useCurrentUserInfo = exports.useCurrentUserInfo = function useCurrentUserInf
|
|
|
19
19
|
getCurrentUserInfoFromAGG = _useBasicFilterAGG.getCurrentUserInfo;
|
|
20
20
|
var getCurrentUserInfo = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
21
21
|
var _user$data;
|
|
22
|
-
var user
|
|
22
|
+
var user;
|
|
23
23
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
24
24
|
while (1) switch (_context.prev = _context.next) {
|
|
25
25
|
case 0:
|
|
@@ -27,11 +27,7 @@ var useCurrentUserInfo = exports.useCurrentUserInfo = function useCurrentUserInf
|
|
|
27
27
|
return getCurrentUserInfoFromAGG();
|
|
28
28
|
case 2:
|
|
29
29
|
user = _context.sent;
|
|
30
|
-
|
|
31
|
-
setUser((_user$data2 = user.data) === null || _user$data2 === void 0 ? void 0 : _user$data2.me.user);
|
|
32
|
-
} else {
|
|
33
|
-
setUser(undefined);
|
|
34
|
-
}
|
|
30
|
+
setUser((_user$data = user.data) === null || _user$data === void 0 || (_user$data = _user$data.me) === null || _user$data === void 0 ? void 0 : _user$data.user);
|
|
35
31
|
case 4:
|
|
36
32
|
case "end":
|
|
37
33
|
return _context.stop();
|
|
@@ -16,7 +16,8 @@ var BasicFilterContainer = function BasicFilterContainer(_ref) {
|
|
|
16
16
|
var cloudId = _ref.cloudId,
|
|
17
17
|
onChange = _ref.onChange,
|
|
18
18
|
_ref$selections = _ref.selections,
|
|
19
|
-
selections = _ref$selections === void 0 ? {} : _ref$selections
|
|
19
|
+
selections = _ref$selections === void 0 ? {} : _ref$selections,
|
|
20
|
+
isHydrating = _ref.isHydrating;
|
|
20
21
|
var editedOrCreatedBy = selections.editedOrCreatedBy;
|
|
21
22
|
return /*#__PURE__*/_react.default.createElement(_primitives.Flex, {
|
|
22
23
|
xcss: basicFilterContainerStyles,
|
|
@@ -25,7 +26,8 @@ var BasicFilterContainer = function BasicFilterContainer(_ref) {
|
|
|
25
26
|
}, /*#__PURE__*/_react.default.createElement(_editedOrCreatedBy.default, {
|
|
26
27
|
cloudId: cloudId,
|
|
27
28
|
onSelectionChange: onChange,
|
|
28
|
-
selection: editedOrCreatedBy || []
|
|
29
|
+
selection: editedOrCreatedBy || [],
|
|
30
|
+
isHydrating: isHydrating
|
|
29
31
|
}), /*#__PURE__*/_react.default.createElement(_dateRangePicker.DateRangePicker, {
|
|
30
32
|
onSelectionChange: onChange
|
|
31
33
|
}));
|
|
@@ -15,6 +15,8 @@ var _primitives = require("@atlaskit/primitives");
|
|
|
15
15
|
var _basicSearchInput = require("../../common/modal/basic-search-input");
|
|
16
16
|
var _constants = require("../../common/modal/popup-select/constants");
|
|
17
17
|
var _basicFilters = _interopRequireDefault(require("../basic-filters"));
|
|
18
|
+
var _useBasicFilterHydration = require("../basic-filters/hooks/useBasicFilterHydration");
|
|
19
|
+
var _types = require("../basic-filters/types");
|
|
18
20
|
var _messages = require("./messages");
|
|
19
21
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
20
22
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -26,8 +28,13 @@ var basicSearchInputContainerStyles = (0, _primitives.xcss)({
|
|
|
26
28
|
var ConfluenceSearchContainer = function ConfluenceSearchContainer(_ref) {
|
|
27
29
|
var cloudId = _ref.cloudId,
|
|
28
30
|
initialSearchValue = _ref.initialSearchValue,
|
|
31
|
+
initialFilterSelection = _ref.initialFilterSelection,
|
|
29
32
|
isSearching = _ref.isSearching,
|
|
30
33
|
onSearch = _ref.onSearch;
|
|
34
|
+
var _useBasicFilterHydrat = (0, _useBasicFilterHydration.useBasicFilterHydration)(),
|
|
35
|
+
hydrateUsersFromAccountIds = _useBasicFilterHydrat.hydrateUsersFromAccountIds,
|
|
36
|
+
users = _useBasicFilterHydrat.users,
|
|
37
|
+
status = _useBasicFilterHydrat.status;
|
|
31
38
|
var currentCloudId = (0, _react.useRef)(cloudId);
|
|
32
39
|
var _useState = (0, _react.useState)(initialSearchValue !== null && initialSearchValue !== void 0 ? initialSearchValue : ''),
|
|
33
40
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
@@ -67,6 +74,20 @@ var ConfluenceSearchContainer = function ConfluenceSearchContainer(_ref) {
|
|
|
67
74
|
}
|
|
68
75
|
return false;
|
|
69
76
|
}, []);
|
|
77
|
+
(0, _react.useEffect)(function () {
|
|
78
|
+
var accountIds = initialFilterSelection === null || initialFilterSelection === void 0 ? void 0 : initialFilterSelection[_types.CLOLBasicFilters.editedOrCreatedBy];
|
|
79
|
+
var hasAccountIds = accountIds && accountIds.length > 0;
|
|
80
|
+
if (hasAccountIds && status === 'empty' && showBasicFilters) {
|
|
81
|
+
hydrateUsersFromAccountIds(accountIds);
|
|
82
|
+
}
|
|
83
|
+
}, [hydrateUsersFromAccountIds, initialFilterSelection, showBasicFilters, status]);
|
|
84
|
+
(0, _react.useEffect)(function () {
|
|
85
|
+
if (status === 'resolved') {
|
|
86
|
+
setFilterSelections({
|
|
87
|
+
editedOrCreatedBy: users
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}, [users, status]);
|
|
70
91
|
return /*#__PURE__*/_react.default.createElement(_primitives.Flex, {
|
|
71
92
|
alignItems: "center",
|
|
72
93
|
xcss: basicSearchInputContainerStyles
|
|
@@ -81,7 +102,8 @@ var ConfluenceSearchContainer = function ConfluenceSearchContainer(_ref) {
|
|
|
81
102
|
}), showBasicFilters && /*#__PURE__*/_react.default.createElement(_basicFilters.default, {
|
|
82
103
|
cloudId: cloudId,
|
|
83
104
|
selections: filterSelections,
|
|
84
|
-
onChange: handleBasicFilterSelectionChange
|
|
105
|
+
onChange: handleBasicFilterSelectionChange,
|
|
106
|
+
isHydrating: status === 'loading'
|
|
85
107
|
}));
|
|
86
108
|
};
|
|
87
109
|
var _default = exports.default = ConfluenceSearchContainer;
|
|
@@ -134,6 +134,11 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
|
|
|
134
134
|
contributorAccountIds: contributorAccountIds
|
|
135
135
|
});
|
|
136
136
|
}, [cloudId, lastModified, contributorAccountIds, initialParameters, searchString /** Add more parameters when more filters are added */]);
|
|
137
|
+
var initialFilterSelection = (0, _react.useMemo)(function () {
|
|
138
|
+
return {
|
|
139
|
+
editedOrCreatedBy: (initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.contributorAccountIds) || []
|
|
140
|
+
};
|
|
141
|
+
}, [initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.contributorAccountIds]);
|
|
137
142
|
var isParametersSet = (0, _react.useMemo)(function () {
|
|
138
143
|
return !!cloudId && Object.values(parameters !== null && parameters !== void 0 ? parameters : {}).filter(function (v) {
|
|
139
144
|
return v !== undefined;
|
|
@@ -297,7 +302,18 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
|
|
|
297
302
|
var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
|
|
298
303
|
var hasConfluenceSearchParams = selectedConfluenceSite && searchString;
|
|
299
304
|
var selectedConfluenceSiteUrl = selectedConfluenceSite === null || selectedConfluenceSite === void 0 ? void 0 : selectedConfluenceSite.url;
|
|
300
|
-
var confluenceSearchUrl =
|
|
305
|
+
var confluenceSearchUrl = (0, _react.useMemo)(function () {
|
|
306
|
+
if (!selectedConfluenceSiteUrl || searchString === undefined) {
|
|
307
|
+
return undefined;
|
|
308
|
+
}
|
|
309
|
+
var params = new URLSearchParams();
|
|
310
|
+
// we are appending "text" without checking searchString as we need the url to have "text" when a user does an empty search
|
|
311
|
+
params.append('text', searchString);
|
|
312
|
+
if (contributorAccountIds.length > 0) {
|
|
313
|
+
params.append('contributors', contributorAccountIds.join(','));
|
|
314
|
+
}
|
|
315
|
+
return "".concat(selectedConfluenceSiteUrl, "/wiki/search?").concat(params.toString());
|
|
316
|
+
}, [contributorAccountIds, searchString, selectedConfluenceSiteUrl]);
|
|
301
317
|
var analyticsPayload = (0, _react.useMemo)(function () {
|
|
302
318
|
return {
|
|
303
319
|
extensionKey: extensionKey,
|
|
@@ -486,7 +502,8 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
|
|
|
486
502
|
cloudId: cloudId,
|
|
487
503
|
isSearching: status === 'loading',
|
|
488
504
|
onSearch: onSearch,
|
|
489
|
-
initialSearchValue: initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.searchString
|
|
505
|
+
initialSearchValue: initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.searchString,
|
|
506
|
+
initialFilterSelection: initialFilterSelection
|
|
490
507
|
})), currentViewMode === 'inline' ? renderInlineLinkModalContent() : renderTableModalContent()) : (0, _react2.jsx)(_noInstances.NoInstancesView, {
|
|
491
508
|
title: _messages.confluenceSearchModalMessages.noAccessToConfluenceSitesTitle,
|
|
492
509
|
description: _messages.confluenceSearchModalMessages.noAccessToConfluenceSitesDescription,
|
|
@@ -12,7 +12,7 @@ var _analytics = require("../../../analytics");
|
|
|
12
12
|
var jsmTextStyles = (0, _primitives.xcss)({
|
|
13
13
|
fontSize: 'small',
|
|
14
14
|
color: 'color.text.subtle',
|
|
15
|
-
marginLeft:
|
|
15
|
+
marginLeft: 'space.075',
|
|
16
16
|
':hover': {
|
|
17
17
|
color: 'color.link.pressed'
|
|
18
18
|
}
|
|
@@ -276,4 +276,46 @@ export const mockUserRecommendationsResponse = {
|
|
|
276
276
|
isConfluenceExternalCollaborator: false
|
|
277
277
|
}
|
|
278
278
|
}]
|
|
279
|
-
};
|
|
279
|
+
};
|
|
280
|
+
export const mockUserHydrationResponse = {
|
|
281
|
+
data: {
|
|
282
|
+
users: [{
|
|
283
|
+
accountId: '655363:d8dff7fe-efb7-4073-a3cd-12463ac79e1c',
|
|
284
|
+
name: 'Peter Grasevski',
|
|
285
|
+
picture: 'https://secure.gravatar.com/avatar/f4bb2f6eef1621e67cd136c0be9af81c?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FPG-5.png'
|
|
286
|
+
}, {
|
|
287
|
+
accountId: '62cf07378afb5805e5d46454',
|
|
288
|
+
name: 'Richard Wang',
|
|
289
|
+
picture: 'https://avatar-management--avatars.us-west-2.staging.public.atl-paas.net/62cf07378afb5805e5d46454/5d1719ab-8717-4837-9ae7-a3761c3b6604/128'
|
|
290
|
+
}, {
|
|
291
|
+
accountId: '62f3ed1ee50f2f2a39573e7f',
|
|
292
|
+
name: 'Luke Muller',
|
|
293
|
+
picture: 'https://avatar-management--avatars.us-west-2.staging.public.atl-paas.net/62f3ed1ee50f2f2a39573e7f/1bd99ace-ea01-4d41-b0ab-3e1ebc353914/128'
|
|
294
|
+
}, {
|
|
295
|
+
accountId: '6232212a62dc1e006802dea8',
|
|
296
|
+
name: 'Nidhin Joseph',
|
|
297
|
+
picture: 'https://secure.gravatar.com/avatar/815c1ee3e8e2839ef94bf90b134d1c68?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FNJ-2.png'
|
|
298
|
+
}]
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
export const mockTransformedUserHydrationResponse = [{
|
|
302
|
+
optionType: 'avatarLabel',
|
|
303
|
+
label: 'Peter Grasevski',
|
|
304
|
+
value: '655363:d8dff7fe-efb7-4073-a3cd-12463ac79e1c',
|
|
305
|
+
avatar: 'https://secure.gravatar.com/avatar/f4bb2f6eef1621e67cd136c0be9af81c?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FPG-5.png'
|
|
306
|
+
}, {
|
|
307
|
+
optionType: 'avatarLabel',
|
|
308
|
+
label: 'Richard Wang',
|
|
309
|
+
value: '62cf07378afb5805e5d46454',
|
|
310
|
+
avatar: 'https://avatar-management--avatars.us-west-2.staging.public.atl-paas.net/62cf07378afb5805e5d46454/5d1719ab-8717-4837-9ae7-a3761c3b6604/128'
|
|
311
|
+
}, {
|
|
312
|
+
optionType: 'avatarLabel',
|
|
313
|
+
label: 'Luke Muller',
|
|
314
|
+
value: '62f3ed1ee50f2f2a39573e7f',
|
|
315
|
+
avatar: 'https://avatar-management--avatars.us-west-2.staging.public.atl-paas.net/62f3ed1ee50f2f2a39573e7f/1bd99ace-ea01-4d41-b0ab-3e1ebc353914/128'
|
|
316
|
+
}, {
|
|
317
|
+
optionType: 'avatarLabel',
|
|
318
|
+
label: 'Nidhin Joseph',
|
|
319
|
+
value: '6232212a62dc1e006802dea8',
|
|
320
|
+
avatar: 'https://secure.gravatar.com/avatar/815c1ee3e8e2839ef94bf90b134d1c68?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FNJ-2.png'
|
|
321
|
+
}];
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { useCallback, useMemo } from 'react';
|
|
2
2
|
import { request } from '@atlaskit/linking-common';
|
|
3
|
-
import { fieldValuesQuery, hydrateJQLQuery, userQuery } from './utils';
|
|
3
|
+
import { fieldValuesQuery, hydrateJQLQuery, userHydration, userQuery } from './utils';
|
|
4
4
|
const AGG_BASE_URL = '/gateway/api/graphql';
|
|
5
5
|
export const useBasicFilterAGG = () => {
|
|
6
|
-
const requestCall = useCallback(async body => request('post', AGG_BASE_URL, body,
|
|
7
|
-
'X-ExperimentalApi': 'JiraJqlBuilder'
|
|
8
|
-
}, [200, 201, 202, 203, 204]), []);
|
|
6
|
+
const requestCall = useCallback(async (body, headers) => request('post', AGG_BASE_URL, body, headers, [200, 201, 202, 203, 204]), []);
|
|
9
7
|
const getHydratedJQL = useCallback((cloudId, jql) => requestCall({
|
|
10
8
|
variables: {
|
|
11
9
|
cloudId,
|
|
@@ -13,6 +11,8 @@ export const useBasicFilterAGG = () => {
|
|
|
13
11
|
},
|
|
14
12
|
operationName: 'hydrate',
|
|
15
13
|
query: hydrateJQLQuery
|
|
14
|
+
}, {
|
|
15
|
+
'X-ExperimentalApi': 'JiraJqlBuilder'
|
|
16
16
|
}), [requestCall]);
|
|
17
17
|
const getFieldValues = useCallback(({
|
|
18
18
|
cloudId,
|
|
@@ -31,14 +31,24 @@ export const useBasicFilterAGG = () => {
|
|
|
31
31
|
},
|
|
32
32
|
operationName: 'fieldValues',
|
|
33
33
|
query: fieldValuesQuery
|
|
34
|
+
}, {
|
|
35
|
+
'X-ExperimentalApi': 'JiraJqlBuilder'
|
|
34
36
|
}), [requestCall]);
|
|
35
37
|
const getCurrentUserInfo = useCallback(() => requestCall({
|
|
36
38
|
operationName: 'userQuery',
|
|
37
39
|
query: userQuery
|
|
38
40
|
}), [requestCall]);
|
|
41
|
+
const getUsersFromAccountIDs = useCallback(accountIds => requestCall({
|
|
42
|
+
variables: {
|
|
43
|
+
accountIds
|
|
44
|
+
},
|
|
45
|
+
operationName: 'userHydration',
|
|
46
|
+
query: userHydration
|
|
47
|
+
}), [requestCall]);
|
|
39
48
|
return useMemo(() => ({
|
|
40
49
|
getHydratedJQL,
|
|
41
50
|
getFieldValues,
|
|
42
|
-
getCurrentUserInfo
|
|
43
|
-
|
|
51
|
+
getCurrentUserInfo,
|
|
52
|
+
getUsersFromAccountIDs
|
|
53
|
+
}), [getHydratedJQL, getFieldValues, getCurrentUserInfo, getUsersFromAccountIDs]);
|
|
44
54
|
};
|
package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/edited-or-created-by/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useCallback, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
2
|
import { useIntl } from 'react-intl-next';
|
|
3
3
|
import { useDebouncedCallback } from 'use-debounce';
|
|
4
4
|
import { FilterPopupSelect } from '../../../../common/modal/popup-select';
|
|
@@ -11,7 +11,8 @@ const filterName = `clol-basic-filter-${CLOLBasicFilters.editedOrCreatedBy}`;
|
|
|
11
11
|
const EditedOrCreatedByFilter = ({
|
|
12
12
|
cloudId,
|
|
13
13
|
onSelectionChange,
|
|
14
|
-
selection = []
|
|
14
|
+
selection = [],
|
|
15
|
+
isHydrating = false
|
|
15
16
|
}) => {
|
|
16
17
|
const {
|
|
17
18
|
user
|
|
@@ -23,8 +24,10 @@ const EditedOrCreatedByFilter = ({
|
|
|
23
24
|
status,
|
|
24
25
|
filterOptions,
|
|
25
26
|
fetchFilterOptions,
|
|
26
|
-
errors
|
|
27
|
+
errors,
|
|
28
|
+
reset: resetHook
|
|
27
29
|
} = useRecommendation();
|
|
30
|
+
const currentSiteCloudId = useRef(cloudId || '');
|
|
28
31
|
const [searchTerm, setSearchTerm] = useState('');
|
|
29
32
|
const [handleDebouncedFetchFilterOptions] = useDebouncedCallback(searchTerm => {
|
|
30
33
|
if (cloudId && user !== null && user !== void 0 && user.accountId) {
|
|
@@ -57,6 +60,14 @@ const EditedOrCreatedByFilter = ({
|
|
|
57
60
|
const isLoading = status === 'loading' || status === 'empty';
|
|
58
61
|
const isEmpty = status === 'resolved' && filterOptionsLength === 0;
|
|
59
62
|
const isDisabled = !cloudId || !(user !== null && user !== void 0 && user.accountId);
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
if (cloudId && currentSiteCloudId.current !== cloudId) {
|
|
65
|
+
currentSiteCloudId.current = cloudId;
|
|
66
|
+
if (status === 'resolved') {
|
|
67
|
+
resetHook();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}, [cloudId, resetHook, status]);
|
|
60
71
|
return /*#__PURE__*/React.createElement(FilterPopupSelect, {
|
|
61
72
|
buttonLabel: formatMessage(editedOrCreatedByMessage.buttonLabel),
|
|
62
73
|
filterName: filterName,
|
|
@@ -66,7 +77,7 @@ const EditedOrCreatedByFilter = ({
|
|
|
66
77
|
selectedOptions: selection,
|
|
67
78
|
onSelectionChange: handleOptionSelection,
|
|
68
79
|
onInputChange: handleInputChange,
|
|
69
|
-
showHydrating:
|
|
80
|
+
showHydrating: isHydrating,
|
|
70
81
|
shouldShowFooter: false,
|
|
71
82
|
status: status,
|
|
72
83
|
onMenuOpen: handleMenuOpen,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useCallback, useState } from 'react';
|
|
2
|
+
import { useBasicFilterAGG } from '../../../../services/useBasicFilterAGG';
|
|
3
|
+
export const useBasicFilterHydration = () => {
|
|
4
|
+
const [status, setStatus] = useState('empty');
|
|
5
|
+
const {
|
|
6
|
+
getUsersFromAccountIDs
|
|
7
|
+
} = useBasicFilterAGG();
|
|
8
|
+
const [users, setUsers] = useState([]);
|
|
9
|
+
const convertUserHydrationResponseToFilterOptions = response => {
|
|
10
|
+
var _response$data, _response$data2;
|
|
11
|
+
if (!((_response$data = response.data) !== null && _response$data !== void 0 && _response$data.users)) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
return (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.users.map(item => ({
|
|
15
|
+
optionType: 'avatarLabel',
|
|
16
|
+
label: item.name,
|
|
17
|
+
value: item.accountId,
|
|
18
|
+
avatar: item.picture
|
|
19
|
+
}));
|
|
20
|
+
};
|
|
21
|
+
const hydrateUsersFromAccountIds = useCallback(async accountIds => {
|
|
22
|
+
try {
|
|
23
|
+
setStatus('loading');
|
|
24
|
+
const response = await getUsersFromAccountIDs(accountIds);
|
|
25
|
+
if (response.errors && response.errors.length > 0) {
|
|
26
|
+
throw new Error(JSON.stringify(response.errors));
|
|
27
|
+
}
|
|
28
|
+
setUsers(convertUserHydrationResponseToFilterOptions(response));
|
|
29
|
+
setStatus('resolved');
|
|
30
|
+
} catch (error) {
|
|
31
|
+
setStatus('rejected');
|
|
32
|
+
}
|
|
33
|
+
}, [getUsersFromAccountIDs]);
|
|
34
|
+
return {
|
|
35
|
+
hydrateUsersFromAccountIds,
|
|
36
|
+
status,
|
|
37
|
+
users
|
|
38
|
+
};
|
|
39
|
+
};
|