@atlaskit/link-datasource 2.8.0 → 2.9.1
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 +17 -0
- package/dist/cjs/hooks/useDatasourceTableState.js +54 -39
- package/dist/cjs/state/index.js +68 -0
- package/dist/cjs/ui/assets-modal/modal/index.js +8 -5
- package/dist/cjs/ui/common/modal/datasource-modal/createDatasourceModal.js +55 -0
- package/dist/cjs/ui/common/modal/datasources-table-in-modal-preview/index.js +13 -2
- package/dist/cjs/ui/common/modal/insert-button/index.js +5 -4
- package/dist/cjs/ui/confluence-search-modal/modal/index.js +36 -39
- package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +3 -2
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +142 -211
- package/dist/es2019/hooks/useDatasourceTableState.js +15 -5
- package/dist/es2019/state/index.js +55 -0
- package/dist/es2019/ui/assets-modal/modal/index.js +9 -6
- package/dist/es2019/ui/common/modal/datasource-context/index.js +1 -1
- package/dist/es2019/ui/common/modal/datasource-modal/createDatasourceModal.js +51 -0
- package/dist/es2019/ui/common/modal/datasources-table-in-modal-preview/index.js +9 -2
- package/dist/es2019/ui/common/modal/insert-button/index.js +5 -4
- package/dist/es2019/ui/confluence-search-modal/modal/index.js +36 -39
- package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +4 -3
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +134 -202
- package/dist/esm/hooks/useDatasourceTableState.js +54 -39
- package/dist/esm/state/index.js +61 -0
- package/dist/esm/ui/assets-modal/modal/index.js +9 -6
- package/dist/esm/ui/common/modal/datasource-modal/createDatasourceModal.js +48 -0
- package/dist/esm/ui/common/modal/datasources-table-in-modal-preview/index.js +10 -2
- package/dist/esm/ui/common/modal/insert-button/index.js +5 -4
- package/dist/esm/ui/confluence-search-modal/modal/index.js +39 -42
- package/dist/esm/ui/datasource-table-view/datasourceTableView.js +4 -3
- package/dist/esm/ui/jira-issues-modal/modal/index.js +147 -216
- package/dist/types/common/types.d.ts +2 -1
- package/dist/types/state/index.d.ts +21 -0
- package/dist/types/ui/common/modal/datasource-context/index.d.ts +9 -12
- package/dist/types/ui/common/modal/datasource-modal/createDatasourceModal.d.ts +15 -0
- package/dist/types/ui/common/modal/insert-button/index.d.ts +4 -2
- package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.d.ts +1 -1
- package/dist/types/ui/confluence-search-modal/modal/index.d.ts +3 -4
- package/dist/types/ui/confluence-search-modal/types.d.ts +6 -1
- package/dist/types/ui/jira-issues-modal/modal/index.d.ts +3 -3
- package/dist/types/ui/jira-issues-modal/types.d.ts +3 -0
- package/dist/types-ts4.5/common/types.d.ts +2 -1
- package/dist/types-ts4.5/state/index.d.ts +21 -0
- package/dist/types-ts4.5/ui/common/modal/datasource-context/index.d.ts +9 -12
- package/dist/types-ts4.5/ui/common/modal/datasource-modal/createDatasourceModal.d.ts +15 -0
- package/dist/types-ts4.5/ui/common/modal/insert-button/index.d.ts +4 -2
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/PopupComponent.d.ts +1 -1
- package/dist/types-ts4.5/ui/confluence-search-modal/modal/index.d.ts +3 -4
- package/dist/types-ts4.5/ui/confluence-search-modal/types.d.ts +6 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/modal/index.d.ts +3 -3
- package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +3 -0
- package/package.json +5 -1
|
@@ -12,7 +12,6 @@ var _react = require("react");
|
|
|
12
12
|
var _react2 = require("@emotion/react");
|
|
13
13
|
var _reactIntlNext = require("react-intl-next");
|
|
14
14
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
15
|
-
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
16
15
|
var _intlMessagesProvider = require("@atlaskit/intl-messages-provider");
|
|
17
16
|
var _modalDialog = require("@atlaskit/modal-dialog");
|
|
18
17
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
@@ -23,13 +22,12 @@ var _ufoExperiences = require("../../../analytics/ufoExperiences");
|
|
|
23
22
|
var _useColumnPickerRenderedFailedUfoExperience = require("../../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience");
|
|
24
23
|
var _useDataRenderedUfoExperience = require("../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience");
|
|
25
24
|
var _utils = require("../../../analytics/utils");
|
|
26
|
-
var _adf = require("../../../common/utils/adf");
|
|
27
25
|
var _fetchMessagesForLocale = require("../../../common/utils/locale/fetch-messages-for-locale");
|
|
28
26
|
var _datasourceExperienceId = require("../../../contexts/datasource-experience-id");
|
|
29
27
|
var _userInteractions = require("../../../contexts/user-interactions");
|
|
30
|
-
var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState");
|
|
31
28
|
var _en = _interopRequireDefault(require("../../../i18n/en"));
|
|
32
29
|
var _useAvailableSites2 = require("../../../services/useAvailableSites");
|
|
30
|
+
var _state = require("../../../state");
|
|
33
31
|
var _accessRequired = require("../../common/error-state/access-required");
|
|
34
32
|
var _messages = require("../../common/error-state/messages");
|
|
35
33
|
var _modalLoadingError = require("../../common/error-state/modal-loading-error");
|
|
@@ -40,15 +38,16 @@ var _messages2 = require("../../common/initial-state-view/messages");
|
|
|
40
38
|
var _cancelButton = require("../../common/modal/cancel-button");
|
|
41
39
|
var _contentContainer = require("../../common/modal/content-container");
|
|
42
40
|
var _countViewSmartLink = require("../../common/modal/count-view-smart-link");
|
|
41
|
+
var _datasourceContext = require("../../common/modal/datasource-context");
|
|
43
42
|
var _datasourceModal = require("../../common/modal/datasource-modal");
|
|
44
|
-
var
|
|
45
|
-
var
|
|
43
|
+
var _createDatasourceModal = require("../../common/modal/datasource-modal/createDatasourceModal");
|
|
44
|
+
var _datasourcesTableInModalPreview = _interopRequireDefault(require("../../common/modal/datasources-table-in-modal-preview"));
|
|
45
|
+
var _insertButton = require("../../common/modal/insert-button");
|
|
46
46
|
var _modeSwitcher = require("../../common/modal/mode-switcher");
|
|
47
47
|
var _useViewModeContext2 = require("../../common/modal/mode-switcher/useViewModeContext");
|
|
48
48
|
var _searchCount = _interopRequireDefault(require("../../common/modal/search-count"));
|
|
49
49
|
var _siteSelector = require("../../common/modal/site-selector");
|
|
50
50
|
var _issueLikeTable = require("../../issue-like-table");
|
|
51
|
-
var _utils2 = require("../../issue-like-table/utils");
|
|
52
51
|
var _ui = require("../basic-filters/ui");
|
|
53
52
|
var _isQueryTooComplex = require("../basic-filters/utils/isQueryTooComplex");
|
|
54
53
|
var _jiraSearchContainer = require("../jira-search-container");
|
|
@@ -60,7 +59,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
60
59
|
* @jsxRuntime classic
|
|
61
60
|
* @jsx jsx
|
|
62
61
|
*/ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
63
|
-
var DEFAULT_VIEW_MODE = 'table';
|
|
64
62
|
var getDisplayValue = function getDisplayValue(currentViewMode, itemCount) {
|
|
65
63
|
if (currentViewMode === 'table') {
|
|
66
64
|
return _types.DatasourceDisplay.DATASOURCE_TABLE;
|
|
@@ -68,81 +66,55 @@ var getDisplayValue = function getDisplayValue(currentViewMode, itemCount) {
|
|
|
68
66
|
return itemCount === 1 ? _types.DatasourceDisplay.INLINE : _types.DatasourceDisplay.DATASOURCE_INLINE;
|
|
69
67
|
};
|
|
70
68
|
var jqlSupportDocumentLink = 'https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/';
|
|
69
|
+
var isValidParameters = function isValidParameters(parameters) {
|
|
70
|
+
return typeof (parameters === null || parameters === void 0 ? void 0 : parameters.jql) === 'string' && parameters.jql.length > 0 && typeof (parameters === null || parameters === void 0 ? void 0 : parameters.cloudId) === 'string' && parameters.cloudId.length > 0;
|
|
71
|
+
};
|
|
71
72
|
var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
72
|
-
var
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
73
|
+
var onCancel = props.onCancel,
|
|
74
|
+
urlBeingEdited = props.url;
|
|
75
|
+
var _useDatasourceContext = (0, _datasourceContext.useDatasourceContext)(),
|
|
76
|
+
visibleColumnCount = _useDatasourceContext.visibleColumnCount,
|
|
77
|
+
visibleColumnKeys = _useDatasourceContext.visibleColumnKeys,
|
|
78
|
+
parameters = _useDatasourceContext.parameters,
|
|
79
|
+
setParameters = _useDatasourceContext.setParameters,
|
|
80
|
+
tableState = _useDatasourceContext.tableState;
|
|
81
|
+
var reset = tableState.reset,
|
|
82
|
+
status = tableState.status,
|
|
83
|
+
responseItems = tableState.responseItems,
|
|
84
|
+
columns = tableState.columns,
|
|
85
|
+
totalCount = tableState.totalCount,
|
|
86
|
+
_tableState$extension = tableState.extensionKey,
|
|
87
|
+
extensionKey = _tableState$extension === void 0 ? null : _tableState$extension,
|
|
88
|
+
destinationObjectTypes = tableState.destinationObjectTypes;
|
|
89
|
+
var _ref = parameters !== null && parameters !== void 0 ? parameters : {},
|
|
90
|
+
cloudId = _ref.cloudId,
|
|
91
|
+
jql = _ref.jql;
|
|
92
|
+
var _useState = (0, _react.useState)(jql),
|
|
93
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 1),
|
|
94
|
+
initialJql = _useState2[0];
|
|
80
95
|
var _useViewModeContext = (0, _useViewModeContext2.useViewModeContext)(),
|
|
81
96
|
currentViewMode = _useViewModeContext.currentViewMode;
|
|
82
|
-
var _useState = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId),
|
|
83
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
84
|
-
cloudId = _useState2[0],
|
|
85
|
-
setCloudId = _useState2[1];
|
|
86
97
|
var _useAvailableSites = (0, _useAvailableSites2.useAvailableSites)('jira', cloudId),
|
|
87
98
|
availableSites = _useAvailableSites.availableSites,
|
|
88
99
|
selectedJiraSite = _useAvailableSites.selectedSite;
|
|
89
|
-
var _useState3 = (0, _react.useState)(
|
|
100
|
+
var _useState3 = (0, _react.useState)(jql),
|
|
90
101
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
var _useState5 = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql),
|
|
94
|
-
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
95
|
-
searchBarJql = _useState6[0],
|
|
96
|
-
setSearchBarJql = _useState6[1];
|
|
97
|
-
var _useState7 = (0, _react.useState)(initialVisibleColumnKeys),
|
|
98
|
-
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
99
|
-
visibleColumnKeys = _useState8[0],
|
|
100
|
-
setVisibleColumnKeys = _useState8[1];
|
|
102
|
+
searchBarJql = _useState4[0],
|
|
103
|
+
setSearchBarJql = _useState4[1];
|
|
101
104
|
|
|
102
105
|
// analytics related parameters
|
|
103
106
|
var searchCount = (0, _react.useRef)(0);
|
|
104
107
|
var userInteractions = (0, _userInteractions.useUserInteractions)();
|
|
105
108
|
var initialSearchMethod =
|
|
106
109
|
// eslint-disable-next-line @atlaskit/platform/no-preconditioning
|
|
107
|
-
(0, _platformFeatureFlags.fg)('platform.linking-platform.datasource.show-jlol-basic-filters') && !(0, _isQueryTooComplex.isQueryTooComplex)(
|
|
108
|
-
var
|
|
109
|
-
|
|
110
|
-
currentSearchMethod =
|
|
111
|
-
setCurrentSearchMethod =
|
|
110
|
+
(0, _platformFeatureFlags.fg)('platform.linking-platform.datasource.show-jlol-basic-filters') && !(0, _isQueryTooComplex.isQueryTooComplex)(initialJql || '') ? 'basic' : 'jql';
|
|
111
|
+
var _useState5 = (0, _react.useState)(initialSearchMethod),
|
|
112
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
113
|
+
currentSearchMethod = _useState6[0],
|
|
114
|
+
setCurrentSearchMethod = _useState6[1];
|
|
112
115
|
var searchMethodSearchedWith = (0, _react.useRef)(null);
|
|
113
|
-
var visibleColumnCount = (0, _react.useRef)((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
|
|
114
116
|
var basicFilterSelectionsSearchedWith = (0, _react.useRef)({});
|
|
115
117
|
var isSearchedWithComplexQuery = (0, _react.useRef)(false);
|
|
116
|
-
var parameters = (0, _react.useMemo)(function () {
|
|
117
|
-
return !!cloudId ? {
|
|
118
|
-
cloudId: cloudId,
|
|
119
|
-
jql: jql || ''
|
|
120
|
-
} : undefined;
|
|
121
|
-
}, [cloudId, jql]);
|
|
122
|
-
var isParametersSet = !!(jql && cloudId);
|
|
123
|
-
var _useColumnResize = (0, _useColumnResize2.useColumnResize)(initialColumnCustomSizes),
|
|
124
|
-
columnCustomSizes = _useColumnResize.columnCustomSizes,
|
|
125
|
-
onColumnResize = _useColumnResize.onColumnResize;
|
|
126
|
-
var _useColumnWrapping = (0, _useColumnWrapping2.useColumnWrapping)(initialWrappedColumnKeys),
|
|
127
|
-
wrappedColumnKeys = _useColumnWrapping.wrappedColumnKeys,
|
|
128
|
-
onWrappedColumnChange = _useColumnWrapping.onWrappedColumnChange;
|
|
129
|
-
var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)({
|
|
130
|
-
datasourceId: datasourceId,
|
|
131
|
-
parameters: isParametersSet ? parameters : undefined,
|
|
132
|
-
fieldKeys: visibleColumnKeys
|
|
133
|
-
}),
|
|
134
|
-
reset = _useDatasourceTableSt.reset,
|
|
135
|
-
status = _useDatasourceTableSt.status,
|
|
136
|
-
onNextPage = _useDatasourceTableSt.onNextPage,
|
|
137
|
-
responseItems = _useDatasourceTableSt.responseItems,
|
|
138
|
-
hasNextPage = _useDatasourceTableSt.hasNextPage,
|
|
139
|
-
columns = _useDatasourceTableSt.columns,
|
|
140
|
-
defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
|
|
141
|
-
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails,
|
|
142
|
-
totalCount = _useDatasourceTableSt.totalCount,
|
|
143
|
-
_useDatasourceTableSt2 = _useDatasourceTableSt.extensionKey,
|
|
144
|
-
extensionKey = _useDatasourceTableSt2 === void 0 ? null : _useDatasourceTableSt2,
|
|
145
|
-
destinationObjectTypes = _useDatasourceTableSt.destinationObjectTypes;
|
|
146
118
|
var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
|
|
147
119
|
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
148
120
|
var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
|
|
@@ -154,7 +126,6 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
154
126
|
}, [destinationObjectTypes, extensionKey]);
|
|
155
127
|
var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
|
|
156
128
|
var jqlUrl = selectedJiraSite && jql && "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURI(jql));
|
|
157
|
-
var isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
158
129
|
var shouldShowIssueCount = !!totalCount && totalCount !== 1 && currentViewMode === 'table';
|
|
159
130
|
var isDataReady = (visibleColumnKeys || []).length > 0;
|
|
160
131
|
var hasNoJiraSites = availableSites && availableSites.length === 0;
|
|
@@ -181,16 +152,21 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
181
152
|
canBeLink: currentViewMode === 'inline',
|
|
182
153
|
extensionKey: extensionKey
|
|
183
154
|
});
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* If the selected Jira site changes, update the cloudId in the parameters
|
|
158
|
+
* This is mainly useful for setting the initial cloudId after the site selection loads
|
|
159
|
+
*/
|
|
189
160
|
(0, _react.useEffect)(function () {
|
|
190
161
|
if (selectedJiraSite && (!cloudId || cloudId !== selectedJiraSite.cloudId)) {
|
|
191
|
-
|
|
162
|
+
setParameters(function () {
|
|
163
|
+
return {
|
|
164
|
+
jql: '',
|
|
165
|
+
cloudId: selectedJiraSite.cloudId
|
|
166
|
+
};
|
|
167
|
+
});
|
|
192
168
|
}
|
|
193
|
-
}, [cloudId, selectedJiraSite]);
|
|
169
|
+
}, [cloudId, selectedJiraSite, setParameters]);
|
|
194
170
|
var fireSingleItemViewedEvent = (0, _react.useCallback)(function () {
|
|
195
171
|
fireEvent('ui.link.viewed.singleItem', _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
196
172
|
searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current)
|
|
@@ -210,7 +186,7 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
210
186
|
displayedColumnCount: visibleColumnCount.current
|
|
211
187
|
}));
|
|
212
188
|
}
|
|
213
|
-
}, [
|
|
189
|
+
}, [isDataReady, fireEvent, analyticsPayload, totalCount, visibleColumnCount]);
|
|
214
190
|
var fireIssueViewAnalytics = (0, _react.useCallback)(function () {
|
|
215
191
|
if (!totalCount) {
|
|
216
192
|
return;
|
|
@@ -235,10 +211,10 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
235
211
|
}
|
|
236
212
|
}, [currentViewMode, status, fireIssueViewAnalytics, fireCountViewedEvent]);
|
|
237
213
|
(0, _useColumnPickerRenderedFailedUfoExperience.useColumnPickerRenderedFailedUfoExperience)(status, experienceId);
|
|
238
|
-
var onSearch = (0, _react.useCallback)(function (newParameters,
|
|
239
|
-
var searchMethod =
|
|
240
|
-
basicFilterSelections =
|
|
241
|
-
isQueryComplex =
|
|
214
|
+
var onSearch = (0, _react.useCallback)(function (newParameters, _ref2) {
|
|
215
|
+
var searchMethod = _ref2.searchMethod,
|
|
216
|
+
basicFilterSelections = _ref2.basicFilterSelections,
|
|
217
|
+
isQueryComplex = _ref2.isQueryComplex;
|
|
242
218
|
searchCount.current++;
|
|
243
219
|
searchMethodSearchedWith.current = searchMethod;
|
|
244
220
|
basicFilterSelectionsSearchedWith.current = basicFilterSelections;
|
|
@@ -246,19 +222,26 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
246
222
|
if (jql !== newParameters.jql) {
|
|
247
223
|
userInteractions.add(_types.DatasourceAction.QUERY_UPDATED);
|
|
248
224
|
}
|
|
249
|
-
|
|
225
|
+
setParameters(function (state) {
|
|
226
|
+
return state && newParameters.jql ? {
|
|
227
|
+
cloudId: state.cloudId,
|
|
228
|
+
jql: newParameters.jql
|
|
229
|
+
} : undefined;
|
|
230
|
+
});
|
|
250
231
|
reset({
|
|
251
232
|
shouldForceRequest: true
|
|
252
233
|
});
|
|
253
|
-
}, [jql, reset, userInteractions]);
|
|
234
|
+
}, [jql, reset, userInteractions, setParameters]);
|
|
254
235
|
var onSiteSelection = (0, _react.useCallback)(function (site) {
|
|
255
236
|
userInteractions.add(_types.DatasourceAction.INSTANCE_UPDATED);
|
|
256
|
-
|
|
257
|
-
|
|
237
|
+
setParameters({
|
|
238
|
+
jql: '',
|
|
239
|
+
cloudId: site.cloudId
|
|
240
|
+
});
|
|
258
241
|
reset({
|
|
259
242
|
shouldForceRequest: true
|
|
260
243
|
});
|
|
261
|
-
}, [reset, userInteractions]);
|
|
244
|
+
}, [reset, userInteractions, setParameters]);
|
|
262
245
|
var retrieveUrlForSmartCardRender = (0, _react.useCallback)(function () {
|
|
263
246
|
var _data$key;
|
|
264
247
|
var _responseItems = (0, _slicedToArray2.default)(responseItems, 1),
|
|
@@ -266,120 +249,6 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
266
249
|
// agreement with BE that we will use `key` for rendering smartlink
|
|
267
250
|
return data === null || data === void 0 || (_data$key = data.key) === null || _data$key === void 0 || (_data$key = _data$key.data) === null || _data$key === void 0 ? void 0 : _data$key.url;
|
|
268
251
|
}, [responseItems]);
|
|
269
|
-
var onInsertPressed = (0, _react.useCallback)(function (e, analyticsEvent) {
|
|
270
|
-
var _insertButtonClickedE;
|
|
271
|
-
if (!isParametersSet || !jql || !selectedJiraSite) {
|
|
272
|
-
return;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
// During insertion, we want the JQL of the datasource to be whatever is in the search bar,
|
|
276
|
-
// even if the user didn't previously click search
|
|
277
|
-
var upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
|
|
278
|
-
var upToDateJqlUrl = selectedJiraSite && jql && "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURIComponent(upToDateJql));
|
|
279
|
-
var filterSelectionCount = _ui.availableBasicFilterTypes.reduce(function (current, filter) {
|
|
280
|
-
var _basicFilterSelection;
|
|
281
|
-
return _objectSpread(_objectSpread({}, current), {}, (0, _defineProperty2.default)({}, "".concat(filter, "BasicFilterSelectionCount"), ((_basicFilterSelection = basicFilterSelectionsSearchedWith.current[filter]) === null || _basicFilterSelection === void 0 ? void 0 : _basicFilterSelection.length) || 0));
|
|
282
|
-
}, {});
|
|
283
|
-
var insertButtonClickedEvent = analyticsEvent.update({
|
|
284
|
-
actionSubjectId: 'insert',
|
|
285
|
-
attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
286
|
-
totalItemCount: totalCount || 0,
|
|
287
|
-
displayedColumnCount: visibleColumnCount.current,
|
|
288
|
-
display: getDisplayValue(currentViewMode, totalCount || 0),
|
|
289
|
-
searchCount: searchCount.current,
|
|
290
|
-
searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
|
|
291
|
-
actions: userInteractions.get(),
|
|
292
|
-
isQueryComplex: isSearchedWithComplexQuery.current
|
|
293
|
-
}, searchMethodSearchedWith.current === 'basic' ? _objectSpread({}, filterSelectionCount) : {}),
|
|
294
|
-
eventType: 'ui'
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
// additional event for tracking in confluence against JIM
|
|
298
|
-
var macroInsertedEvent = analyticsEvent.clone();
|
|
299
|
-
macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.update({
|
|
300
|
-
eventType: 'track',
|
|
301
|
-
action: 'inserted',
|
|
302
|
-
actionSubject: 'macro',
|
|
303
|
-
actionSubjectId: 'jlol',
|
|
304
|
-
attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
305
|
-
totalItemCount: totalCount || 0,
|
|
306
|
-
displayedColumnCount: visibleColumnCount.current,
|
|
307
|
-
display: getDisplayValue(currentViewMode, totalCount || 0),
|
|
308
|
-
searchCount: searchCount.current,
|
|
309
|
-
searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
|
|
310
|
-
actions: userInteractions.get()
|
|
311
|
-
})
|
|
312
|
-
});
|
|
313
|
-
var consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
|
|
314
|
-
insertButtonClickedEvent.fire(_analytics.EVENT_CHANNEL);
|
|
315
|
-
var firstIssueUrl = retrieveUrlForSmartCardRender();
|
|
316
|
-
if (currentViewMode === 'inline') {
|
|
317
|
-
macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.fire(_analytics.EVENT_CHANNEL);
|
|
318
|
-
var url = responseItems.length === 1 ? firstIssueUrl : upToDateJqlUrl;
|
|
319
|
-
onInsert({
|
|
320
|
-
type: 'inlineCard',
|
|
321
|
-
attrs: {
|
|
322
|
-
url: url
|
|
323
|
-
}
|
|
324
|
-
}, consumerEvent);
|
|
325
|
-
} else {
|
|
326
|
-
onInsert((0, _adf.buildDatasourceAdf)({
|
|
327
|
-
id: datasourceId,
|
|
328
|
-
parameters: {
|
|
329
|
-
cloudId: cloudId,
|
|
330
|
-
jql: upToDateJql // TODO support non JQL type
|
|
331
|
-
},
|
|
332
|
-
views: [{
|
|
333
|
-
type: 'table',
|
|
334
|
-
properties: {
|
|
335
|
-
columns: (visibleColumnKeys || []).map(function (key) {
|
|
336
|
-
var width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
|
|
337
|
-
var isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
|
|
338
|
-
return _objectSpread(_objectSpread({
|
|
339
|
-
key: key
|
|
340
|
-
}, width ? {
|
|
341
|
-
width: width
|
|
342
|
-
} : {}), isWrapped ? {
|
|
343
|
-
isWrapped: isWrapped
|
|
344
|
-
} : {});
|
|
345
|
-
})
|
|
346
|
-
}
|
|
347
|
-
}]
|
|
348
|
-
}, upToDateJqlUrl), consumerEvent);
|
|
349
|
-
}
|
|
350
|
-
}, [isParametersSet, jql, selectedJiraSite, searchBarJql, analyticsPayload, totalCount, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys, userInteractions]);
|
|
351
|
-
var handleOnNextPage = (0, _react.useCallback)(function () {
|
|
352
|
-
var onNextPageProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
353
|
-
userInteractions.add(_types.DatasourceAction.NEXT_PAGE_SCROLLED);
|
|
354
|
-
onNextPage(onNextPageProps);
|
|
355
|
-
}, [onNextPage, userInteractions]);
|
|
356
|
-
var handleVisibleColumnKeysChange = (0, _react.useCallback)(function () {
|
|
357
|
-
var newVisibleColumnKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
358
|
-
var columnAction = (0, _utils2.getColumnAction)(visibleColumnKeys || [], newVisibleColumnKeys);
|
|
359
|
-
userInteractions.add(columnAction);
|
|
360
|
-
visibleColumnCount.current = newVisibleColumnKeys.length;
|
|
361
|
-
setVisibleColumnKeys(newVisibleColumnKeys);
|
|
362
|
-
}, [visibleColumnKeys, userInteractions]);
|
|
363
|
-
var issueLikeDataTableView = (0, _react.useMemo)(function () {
|
|
364
|
-
return (0, _react2.jsx)(_contentContainer.ContentContainer, {
|
|
365
|
-
withTableBorder: true
|
|
366
|
-
}, (0, _react2.jsx)(_issueLikeTable.IssueLikeDataTableView, {
|
|
367
|
-
testId: "jira-datasource-table",
|
|
368
|
-
status: status,
|
|
369
|
-
columns: columns,
|
|
370
|
-
items: responseItems,
|
|
371
|
-
hasNextPage: hasNextPage,
|
|
372
|
-
visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
|
|
373
|
-
onNextPage: handleOnNextPage,
|
|
374
|
-
onLoadDatasourceDetails: loadDatasourceDetails,
|
|
375
|
-
onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
|
|
376
|
-
extensionKey: extensionKey,
|
|
377
|
-
columnCustomSizes: columnCustomSizes,
|
|
378
|
-
onColumnResize: onColumnResize,
|
|
379
|
-
wrappedColumnKeys: wrappedColumnKeys,
|
|
380
|
-
onWrappedColumnChange: (0, _platformFeatureFlags.fg)('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
|
|
381
|
-
}));
|
|
382
|
-
}, [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, handleOnNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
|
|
383
252
|
var renderCountModeContent = (0, _react.useCallback)(function () {
|
|
384
253
|
var selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
|
|
385
254
|
if (status === 'unauthorized') {
|
|
@@ -439,8 +308,12 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
439
308
|
} : undefined
|
|
440
309
|
}));
|
|
441
310
|
}
|
|
442
|
-
return
|
|
443
|
-
|
|
311
|
+
return (0, _react2.jsx)(_contentContainer.ContentContainer, {
|
|
312
|
+
withTableBorder: true
|
|
313
|
+
}, (0, _react2.jsx)(_datasourcesTableInModalPreview.default, {
|
|
314
|
+
testId: "jira-datasource-table"
|
|
315
|
+
}));
|
|
316
|
+
}, [columns.length, currentSearchMethod, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
|
|
444
317
|
var siteSelectorLabel = availableSites && availableSites.length > 1 ? _messages3.modalMessages.insertIssuesTitleManySites : _messages3.modalMessages.insertIssuesTitle;
|
|
445
318
|
var getCancelButtonAnalyticsPayload = (0, _react.useCallback)(function () {
|
|
446
319
|
return _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
@@ -448,6 +321,38 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
448
321
|
actions: userInteractions.get()
|
|
449
322
|
});
|
|
450
323
|
}, [analyticsPayload, userInteractions]);
|
|
324
|
+
var filterSelectionCount = _ui.availableBasicFilterTypes.reduce(function (current, filter) {
|
|
325
|
+
var _basicFilterSelection;
|
|
326
|
+
return _objectSpread(_objectSpread({}, current), {}, (0, _defineProperty2.default)({}, "".concat(filter, "BasicFilterSelectionCount"), ((_basicFilterSelection = basicFilterSelectionsSearchedWith.current[filter]) === null || _basicFilterSelection === void 0 ? void 0 : _basicFilterSelection.length) || 0));
|
|
327
|
+
}, {});
|
|
328
|
+
var getInsertButtonAnalyticsPayload = (0, _react.useCallback)(function () {
|
|
329
|
+
return _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
330
|
+
display: getDisplayValue(currentViewMode, totalCount || 0),
|
|
331
|
+
isQueryComplex: isSearchedWithComplexQuery.current,
|
|
332
|
+
searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
|
|
333
|
+
searchCount: searchCount.current,
|
|
334
|
+
actions: userInteractions.get()
|
|
335
|
+
}, searchMethodSearchedWith.current === 'basic' ? _objectSpread({}, filterSelectionCount) : {});
|
|
336
|
+
}, [analyticsPayload, currentViewMode, filterSelectionCount, totalCount, userInteractions]);
|
|
337
|
+
var urlToInsert = (0, _react.useMemo)(function () {
|
|
338
|
+
var jql = parameters === null || parameters === void 0 ? void 0 : parameters.jql;
|
|
339
|
+
if (!jql || !(selectedJiraSite !== null && selectedJiraSite !== void 0 && selectedJiraSite.url)) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
// During insertion, we want the JQL of the datasource to be whatever is in the search bar,
|
|
343
|
+
// even if the user didn't previously click search
|
|
344
|
+
var upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
|
|
345
|
+
var upToDateJqlUrl = "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURIComponent(upToDateJql));
|
|
346
|
+
return currentViewMode === 'inline' && responseItems.length === 1 ? retrieveUrlForSmartCardRender() : upToDateJqlUrl;
|
|
347
|
+
}, [currentViewMode, parameters === null || parameters === void 0 ? void 0 : parameters.jql, responseItems, retrieveUrlForSmartCardRender, searchBarJql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url]);
|
|
348
|
+
var updateParametersBeforeInsert = function updateParametersBeforeInsert(parameters) {
|
|
349
|
+
return {
|
|
350
|
+
cloudId: parameters.cloudId,
|
|
351
|
+
// searchBarJql will not be null at this point, since this function is only called when user press insert button
|
|
352
|
+
//
|
|
353
|
+
jql: searchBarJql || ''
|
|
354
|
+
};
|
|
355
|
+
};
|
|
451
356
|
return (0, _react2.jsx)(_intlMessagesProvider.IntlMessagesProvider, {
|
|
452
357
|
defaultMessages: _en.default,
|
|
453
358
|
loaderFn: _fetchMessagesForLocale.fetchMessagesForLocale
|
|
@@ -482,11 +387,11 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
482
387
|
onCancel: onCancel,
|
|
483
388
|
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
484
389
|
testId: "jira-datasource-modal--cancel-button"
|
|
485
|
-
}), !hasNoJiraSites && (0, _react2.jsx)(
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
390
|
+
}), !hasNoJiraSites && (0, _react2.jsx)(_insertButton.InsertButton, {
|
|
391
|
+
testId: "jira-datasource-modal--insert-button",
|
|
392
|
+
url: urlToInsert,
|
|
393
|
+
overwriteParameters: updateParametersBeforeInsert,
|
|
394
|
+
getAnalyticsPayload: getInsertButtonAnalyticsPayload
|
|
490
395
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages3.modalMessages.insertIssuesButtonText))))));
|
|
491
396
|
};
|
|
492
397
|
var analyticsContextAttributes = {
|
|
@@ -498,9 +403,35 @@ var analyticsContextData = _objectSpread(_objectSpread({}, _constants.componentM
|
|
|
498
403
|
var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
|
|
499
404
|
attributes: _objectSpread({}, analyticsContextAttributes)
|
|
500
405
|
});
|
|
501
|
-
var
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
406
|
+
var ConnectedJiraIssueConfigModal = (0, _createDatasourceModal.createDatasourceModal)({
|
|
407
|
+
isValidParameters: isValidParameters,
|
|
408
|
+
dataProvider: 'jira-issues',
|
|
409
|
+
component: PlainJiraIssuesConfigModal
|
|
410
|
+
});
|
|
411
|
+
var JiraIssuesConfigModalWithExtraAnalyticsOnInsert = function JiraIssuesConfigModalWithExtraAnalyticsOnInsert(props) {
|
|
412
|
+
var onInsert = props.onInsert;
|
|
413
|
+
var onInsertWithMacroAnalytics = (0, _react.useCallback)(function (adf, analyticsEvent) {
|
|
414
|
+
if (analyticsEvent && adf.type === 'inlineCard') {
|
|
415
|
+
var macroInsertedEvent = analyticsEvent.clone();
|
|
416
|
+
macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.update({
|
|
417
|
+
eventType: 'track',
|
|
418
|
+
action: 'inserted',
|
|
419
|
+
actionSubject: 'macro',
|
|
420
|
+
actionSubjectId: 'jlol'
|
|
421
|
+
});
|
|
422
|
+
macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.fire(_constants.EVENT_CHANNEL);
|
|
423
|
+
}
|
|
424
|
+
onInsert(adf, analyticsEvent);
|
|
425
|
+
}, [onInsert]);
|
|
426
|
+
return (0, _react2.jsx)(_state.StoreContainer, null, (0, _react2.jsx)(ConnectedJiraIssueConfigModal, (0, _extends2.default)({}, props, {
|
|
427
|
+
onInsert: onInsertWithMacroAnalytics
|
|
428
|
+
})));
|
|
429
|
+
};
|
|
430
|
+
var JiraIssuesConfigModal = exports.JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
431
|
+
if ((0, _platformFeatureFlags.fg)('platform-datasources-use-refactored-config-modal')) {
|
|
432
|
+
return (0, _react2.jsx)(JiraIssuesConfigModalWithExtraAnalyticsOnInsert, props);
|
|
433
|
+
}
|
|
434
|
+
return (0, _react2.jsx)(_state.StoreContainer, null, (0, _react2.jsx)(_analyticsNext.AnalyticsContext, {
|
|
435
|
+
data: contextData
|
|
436
|
+
}, (0, _react2.jsx)(_datasourceExperienceId.DatasourceExperienceIdProvider, null, (0, _react2.jsx)(_userInteractions.UserInteractionsProvider, null, (0, _react2.jsx)(_ModalOld.PlainJiraIssuesConfigModalOld, props)))));
|
|
437
|
+
};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
2
|
import isEqual from 'lodash/isEqual';
|
|
3
3
|
import { DEFAULT_GET_DATASOURCE_DATA_PAGE_SIZE, useDatasourceClientExtension } from '@atlaskit/link-client-extension';
|
|
4
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
5
|
import { useDatasourceAnalyticsEvents } from '../analytics';
|
|
6
|
+
import { useDatasourceActions } from '../state';
|
|
5
7
|
import useErrorLogger from './useErrorLogger';
|
|
6
8
|
export const useDatasourceTableState = ({
|
|
7
9
|
datasourceId,
|
|
@@ -16,6 +18,9 @@ export const useDatasourceTableState = ({
|
|
|
16
18
|
} = useErrorLogger({
|
|
17
19
|
datasourceId
|
|
18
20
|
});
|
|
21
|
+
const {
|
|
22
|
+
onAddItems
|
|
23
|
+
} = useDatasourceActions();
|
|
19
24
|
const idFieldCount = 1;
|
|
20
25
|
const keyFieldCount = 1;
|
|
21
26
|
const [initialEmptyArray] = useState([]);
|
|
@@ -26,7 +31,8 @@ export const useDatasourceTableState = ({
|
|
|
26
31
|
});
|
|
27
32
|
const [status, setStatus] = useState('empty');
|
|
28
33
|
const [authDetails, setAuthDetails] = useState([]);
|
|
29
|
-
const [responseItems, setResponseItems] = useState(
|
|
34
|
+
const [responseItems, setResponseItems] = useState(initialEmptyArray);
|
|
35
|
+
const [, setResponseItemIds] = useState(initialEmptyArray);
|
|
30
36
|
const [hasNextPage, setHasNextPage] = useState(true);
|
|
31
37
|
const [nextCursor, setNextCursor] = useState(undefined);
|
|
32
38
|
const [columns, setColumns] = useState([]);
|
|
@@ -157,7 +163,6 @@ export const useDatasourceTableState = ({
|
|
|
157
163
|
schema
|
|
158
164
|
}
|
|
159
165
|
} = await getDatasourceData(datasourceId, datasourceDataRequest, shouldForceRequest);
|
|
160
|
-
|
|
161
166
|
/**
|
|
162
167
|
* Let the response finish and store in cache, but throw error if signal is aborted
|
|
163
168
|
*/
|
|
@@ -180,6 +185,10 @@ export const useDatasourceTableState = ({
|
|
|
180
185
|
}
|
|
181
186
|
return [...currentResponseItems, ...items];
|
|
182
187
|
});
|
|
188
|
+
if (fg('enable_datasource_react_sweet_state')) {
|
|
189
|
+
const newIds = onAddItems(items);
|
|
190
|
+
setResponseItemIds(currentIds => [...currentIds, ...newIds]);
|
|
191
|
+
}
|
|
183
192
|
setHasNextPage(Boolean(nextPageCursor));
|
|
184
193
|
if (fieldKeys.length > 0) {
|
|
185
194
|
setLastRequestedFieldKeys(fieldKeys);
|
|
@@ -187,9 +196,9 @@ export const useDatasourceTableState = ({
|
|
|
187
196
|
if ((isSchemaFromData && schema || fullSchema.properties.length > 0) && items.length > 0) {
|
|
188
197
|
applySchemaProperties(schema || fullSchema, fieldKeys);
|
|
189
198
|
}
|
|
190
|
-
const isUserLoadingNextPage =
|
|
199
|
+
const isUserLoadingNextPage = responseItems.length !== 0 && !shouldRequestFirstPage;
|
|
191
200
|
if (isUserLoadingNextPage) {
|
|
192
|
-
const currentLoadedItemCount =
|
|
201
|
+
const currentLoadedItemCount = responseItems.length;
|
|
193
202
|
const newlyLoadedItemCount = (items === null || items === void 0 ? void 0 : items.length) || 0;
|
|
194
203
|
fireEvent('track.nextItem.loaded', {
|
|
195
204
|
extensionKey,
|
|
@@ -219,9 +228,10 @@ export const useDatasourceTableState = ({
|
|
|
219
228
|
}
|
|
220
229
|
setStatus('rejected');
|
|
221
230
|
}
|
|
222
|
-
}, [captureError, parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId,
|
|
231
|
+
}, [captureError, parameters, fieldKeys, nextCursor, responseItems, setResponseItemIds, onAddItems, getDatasourceData, datasourceId, applySchemaProperties, fireEvent, fullSchema, initialEmptyArray]);
|
|
223
232
|
const reset = useCallback(options => {
|
|
224
233
|
setResponseItems(initialEmptyArray);
|
|
234
|
+
setResponseItemIds(initialEmptyArray);
|
|
225
235
|
setHasNextPage(true);
|
|
226
236
|
setNextCursor(undefined);
|
|
227
237
|
setTotalCount(undefined);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { createActionsHook, createContainer, createStateHook, createStore } from 'react-sweet-state';
|
|
3
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
4
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
5
|
+
const getInitialState = () => ({
|
|
6
|
+
items: {}
|
|
7
|
+
});
|
|
8
|
+
export const actions = {
|
|
9
|
+
onAddItems: items => ({
|
|
10
|
+
setState,
|
|
11
|
+
getState
|
|
12
|
+
}) => {
|
|
13
|
+
const oldItems = {
|
|
14
|
+
...getState().items
|
|
15
|
+
};
|
|
16
|
+
const [newItemIds, newItems] = items.reduce(([ids, itemMap], item) => {
|
|
17
|
+
var _item$ari;
|
|
18
|
+
const ari = typeof ((_item$ari = item['ari']) === null || _item$ari === void 0 ? void 0 : _item$ari.data) === 'string' ? item['ari'].data : undefined;
|
|
19
|
+
const id = ari !== null && ari !== void 0 ? ari : uuidv4();
|
|
20
|
+
return [[...ids, id], {
|
|
21
|
+
...itemMap,
|
|
22
|
+
[id]: {
|
|
23
|
+
...oldItems[id],
|
|
24
|
+
...item
|
|
25
|
+
}
|
|
26
|
+
}];
|
|
27
|
+
}, [[], oldItems]);
|
|
28
|
+
setState({
|
|
29
|
+
items: newItems
|
|
30
|
+
});
|
|
31
|
+
return newItemIds;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
export const Store = createStore({
|
|
35
|
+
name: 'datasource-store',
|
|
36
|
+
initialState: getInitialState(),
|
|
37
|
+
actions
|
|
38
|
+
});
|
|
39
|
+
export const useDatasourceItem = createStateHook(Store, {
|
|
40
|
+
selector: (state, {
|
|
41
|
+
id
|
|
42
|
+
}) => state.items[id]
|
|
43
|
+
});
|
|
44
|
+
export const useDatasourceActions = createActionsHook(Store);
|
|
45
|
+
const Container = createContainer(Store);
|
|
46
|
+
export const StoreContainer = ({
|
|
47
|
+
children
|
|
48
|
+
}) => {
|
|
49
|
+
if (fg('enable_datasource_react_sweet_state')) {
|
|
50
|
+
return /*#__PURE__*/React.createElement(Container, {
|
|
51
|
+
scope: "datasource"
|
|
52
|
+
}, children);
|
|
53
|
+
}
|
|
54
|
+
return children;
|
|
55
|
+
};
|