@atlaskit/link-datasource 3.11.0 → 3.12.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 CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 3.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#166988](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/166988)
8
+ [`0950f1f3c353f`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/0950f1f3c353f) -
9
+ [ux] EDM-11263 Add UFO metrics to inline-edit icon field
10
+
11
+ ## 3.11.1
12
+
13
+ ### Patch Changes
14
+
15
+ - [#166969](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/166969)
16
+ [`ba7fe3ec68dad`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/ba7fe3ec68dad) -
17
+ Feature flag removed - platform.linking-platform.datasource-assets_add_version_parameter
18
+
3
19
  ## 3.11.0
4
20
 
5
21
  ### Minor Changes
@@ -15,7 +15,6 @@ var _analyticsNext = require("@atlaskit/analytics-next");
15
15
  var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
16
16
  var _intlMessagesProvider = require("@atlaskit/intl-messages-provider");
17
17
  var _modalDialog = require("@atlaskit/modal-dialog");
18
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
19
18
  var _analytics = require("../../../analytics");
20
19
  var _constants = require("../../../analytics/constants");
21
20
  var _types = require("../../../analytics/types");
@@ -67,9 +66,7 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
67
66
  schemaId = _useState4[0],
68
67
  setSchemaId = _useState4[1];
69
68
  var apiVersion = initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.version;
70
- var _useState5 = (0, _react.useState)(
71
- // eslint-disable-next-line @atlaskit/platform/no-preconditioning
72
- (0, _platformFeatureFlags.fg)('platform.linking-platform.datasource-assets_add_version_parameter') && apiVersion !== VERSION_TWO ? [] : initialVisibleColumnKeys),
69
+ var _useState5 = (0, _react.useState)(apiVersion !== VERSION_TWO ? [] : initialVisibleColumnKeys),
73
70
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
74
71
  visibleColumnKeys = _useState6[0],
75
72
  setVisibleColumnKeys = _useState6[1];
@@ -124,13 +121,12 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
124
121
  /* ------------------------------ END PERMISSIONS ------------------------------ */
125
122
 
126
123
  var parameters = (0, _react.useMemo)(function () {
127
- return _objectSpread({
124
+ return {
128
125
  aql: aql || '',
129
126
  schemaId: schemaId || '',
130
- workspaceId: workspaceId || ''
131
- }, (0, _platformFeatureFlags.fg)('platform.linking-platform.datasource-assets_add_version_parameter') ? {
127
+ workspaceId: workspaceId || '',
132
128
  version: VERSION_TWO
133
- } : {});
129
+ };
134
130
  }, [aql, schemaId, workspaceId]);
135
131
  var isParametersSet = !!(aql && workspaceId && schemaId);
136
132
  var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)({
@@ -213,13 +209,8 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
213
209
  setIsNewSearch(false);
214
210
  }, []);
215
211
  (0, _react.useEffect)(function () {
216
- if ((0, _platformFeatureFlags.fg)('platform.linking-platform.datasource-assets_add_version_parameter')) {
217
- var newVisibleColumnKeys = initialVisibleColumnKeys && initialVisibleColumnKeys.length > 0 && apiVersion === VERSION_TWO ? initialVisibleColumnKeys : defaultVisibleColumnKeys;
218
- setVisibleColumnKeys(newVisibleColumnKeys);
219
- } else {
220
- var _newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
221
- setVisibleColumnKeys(_newVisibleColumnKeys);
222
- }
212
+ var newVisibleColumnKeys = initialVisibleColumnKeys && initialVisibleColumnKeys.length > 0 && apiVersion === VERSION_TWO ? initialVisibleColumnKeys : defaultVisibleColumnKeys;
213
+ setVisibleColumnKeys(newVisibleColumnKeys);
223
214
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys, apiVersion]);
224
215
  (0, _react.useEffect)(function () {
225
216
  if (isNewSearch) {
@@ -268,13 +259,12 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
268
259
  } else {
269
260
  onInsert((0, _adf.buildDatasourceAdf)({
270
261
  id: datasourceId,
271
- parameters: _objectSpread({
262
+ parameters: {
272
263
  workspaceId: workspaceId,
273
264
  aql: aql,
274
- schemaId: schemaId
275
- }, (0, _platformFeatureFlags.fg)('platform.linking-platform.datasource-assets_add_version_parameter') ? {
265
+ schemaId: schemaId,
276
266
  version: VERSION_TWO
277
- } : {}),
267
+ },
278
268
  views: [{
279
269
  type: 'table',
280
270
  properties: {
@@ -13,7 +13,11 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _linkingTypes = require("@atlaskit/linking-types");
15
15
  var _select = _interopRequireDefault(require("@atlaskit/select"));
16
+ var _ufoExperiences = require("../../../../analytics/ufoExperiences");
17
+ var _datasourceExperienceId = require("../../../../contexts/datasource-experience-id");
18
+ var _useDatasourceTableFlag = require("../../../../hooks/useDatasourceTableFlag");
16
19
  var _icon = require("../../shared-components/icon");
20
+ var _inlineEdit = require("../../table-cell-content/inline-edit");
17
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); }
18
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 && {}.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; }
19
23
  // FilterOptionOption is used in the filterOption function which is part of the public API, but the type itself is not exported
@@ -28,7 +32,23 @@ var IconEditType = function IconEditType(props) {
28
32
  executeFetch = props.executeFetch;
29
33
  var _usePriorityOptions = usePriorityOptions(currentValue, executeFetch),
30
34
  options = _usePriorityOptions.options,
31
- isLoading = _usePriorityOptions.isLoading;
35
+ isLoading = _usePriorityOptions.isLoading,
36
+ hasFailed = _usePriorityOptions.hasFailed;
37
+ var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
38
+ (0, _react.useEffect)(function () {
39
+ if (!experienceId) {
40
+ return;
41
+ }
42
+ if (hasFailed) {
43
+ (0, _ufoExperiences.failUfoExperience)({
44
+ name: _inlineEdit.InlineEditUFOExperience
45
+ }, experienceId);
46
+ } else if (!isLoading) {
47
+ (0, _ufoExperiences.succeedUfoExperience)({
48
+ name: _inlineEdit.InlineEditUFOExperience
49
+ }, experienceId);
50
+ }
51
+ }, [experienceId, isLoading, hasFailed]);
32
52
  return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_select.default, (0, _extends2.default)({}, props, {
33
53
  testId: "inline-edit-priority",
34
54
  autoFocus: true,
@@ -66,30 +86,45 @@ var filterOption = function filterOption(option, inputValue) {
66
86
  var usePriorityOptions = function usePriorityOptions(currentValue, executeFetch) {
67
87
  var _useState = (0, _react.useState)({
68
88
  isLoading: true,
69
- options: []
89
+ options: [],
90
+ hasFailed: false
70
91
  }),
71
92
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
72
93
  _useState2$ = _useState2[0],
73
94
  options = _useState2$.options,
74
95
  isLoading = _useState2$.isLoading,
96
+ hasFailed = _useState2$.hasFailed,
75
97
  setOptions = _useState2[1];
98
+ var _useDatasourceTableFl = (0, _useDatasourceTableFlag.useDatasourceTableFlag)({
99
+ isFetchAction: true
100
+ }),
101
+ showErrorFlag = _useDatasourceTableFl.showErrorFlag;
76
102
  (0, _react.useEffect)(function () {
77
103
  var isMounted = true;
78
104
  loadOptions(currentValue, executeFetch).then(function (options) {
79
105
  if (isMounted) {
80
106
  setOptions({
81
107
  isLoading: false,
82
- options: options
108
+ options: options,
109
+ hasFailed: false
83
110
  });
84
111
  }
112
+ }).catch(function (err) {
113
+ showErrorFlag();
114
+ setOptions({
115
+ isLoading: false,
116
+ options: [],
117
+ hasFailed: true
118
+ });
85
119
  });
86
120
  return function () {
87
121
  isMounted = false;
88
122
  };
89
- }, [currentValue, executeFetch]);
123
+ }, [currentValue, executeFetch, showErrorFlag]);
90
124
  return {
91
125
  options: options,
92
- isLoading: isLoading
126
+ isLoading: isLoading,
127
+ hasFailed: hasFailed
93
128
  };
94
129
  };
95
130
 
@@ -114,14 +149,20 @@ var loadOptions = /*#__PURE__*/function () {
114
149
  _yield$executeFetch = _context.sent;
115
150
  operationStatus = _yield$executeFetch.operationStatus;
116
151
  entities = _yield$executeFetch.entities;
117
- if (!(operationStatus === _linkingTypes.ActionOperationStatus.SUCCESS && entities)) {
152
+ if (!(operationStatus === _linkingTypes.ActionOperationStatus.FAILURE)) {
118
153
  _context.next = 9;
119
154
  break;
120
155
  }
121
- return _context.abrupt("return", entities);
156
+ throw new Error('Failed to fetch icon options');
122
157
  case 9:
158
+ if (!(operationStatus === _linkingTypes.ActionOperationStatus.SUCCESS && entities)) {
159
+ _context.next = 11;
160
+ break;
161
+ }
162
+ return _context.abrupt("return", entities);
163
+ case 11:
123
164
  return _context.abrupt("return", []);
124
- case 10:
165
+ case 12:
125
166
  case "end":
126
167
  return _context.stop();
127
168
  }
@@ -12,7 +12,6 @@ import { withAnalyticsContext } from '@atlaskit/analytics-next';
12
12
  import Button from '@atlaskit/button/standard-button';
13
13
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
14
14
  import { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
15
- import { fg } from '@atlaskit/platform-feature-flags';
16
15
  import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics';
17
16
  import { componentMetadata } from '../../../analytics/constants';
18
17
  import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../../../analytics/types';
@@ -55,9 +54,7 @@ const PlainAssetsConfigModal = props => {
55
54
  const [aql, setAql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql);
56
55
  const [schemaId, setSchemaId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId);
57
56
  const apiVersion = initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.version;
58
- const [visibleColumnKeys, setVisibleColumnKeys] = useState(
59
- // eslint-disable-next-line @atlaskit/platform/no-preconditioning
60
- fg('platform.linking-platform.datasource-assets_add_version_parameter') && apiVersion !== VERSION_TWO ? [] : initialVisibleColumnKeys);
57
+ const [visibleColumnKeys, setVisibleColumnKeys] = useState(apiVersion !== VERSION_TWO ? [] : initialVisibleColumnKeys);
61
58
  const [isNewSearch, setIsNewSearch] = useState(false);
62
59
  const [errorState, setErrorState] = useState();
63
60
  const {
@@ -108,9 +105,7 @@ const PlainAssetsConfigModal = props => {
108
105
  aql: aql || '',
109
106
  schemaId: schemaId || '',
110
107
  workspaceId: workspaceId || '',
111
- ...(fg('platform.linking-platform.datasource-assets_add_version_parameter') ? {
112
- version: VERSION_TWO
113
- } : {})
108
+ version: VERSION_TWO
114
109
  }), [aql, schemaId, workspaceId]);
115
110
  const isParametersSet = !!(aql && workspaceId && schemaId);
116
111
  const {
@@ -194,13 +189,8 @@ const PlainAssetsConfigModal = props => {
194
189
  setIsNewSearch(false);
195
190
  }, []);
196
191
  useEffect(() => {
197
- if (fg('platform.linking-platform.datasource-assets_add_version_parameter')) {
198
- const newVisibleColumnKeys = initialVisibleColumnKeys && initialVisibleColumnKeys.length > 0 && apiVersion === VERSION_TWO ? initialVisibleColumnKeys : defaultVisibleColumnKeys;
199
- setVisibleColumnKeys(newVisibleColumnKeys);
200
- } else {
201
- const newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
202
- setVisibleColumnKeys(newVisibleColumnKeys);
203
- }
192
+ const newVisibleColumnKeys = initialVisibleColumnKeys && initialVisibleColumnKeys.length > 0 && apiVersion === VERSION_TWO ? initialVisibleColumnKeys : defaultVisibleColumnKeys;
193
+ setVisibleColumnKeys(newVisibleColumnKeys);
204
194
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys, apiVersion]);
205
195
  useEffect(() => {
206
196
  if (isNewSearch) {
@@ -253,9 +243,7 @@ const PlainAssetsConfigModal = props => {
253
243
  workspaceId,
254
244
  aql,
255
245
  schemaId,
256
- ...(fg('platform.linking-platform.datasource-assets_add_version_parameter') ? {
257
- version: VERSION_TWO
258
- } : {})
246
+ version: VERSION_TWO
259
247
  },
260
248
  views: [{
261
249
  type: 'table',
@@ -5,7 +5,11 @@ import { ActionOperationStatus } from '@atlaskit/linking-types';
5
5
  // eslint-disable-next-line import/no-extraneous-dependencies,no-restricted-imports
6
6
 
7
7
  import Select from '@atlaskit/select';
8
+ import { failUfoExperience, succeedUfoExperience } from '../../../../analytics/ufoExperiences';
9
+ import { useDatasourceExperienceId } from '../../../../contexts/datasource-experience-id';
10
+ import { useDatasourceTableFlag } from '../../../../hooks/useDatasourceTableFlag';
8
11
  import { SharedIconComponent } from '../../shared-components/icon';
12
+ import { InlineEditUFOExperience } from '../../table-cell-content/inline-edit';
9
13
  /**
10
14
  * Should be gated by FF rollout of platform-datasources-enable-two-way-sync-priority
11
15
  */
@@ -17,8 +21,24 @@ const IconEditType = props => {
17
21
  } = props;
18
22
  const {
19
23
  options,
20
- isLoading
24
+ isLoading,
25
+ hasFailed
21
26
  } = usePriorityOptions(currentValue, executeFetch);
27
+ const experienceId = useDatasourceExperienceId();
28
+ useEffect(() => {
29
+ if (!experienceId) {
30
+ return;
31
+ }
32
+ if (hasFailed) {
33
+ failUfoExperience({
34
+ name: InlineEditUFOExperience
35
+ }, experienceId);
36
+ } else if (!isLoading) {
37
+ succeedUfoExperience({
38
+ name: InlineEditUFOExperience
39
+ }, experienceId);
40
+ }
41
+ }, [experienceId, isLoading, hasFailed]);
22
42
  return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Select, _extends({}, props, {
23
43
  testId: "inline-edit-priority",
24
44
  autoFocus: true,
@@ -49,10 +69,17 @@ const filterOption = (option, inputValue) => option.label.toLowerCase().includes
49
69
  const usePriorityOptions = (currentValue, executeFetch) => {
50
70
  const [{
51
71
  options,
52
- isLoading
72
+ isLoading,
73
+ hasFailed
53
74
  }, setOptions] = useState({
54
75
  isLoading: true,
55
- options: []
76
+ options: [],
77
+ hasFailed: false
78
+ });
79
+ const {
80
+ showErrorFlag
81
+ } = useDatasourceTableFlag({
82
+ isFetchAction: true
56
83
  });
57
84
  useEffect(() => {
58
85
  let isMounted = true;
@@ -60,17 +87,26 @@ const usePriorityOptions = (currentValue, executeFetch) => {
60
87
  if (isMounted) {
61
88
  setOptions({
62
89
  isLoading: false,
63
- options
90
+ options,
91
+ hasFailed: false
64
92
  });
65
93
  }
94
+ }).catch(err => {
95
+ showErrorFlag();
96
+ setOptions({
97
+ isLoading: false,
98
+ options: [],
99
+ hasFailed: true
100
+ });
66
101
  });
67
102
  return () => {
68
103
  isMounted = false;
69
104
  };
70
- }, [currentValue, executeFetch]);
105
+ }, [currentValue, executeFetch, showErrorFlag]);
71
106
  return {
72
107
  options,
73
- isLoading
108
+ isLoading,
109
+ hasFailed
74
110
  };
75
111
  };
76
112
 
@@ -85,6 +121,9 @@ const loadOptions = async (_currentValue, executeFetch) => {
85
121
  operationStatus,
86
122
  entities
87
123
  } = await executeFetch({});
124
+ if (operationStatus === ActionOperationStatus.FAILURE) {
125
+ throw new Error('Failed to fetch icon options');
126
+ }
88
127
  if (operationStatus === ActionOperationStatus.SUCCESS && entities) {
89
128
  // Map entities here if the backend type is different from the type required by the select
90
129
  return entities;
@@ -16,7 +16,6 @@ import { withAnalyticsContext } from '@atlaskit/analytics-next';
16
16
  import Button from '@atlaskit/button/standard-button';
17
17
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
18
18
  import { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
19
- import { fg } from '@atlaskit/platform-feature-flags';
20
19
  import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics';
21
20
  import { componentMetadata } from '../../../analytics/constants';
22
21
  import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../../../analytics/types';
@@ -63,9 +62,7 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
63
62
  schemaId = _useState4[0],
64
63
  setSchemaId = _useState4[1];
65
64
  var apiVersion = initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.version;
66
- var _useState5 = useState(
67
- // eslint-disable-next-line @atlaskit/platform/no-preconditioning
68
- fg('platform.linking-platform.datasource-assets_add_version_parameter') && apiVersion !== VERSION_TWO ? [] : initialVisibleColumnKeys),
65
+ var _useState5 = useState(apiVersion !== VERSION_TWO ? [] : initialVisibleColumnKeys),
69
66
  _useState6 = _slicedToArray(_useState5, 2),
70
67
  visibleColumnKeys = _useState6[0],
71
68
  setVisibleColumnKeys = _useState6[1];
@@ -120,13 +117,12 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
120
117
  /* ------------------------------ END PERMISSIONS ------------------------------ */
121
118
 
122
119
  var parameters = useMemo(function () {
123
- return _objectSpread({
120
+ return {
124
121
  aql: aql || '',
125
122
  schemaId: schemaId || '',
126
- workspaceId: workspaceId || ''
127
- }, fg('platform.linking-platform.datasource-assets_add_version_parameter') ? {
123
+ workspaceId: workspaceId || '',
128
124
  version: VERSION_TWO
129
- } : {});
125
+ };
130
126
  }, [aql, schemaId, workspaceId]);
131
127
  var isParametersSet = !!(aql && workspaceId && schemaId);
132
128
  var _useDatasourceTableSt = useDatasourceTableState({
@@ -209,13 +205,8 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
209
205
  setIsNewSearch(false);
210
206
  }, []);
211
207
  useEffect(function () {
212
- if (fg('platform.linking-platform.datasource-assets_add_version_parameter')) {
213
- var newVisibleColumnKeys = initialVisibleColumnKeys && initialVisibleColumnKeys.length > 0 && apiVersion === VERSION_TWO ? initialVisibleColumnKeys : defaultVisibleColumnKeys;
214
- setVisibleColumnKeys(newVisibleColumnKeys);
215
- } else {
216
- var _newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
217
- setVisibleColumnKeys(_newVisibleColumnKeys);
218
- }
208
+ var newVisibleColumnKeys = initialVisibleColumnKeys && initialVisibleColumnKeys.length > 0 && apiVersion === VERSION_TWO ? initialVisibleColumnKeys : defaultVisibleColumnKeys;
209
+ setVisibleColumnKeys(newVisibleColumnKeys);
219
210
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys, apiVersion]);
220
211
  useEffect(function () {
221
212
  if (isNewSearch) {
@@ -264,13 +255,12 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
264
255
  } else {
265
256
  onInsert(buildDatasourceAdf({
266
257
  id: datasourceId,
267
- parameters: _objectSpread({
258
+ parameters: {
268
259
  workspaceId: workspaceId,
269
260
  aql: aql,
270
- schemaId: schemaId
271
- }, fg('platform.linking-platform.datasource-assets_add_version_parameter') ? {
261
+ schemaId: schemaId,
272
262
  version: VERSION_TWO
273
- } : {}),
263
+ },
274
264
  views: [{
275
265
  type: 'table',
276
266
  properties: {
@@ -8,7 +8,11 @@ import { ActionOperationStatus } from '@atlaskit/linking-types';
8
8
  // eslint-disable-next-line import/no-extraneous-dependencies,no-restricted-imports
9
9
 
10
10
  import Select from '@atlaskit/select';
11
+ import { failUfoExperience, succeedUfoExperience } from '../../../../analytics/ufoExperiences';
12
+ import { useDatasourceExperienceId } from '../../../../contexts/datasource-experience-id';
13
+ import { useDatasourceTableFlag } from '../../../../hooks/useDatasourceTableFlag';
11
14
  import { SharedIconComponent } from '../../shared-components/icon';
15
+ import { InlineEditUFOExperience } from '../../table-cell-content/inline-edit';
12
16
  /**
13
17
  * Should be gated by FF rollout of platform-datasources-enable-two-way-sync-priority
14
18
  */
@@ -18,7 +22,23 @@ var IconEditType = function IconEditType(props) {
18
22
  executeFetch = props.executeFetch;
19
23
  var _usePriorityOptions = usePriorityOptions(currentValue, executeFetch),
20
24
  options = _usePriorityOptions.options,
21
- isLoading = _usePriorityOptions.isLoading;
25
+ isLoading = _usePriorityOptions.isLoading,
26
+ hasFailed = _usePriorityOptions.hasFailed;
27
+ var experienceId = useDatasourceExperienceId();
28
+ useEffect(function () {
29
+ if (!experienceId) {
30
+ return;
31
+ }
32
+ if (hasFailed) {
33
+ failUfoExperience({
34
+ name: InlineEditUFOExperience
35
+ }, experienceId);
36
+ } else if (!isLoading) {
37
+ succeedUfoExperience({
38
+ name: InlineEditUFOExperience
39
+ }, experienceId);
40
+ }
41
+ }, [experienceId, isLoading, hasFailed]);
22
42
  return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Select, _extends({}, props, {
23
43
  testId: "inline-edit-priority",
24
44
  autoFocus: true,
@@ -56,30 +76,45 @@ var filterOption = function filterOption(option, inputValue) {
56
76
  var usePriorityOptions = function usePriorityOptions(currentValue, executeFetch) {
57
77
  var _useState = useState({
58
78
  isLoading: true,
59
- options: []
79
+ options: [],
80
+ hasFailed: false
60
81
  }),
61
82
  _useState2 = _slicedToArray(_useState, 2),
62
83
  _useState2$ = _useState2[0],
63
84
  options = _useState2$.options,
64
85
  isLoading = _useState2$.isLoading,
86
+ hasFailed = _useState2$.hasFailed,
65
87
  setOptions = _useState2[1];
88
+ var _useDatasourceTableFl = useDatasourceTableFlag({
89
+ isFetchAction: true
90
+ }),
91
+ showErrorFlag = _useDatasourceTableFl.showErrorFlag;
66
92
  useEffect(function () {
67
93
  var isMounted = true;
68
94
  loadOptions(currentValue, executeFetch).then(function (options) {
69
95
  if (isMounted) {
70
96
  setOptions({
71
97
  isLoading: false,
72
- options: options
98
+ options: options,
99
+ hasFailed: false
73
100
  });
74
101
  }
102
+ }).catch(function (err) {
103
+ showErrorFlag();
104
+ setOptions({
105
+ isLoading: false,
106
+ options: [],
107
+ hasFailed: true
108
+ });
75
109
  });
76
110
  return function () {
77
111
  isMounted = false;
78
112
  };
79
- }, [currentValue, executeFetch]);
113
+ }, [currentValue, executeFetch, showErrorFlag]);
80
114
  return {
81
115
  options: options,
82
- isLoading: isLoading
116
+ isLoading: isLoading,
117
+ hasFailed: hasFailed
83
118
  };
84
119
  };
85
120
 
@@ -104,14 +139,20 @@ var loadOptions = /*#__PURE__*/function () {
104
139
  _yield$executeFetch = _context.sent;
105
140
  operationStatus = _yield$executeFetch.operationStatus;
106
141
  entities = _yield$executeFetch.entities;
107
- if (!(operationStatus === ActionOperationStatus.SUCCESS && entities)) {
142
+ if (!(operationStatus === ActionOperationStatus.FAILURE)) {
108
143
  _context.next = 9;
109
144
  break;
110
145
  }
111
- return _context.abrupt("return", entities);
146
+ throw new Error('Failed to fetch icon options');
112
147
  case 9:
148
+ if (!(operationStatus === ActionOperationStatus.SUCCESS && entities)) {
149
+ _context.next = 11;
150
+ break;
151
+ }
152
+ return _context.abrupt("return", entities);
153
+ case 11:
113
154
  return _context.abrupt("return", []);
114
- case 10:
155
+ case 12:
115
156
  case "end":
116
157
  return _context.stop();
117
158
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "3.11.0",
3
+ "version": "3.12.0",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -48,7 +48,7 @@
48
48
  "@atlaskit/flag": "^15.8.0",
49
49
  "@atlaskit/form": "^10.5.0",
50
50
  "@atlaskit/heading": "^3.1.0",
51
- "@atlaskit/icon": "^22.24.0",
51
+ "@atlaskit/icon": "^22.25.0",
52
52
  "@atlaskit/icon-object": "^6.7.0",
53
53
  "@atlaskit/image": "^1.3.0",
54
54
  "@atlaskit/inline-edit": "^13.7.0",
@@ -71,7 +71,7 @@
71
71
  "@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll": "^1.2.0",
72
72
  "@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^1.1.0",
73
73
  "@atlaskit/primitives": "^13.2.0",
74
- "@atlaskit/react-select": "^1.3.0",
74
+ "@atlaskit/react-select": "^1.4.0",
75
75
  "@atlaskit/select": "^18.5.0",
76
76
  "@atlaskit/smart-card": "^30.3.0",
77
77
  "@atlaskit/smart-user-picker": "6.11.2",
@@ -171,9 +171,6 @@
171
171
  "platform-datasources-enable-two-way-sync-priority": {
172
172
  "type": "boolean"
173
173
  },
174
- "platform.linking-platform.datasource-assets_add_version_parameter": {
175
- "type": "boolean"
176
- },
177
174
  "platform.linking-platform.datasource-assets_update_refresh_button_dt3qk": {
178
175
  "type": "boolean"
179
176
  },