@atlaskit/link-datasource 1.20.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/common/utils/adf.js +15 -0
  3. package/dist/cjs/hooks/useDatasourceTableState.js +91 -88
  4. package/dist/cjs/index.js +7 -0
  5. package/dist/cjs/ui/assets-modal/modal/index.js +18 -22
  6. package/dist/cjs/ui/common/error-state/messages.js +20 -0
  7. package/dist/cjs/ui/common/error-state/provider-auth-required-svg.js +449 -0
  8. package/dist/cjs/ui/common/error-state/provider-auth-required.js +96 -0
  9. package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +16 -7
  10. package/dist/cjs/ui/jira-issues-modal/modal/index.js +18 -23
  11. package/dist/es2019/common/utils/adf.js +9 -0
  12. package/dist/es2019/hooks/useDatasourceTableState.js +26 -24
  13. package/dist/es2019/index.js +1 -0
  14. package/dist/es2019/ui/assets-modal/modal/index.js +16 -20
  15. package/dist/es2019/ui/common/error-state/messages.js +20 -0
  16. package/dist/es2019/ui/common/error-state/provider-auth-required-svg.js +442 -0
  17. package/dist/es2019/ui/common/error-state/provider-auth-required.js +62 -0
  18. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +16 -7
  19. package/dist/es2019/ui/jira-issues-modal/modal/index.js +16 -21
  20. package/dist/esm/common/utils/adf.js +9 -0
  21. package/dist/esm/hooks/useDatasourceTableState.js +91 -88
  22. package/dist/esm/index.js +1 -0
  23. package/dist/esm/ui/assets-modal/modal/index.js +18 -22
  24. package/dist/esm/ui/common/error-state/messages.js +20 -0
  25. package/dist/esm/ui/common/error-state/provider-auth-required-svg.js +442 -0
  26. package/dist/esm/ui/common/error-state/provider-auth-required.js +85 -0
  27. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +16 -7
  28. package/dist/esm/ui/jira-issues-modal/modal/index.js +18 -23
  29. package/dist/types/common/utils/adf.d.ts +2 -0
  30. package/dist/types/hooks/useDatasourceTableState.d.ts +3 -1
  31. package/dist/types/index.d.ts +1 -0
  32. package/dist/types/ui/assets-modal/types.d.ts +1 -1
  33. package/dist/types/ui/common/error-state/messages.d.ts +20 -0
  34. package/dist/types/ui/common/error-state/provider-auth-required-svg.d.ts +3 -0
  35. package/dist/types/ui/common/error-state/provider-auth-required.d.ts +9 -0
  36. package/dist/types/ui/jira-issues-modal/types.d.ts +1 -20
  37. package/dist/types-ts4.5/common/utils/adf.d.ts +2 -0
  38. package/dist/types-ts4.5/hooks/useDatasourceTableState.d.ts +3 -1
  39. package/dist/types-ts4.5/index.d.ts +1 -0
  40. package/dist/types-ts4.5/ui/assets-modal/types.d.ts +1 -1
  41. package/dist/types-ts4.5/ui/common/error-state/messages.d.ts +20 -0
  42. package/dist/types-ts4.5/ui/common/error-state/provider-auth-required-svg.d.ts +3 -0
  43. package/dist/types-ts4.5/ui/common/error-state/provider-auth-required.d.ts +9 -0
  44. package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +1 -20
  45. package/examples-helpers/buildJiraIssuesTable.tsx +34 -6
  46. package/package.json +4 -3
@@ -19,60 +19,67 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
19
19
  var idFieldCount = 1;
20
20
  var keyFieldCount = 1;
21
21
  var _useState = useState([]),
22
- _useState2 = _slicedToArray(_useState, 2),
23
- defaultVisibleColumnKeys = _useState2[0],
24
- setDefaultVisibleColumnKeys = _useState2[1];
22
+ _useState2 = _slicedToArray(_useState, 1),
23
+ initialEmptyArray = _useState2[0];
25
24
  var _useState3 = useState([]),
26
25
  _useState4 = _slicedToArray(_useState3, 2),
27
- lastRequestedFieldKeys = _useState4[0],
28
- setLastRequestedFieldKeys = _useState4[1];
29
- var _useState5 = useState({
26
+ defaultVisibleColumnKeys = _useState4[0],
27
+ setDefaultVisibleColumnKeys = _useState4[1];
28
+ var _useState5 = useState([]),
29
+ _useState6 = _slicedToArray(_useState5, 2),
30
+ lastRequestedFieldKeys = _useState6[0],
31
+ setLastRequestedFieldKeys = _useState6[1];
32
+ var _useState7 = useState({
30
33
  properties: []
31
34
  }),
32
- _useState6 = _slicedToArray(_useState5, 2),
33
- fullSchema = _useState6[0],
34
- setFullSchema = _useState6[1];
35
- var _useState7 = useState('empty'),
36
35
  _useState8 = _slicedToArray(_useState7, 2),
37
- status = _useState8[0],
38
- setStatus = _useState8[1];
39
- var _useState9 = useState([]),
36
+ fullSchema = _useState8[0],
37
+ setFullSchema = _useState8[1];
38
+ var _useState9 = useState('empty'),
40
39
  _useState10 = _slicedToArray(_useState9, 2),
41
- responseItems = _useState10[0],
42
- setResponseItems = _useState10[1];
43
- var _useState11 = useState(true),
40
+ status = _useState10[0],
41
+ setStatus = _useState10[1];
42
+ var _useState11 = useState([]),
44
43
  _useState12 = _slicedToArray(_useState11, 2),
45
- hasNextPage = _useState12[0],
46
- setHasNextPage = _useState12[1];
47
- var _useState13 = useState(undefined),
44
+ authDetails = _useState12[0],
45
+ setAuthDetails = _useState12[1];
46
+ var _useState13 = useState([]),
48
47
  _useState14 = _slicedToArray(_useState13, 2),
49
- nextCursor = _useState14[0],
50
- setNextCursor = _useState14[1];
51
- var _useState15 = useState([]),
48
+ responseItems = _useState14[0],
49
+ setResponseItems = _useState14[1];
50
+ var _useState15 = useState(true),
52
51
  _useState16 = _slicedToArray(_useState15, 2),
53
- columns = _useState16[0],
54
- setColumns = _useState16[1];
52
+ hasNextPage = _useState16[0],
53
+ setHasNextPage = _useState16[1];
55
54
  var _useState17 = useState(undefined),
56
55
  _useState18 = _slicedToArray(_useState17, 2),
57
- totalCount = _useState18[0],
58
- setTotalCount = _useState18[1];
59
- var _useState19 = useState(false),
56
+ nextCursor = _useState18[0],
57
+ setNextCursor = _useState18[1];
58
+ var _useState19 = useState([]),
60
59
  _useState20 = _slicedToArray(_useState19, 2),
61
- shouldForceRequest = _useState20[0],
62
- setShouldForceRequest = _useState20[1];
63
- var _useState21 = useState([]),
60
+ columns = _useState20[0],
61
+ setColumns = _useState20[1];
62
+ var _useState21 = useState(undefined),
64
63
  _useState22 = _slicedToArray(_useState21, 2),
65
- destinationObjectTypes = _useState22[0],
66
- setDestinationObjectTypes = _useState22[1];
67
- var _useState23 = useState(),
64
+ totalCount = _useState22[0],
65
+ setTotalCount = _useState22[1];
66
+ var _useState23 = useState(false),
68
67
  _useState24 = _slicedToArray(_useState23, 2),
69
- extensionKey = _useState24[0],
70
- setExtensionKey = _useState24[1];
68
+ shouldForceRequest = _useState24[0],
69
+ setShouldForceRequest = _useState24[1];
70
+ var _useState25 = useState([]),
71
+ _useState26 = _slicedToArray(_useState25, 2),
72
+ destinationObjectTypes = _useState26[0],
73
+ setDestinationObjectTypes = _useState26[1];
74
+ var _useState27 = useState(),
75
+ _useState28 = _slicedToArray(_useState27, 2),
76
+ extensionKey = _useState28[0],
77
+ setExtensionKey = _useState28[1];
71
78
  var _useDatasourceClientE = useDatasourceClientExtension(),
72
79
  getDatasourceData = _useDatasourceClientE.getDatasourceData,
73
80
  getDatasourceDetails = _useDatasourceClientE.getDatasourceDetails;
74
81
  var loadDatasourceDetails = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
75
- var _yield$getDatasourceD, access, schema, isColumnNotPresentInCurrentColumnsList, allColumns, newColumns;
82
+ var _yield$getDatasourceD, _yield$getDatasourceD2, access, auth, schema, isColumnNotPresentInCurrentColumnsList, allColumns, newColumns;
76
83
  return _regeneratorRuntime.wrap(function _callee$(_context) {
77
84
  while (1) switch (_context.prev = _context.next) {
78
85
  case 0:
@@ -89,20 +96,16 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
89
96
  });
90
97
  case 5:
91
98
  _yield$getDatasourceD = _context.sent;
92
- access = _yield$getDatasourceD.meta.access;
99
+ _yield$getDatasourceD2 = _yield$getDatasourceD.meta;
100
+ access = _yield$getDatasourceD2.access;
101
+ auth = _yield$getDatasourceD2.auth;
93
102
  schema = _yield$getDatasourceD.data.schema;
94
- if (!(access === 'unauthorized')) {
95
- _context.next = 11;
96
- break;
97
- }
98
- setStatus('unauthorized');
99
- return _context.abrupt("return");
100
- case 11:
101
- if (!(access === 'forbidden')) {
103
+ if (!(access === 'unauthorized' || access === 'forbidden')) {
102
104
  _context.next = 14;
103
105
  break;
104
106
  }
105
- setStatus('forbidden');
107
+ setStatus(access);
108
+ setAuthDetails(auth || initialEmptyArray);
106
109
  return _context.abrupt("return");
107
110
  case 14:
108
111
  isColumnNotPresentInCurrentColumnsList = function isColumnNotPresentInCurrentColumnsList(col) {
@@ -139,7 +142,7 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
139
142
  return _context.stop();
140
143
  }
141
144
  }, _callee, null, [[2, 20]]);
142
- })), [captureError, columns, datasourceId, getDatasourceDetails, parameters]);
145
+ })), [captureError, columns, datasourceId, getDatasourceDetails, parameters, initialEmptyArray]);
143
146
  var applySchemaProperties = useCallback(function (schema, fieldKeys) {
144
147
  var properties = schema.properties,
145
148
  _schema$defaultProper = schema.defaultProperties,
@@ -184,12 +187,13 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
184
187
  shouldForceRequest,
185
188
  isFullSchemaLoaded,
186
189
  datasourceDataRequest,
187
- _yield$getDatasourceD2,
188
190
  _yield$getDatasourceD3,
191
+ _yield$getDatasourceD4,
189
192
  access,
190
193
  _destinationObjectTypes,
191
194
  _extensionKey,
192
- _yield$getDatasourceD4,
195
+ auth,
196
+ _yield$getDatasourceD5,
193
197
  items,
194
198
  nextPageCursor,
195
199
  _totalCount,
@@ -222,30 +226,25 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
222
226
  _context2.next = 10;
223
227
  return getDatasourceData(datasourceId, datasourceDataRequest, shouldForceRequest);
224
228
  case 10:
225
- _yield$getDatasourceD2 = _context2.sent;
226
- _yield$getDatasourceD3 = _yield$getDatasourceD2.meta;
227
- access = _yield$getDatasourceD3.access;
228
- _destinationObjectTypes = _yield$getDatasourceD3.destinationObjectTypes;
229
- _extensionKey = _yield$getDatasourceD3.extensionKey;
230
- _yield$getDatasourceD4 = _yield$getDatasourceD2.data;
231
- items = _yield$getDatasourceD4.items;
232
- nextPageCursor = _yield$getDatasourceD4.nextPageCursor;
233
- _totalCount = _yield$getDatasourceD4.totalCount;
234
- schema = _yield$getDatasourceD4.schema;
235
- if (!(access === 'unauthorized')) {
236
- _context2.next = 23;
229
+ _yield$getDatasourceD3 = _context2.sent;
230
+ _yield$getDatasourceD4 = _yield$getDatasourceD3.meta;
231
+ access = _yield$getDatasourceD4.access;
232
+ _destinationObjectTypes = _yield$getDatasourceD4.destinationObjectTypes;
233
+ _extensionKey = _yield$getDatasourceD4.extensionKey;
234
+ auth = _yield$getDatasourceD4.auth;
235
+ _yield$getDatasourceD5 = _yield$getDatasourceD3.data;
236
+ items = _yield$getDatasourceD5.items;
237
+ nextPageCursor = _yield$getDatasourceD5.nextPageCursor;
238
+ _totalCount = _yield$getDatasourceD5.totalCount;
239
+ schema = _yield$getDatasourceD5.schema;
240
+ if (!(access === 'unauthorized' || access === 'forbidden')) {
241
+ _context2.next = 25;
237
242
  break;
238
243
  }
239
- setStatus('unauthorized');
244
+ setStatus(access);
245
+ setAuthDetails(auth || initialEmptyArray);
240
246
  return _context2.abrupt("return");
241
- case 23:
242
- if (!(access === 'forbidden')) {
243
- _context2.next = 26;
244
- break;
245
- }
246
- setStatus('forbidden');
247
- return _context2.abrupt("return");
248
- case 26:
247
+ case 25:
249
248
  setExtensionKey(_extensionKey);
250
249
  setDestinationObjectTypes(_destinationObjectTypes);
251
250
  setTotalCount(_totalCount);
@@ -278,49 +277,52 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
278
277
  });
279
278
  }
280
279
  setStatus('resolved');
281
- _context2.next = 49;
280
+ _context2.next = 48;
282
281
  break;
283
- case 39:
284
- _context2.prev = 39;
282
+ case 38:
283
+ _context2.prev = 38;
285
284
  _context2.t0 = _context2["catch"](7);
286
285
  captureError('onNextPage', _context2.t0);
287
286
  if (!(_context2.t0 instanceof Response && _context2.t0.status === 401)) {
288
- _context2.next = 45;
287
+ _context2.next = 44;
289
288
  break;
290
289
  }
291
290
  setStatus('unauthorized');
292
291
  return _context2.abrupt("return");
293
- case 45:
292
+ case 44:
294
293
  if (!(_context2.t0 instanceof Response && _context2.t0.status === 403)) {
295
- _context2.next = 48;
294
+ _context2.next = 47;
296
295
  break;
297
296
  }
298
297
  setStatus('forbidden');
299
298
  return _context2.abrupt("return");
300
- case 48:
299
+ case 47:
301
300
  setStatus('rejected');
302
- case 49:
301
+ case 48:
303
302
  case "end":
304
303
  return _context2.stop();
305
304
  }
306
- }, _callee2, null, [[7, 39]]);
307
- })), [captureError, parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems, applySchemaProperties, fireEvent, fullSchema]);
305
+ }, _callee2, null, [[7, 38]]);
306
+ })), [captureError, parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems, applySchemaProperties, fireEvent, fullSchema, initialEmptyArray]);
308
307
  var reset = useCallback(function (options) {
309
- setStatus('empty');
310
- setResponseItems([]);
308
+ setResponseItems(initialEmptyArray);
311
309
  setHasNextPage(true);
312
310
  setNextCursor(undefined);
313
311
  setTotalCount(undefined);
314
- setLastRequestedFieldKeys([]);
312
+ setLastRequestedFieldKeys(initialEmptyArray);
313
+ setAuthDetails(initialEmptyArray);
315
314
  setFullSchema({
316
- properties: []
315
+ properties: initialEmptyArray
317
316
  });
318
317
  setShouldForceRequest((options === null || options === void 0 ? void 0 : options.shouldForceRequest) || false);
319
318
  if (options !== null && options !== void 0 && options.shouldResetColumns) {
320
- setColumns([]);
321
- setDefaultVisibleColumnKeys([]);
319
+ setColumns(initialEmptyArray);
320
+ setDefaultVisibleColumnKeys(initialEmptyArray);
322
321
  }
323
- }, []);
322
+
323
+ // setting the status earlier is triggering useEffects without all reset state values, hence placing this as the last state reset item
324
+ setStatus('empty');
325
+ }, [initialEmptyArray]);
324
326
 
325
327
  // this takes care of requesting /data initially
326
328
  useEffect(function () {
@@ -371,6 +373,7 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
371
373
  defaultVisibleColumnKeys: defaultVisibleColumnKeys,
372
374
  totalCount: totalCount,
373
375
  extensionKey: extensionKey,
374
- destinationObjectTypes: destinationObjectTypes
376
+ destinationObjectTypes: destinationObjectTypes,
377
+ authDetails: authDetails
375
378
  };
376
379
  };
package/dist/esm/index.js CHANGED
@@ -2,6 +2,7 @@ export { default as JiraIssuesConfigModal } from './ui/jira-issues-modal';
2
2
  export { default as AssetsConfigModal } from './ui/assets-modal';
3
3
  export { default as DatasourceTableView } from './ui/datasource-table-view';
4
4
  export { default as JSMAssetsConfigModal } from './ui/assets-modal';
5
+ export { buildDatasourceAdf } from './common/utils/adf';
5
6
  export { JIRA_LIST_OF_LINKS_DATASOURCE_ID } from './ui/jira-issues-modal';
6
7
  export { ASSETS_LIST_OF_LINKS_DATASOURCE_ID } from './ui/assets-modal';
7
8
  export { LazyLoadedDatasourceRenderFailedAnalyticsWrapper } from './analytics/wrappers/render-failed';
@@ -18,6 +18,7 @@ import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../
18
18
  import { startUfoExperience } from '../../../analytics/ufoExperiences';
19
19
  import { useColumnPickerRenderedFailedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
20
20
  import { useDataRenderedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
21
+ import { buildDatasourceAdf } from '../../../common/utils/adf';
21
22
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
22
23
  import { useAssetsClient } from '../../../hooks/useAssetsClient';
23
24
  import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
@@ -242,29 +243,24 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
242
243
  }
243
244
  }, consumerEvent);
244
245
  } else {
245
- onInsert({
246
- type: 'blockCard',
247
- attrs: {
248
- datasource: {
249
- id: datasourceId,
250
- parameters: {
251
- workspaceId: workspaceId,
252
- aql: aql,
253
- schemaId: schemaId
254
- },
255
- views: [{
256
- type: 'table',
257
- properties: {
258
- columns: visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.map(function (key) {
259
- return {
260
- key: key
261
- };
262
- })
263
- }
264
- }]
246
+ onInsert(buildDatasourceAdf({
247
+ id: datasourceId,
248
+ parameters: {
249
+ workspaceId: workspaceId,
250
+ aql: aql,
251
+ schemaId: schemaId
252
+ },
253
+ views: [{
254
+ type: 'table',
255
+ properties: {
256
+ columns: (visibleColumnKeys !== null && visibleColumnKeys !== void 0 ? visibleColumnKeys : []).map(function (key) {
257
+ return {
258
+ key: key
259
+ };
260
+ })
265
261
  }
266
- }
267
- }, consumerEvent);
262
+ }]
263
+ }), consumerEvent);
268
264
  }
269
265
  }, [aql, schemaId, workspaceId, analyticsPayload, totalCount, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, visibleColumnKeys]);
270
266
  var onCancelClick = useCallback(function (e, analyticEvent) {
@@ -54,5 +54,25 @@ export var loadingErrorMessages = defineMessages({
54
54
  id: 'linkDataSource.jira-issues.no.jira.sites.access.description',
55
55
  description: 'Description that shows in the modal when user has no access to any Jira sites',
56
56
  defaultMessage: 'To request access, contact your admin.'
57
+ },
58
+ authScreenHeaderText: {
59
+ id: 'linkDataSource.datasource.table.authScreenHeaderText',
60
+ defaultMessage: 'Connect your account',
61
+ description: 'Header text to be displayed in the auth screen UI.'
62
+ },
63
+ authScreenDescriptionText: {
64
+ id: 'linkDataSource.datasource.table.authScreenDescriptionText',
65
+ defaultMessage: 'Connect your account to collaborate on work across Atlassian products.',
66
+ description: 'Description text to be displayed in the auth screen UI.'
67
+ },
68
+ learnMoreAboutSmartLinks: {
69
+ id: 'linkDataSource.datasource.table.learnMoreAboutSmartLinks',
70
+ defaultMessage: 'Learn more about Smart Links.',
71
+ description: 'An anchor link to redirect user to a page about Smart Links.'
72
+ },
73
+ authConnectButtonText: {
74
+ id: 'linkDataSource.datasource.table.authConnectButtonText',
75
+ defaultMessage: 'Connect',
76
+ description: 'Label for the authentication button.'
57
77
  }
58
78
  });