@atlaskit/editor-synced-block-provider 3.5.3 → 3.5.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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atlaskit/editor-synced-block-provider
2
2
 
3
+ ## 3.5.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`a36447029e3c3`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a36447029e3c3) -
8
+ Add fetchMediaToken helper function to synced block provider confluence client.
9
+
10
+ ## 3.5.4
11
+
12
+ ### Patch Changes
13
+
14
+ - [`0248c6fa91442`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0248c6fa91442) -
15
+ EDITOR-4310 Ensure confirmation callback is cleaned up properly
16
+
3
17
  ## 3.5.3
4
18
 
5
19
  ### Patch Changes
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.fetchMediaToken = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _monitoring = require("@atlaskit/editor-common/monitoring");
12
+ var _retry = require("../../utils/retry");
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ var COMMON_HEADERS = {
16
+ 'Content-Type': 'application/json',
17
+ Accept: 'application/json'
18
+ };
19
+ var AGG_HEADERS = {
20
+ 'X-ExperimentalApi': 'confluence-agg-beta'
21
+ };
22
+ var GRAPHQL_ENDPOINT = '/gateway/api/graphql';
23
+ var GET_CONTENT_MEDIA_SESSION_OPERATION_NAME = 'MediaUploadTokenQuery';
24
+ var GET_CONTENT_MEDIA_SESSION_QUERY = "query ".concat(GET_CONTENT_MEDIA_SESSION_OPERATION_NAME, "($contentId: ID!) {\n\tcontentMediaSession(contentId: $contentId) {\n\t\ttoken {\n\t\t\tvalue\n\t\t}\n\t\tconfiguration {\n\t\t\tclientId\n\t\t\tfileStoreUrl\n\t\t}\n\t\tcollection\n\t}\n}");
25
+ var getContentMediaSession = /*#__PURE__*/function () {
26
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(contentId) {
27
+ var bodyData, response, result;
28
+ return _regenerator.default.wrap(function _callee$(_context) {
29
+ while (1) switch (_context.prev = _context.next) {
30
+ case 0:
31
+ bodyData = {
32
+ query: GET_CONTENT_MEDIA_SESSION_QUERY,
33
+ operationName: GET_CONTENT_MEDIA_SESSION_OPERATION_NAME,
34
+ variables: {
35
+ contentId: contentId
36
+ }
37
+ };
38
+ _context.next = 3;
39
+ return (0, _retry.fetchWithRetry)(GRAPHQL_ENDPOINT, {
40
+ method: 'POST',
41
+ headers: _objectSpread(_objectSpread({}, COMMON_HEADERS), AGG_HEADERS),
42
+ body: JSON.stringify(bodyData)
43
+ });
44
+ case 3:
45
+ response = _context.sent;
46
+ if (response.ok) {
47
+ _context.next = 6;
48
+ break;
49
+ }
50
+ throw new Error("Failed to get content media session: ".concat(response.statusText));
51
+ case 6:
52
+ _context.next = 8;
53
+ return response.json();
54
+ case 8:
55
+ result = _context.sent;
56
+ return _context.abrupt("return", result);
57
+ case 10:
58
+ case "end":
59
+ return _context.stop();
60
+ }
61
+ }, _callee);
62
+ }));
63
+ return function getContentMediaSession(_x) {
64
+ return _ref.apply(this, arguments);
65
+ };
66
+ }();
67
+ var fetchMediaToken = exports.fetchMediaToken = /*#__PURE__*/function () {
68
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(contentId) {
69
+ var _response$data, _contentData$token, response, contentData, token, configuration, collection;
70
+ return _regenerator.default.wrap(function _callee2$(_context2) {
71
+ while (1) switch (_context2.prev = _context2.next) {
72
+ case 0:
73
+ _context2.prev = 0;
74
+ _context2.next = 3;
75
+ return getContentMediaSession(contentId);
76
+ case 3:
77
+ response = _context2.sent;
78
+ contentData = (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.contentMediaSession;
79
+ token = contentData === null || contentData === void 0 || (_contentData$token = contentData.token) === null || _contentData$token === void 0 ? void 0 : _contentData$token.value;
80
+ configuration = contentData === null || contentData === void 0 ? void 0 : contentData.configuration;
81
+ collection = contentData === null || contentData === void 0 ? void 0 : contentData.collection;
82
+ if (!(!token || !configuration || !collection)) {
83
+ _context2.next = 10;
84
+ break;
85
+ }
86
+ throw new Error('Failed to get content media session data');
87
+ case 10:
88
+ return _context2.abrupt("return", Promise.resolve({
89
+ config: configuration,
90
+ token: token,
91
+ collectionId: collection
92
+ }));
93
+ case 13:
94
+ _context2.prev = 13;
95
+ _context2.t0 = _context2["catch"](0);
96
+ (0, _monitoring.logException)(_context2.t0, {
97
+ location: 'editor-synced-block-provider/fetchMediaToken'
98
+ });
99
+ throw new Error("Failed to get content media session: ".concat(_context2.t0));
100
+ case 17:
101
+ case "end":
102
+ return _context2.stop();
103
+ }
104
+ }, _callee2, null, [[0, 13]]);
105
+ }));
106
+ return function fetchMediaToken(_x2) {
107
+ return _ref2.apply(this, arguments);
108
+ };
109
+ }();
package/dist/cjs/index.js CHANGED
@@ -57,6 +57,12 @@ Object.defineProperty(exports, "fetchErrorPayload", {
57
57
  return _errorHandling.fetchErrorPayload;
58
58
  }
59
59
  });
60
+ Object.defineProperty(exports, "fetchMediaToken", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _fetchMediaToken.fetchMediaToken;
64
+ }
65
+ });
60
66
  Object.defineProperty(exports, "fetchReferences", {
61
67
  enumerable: true,
62
68
  get: function get() {
@@ -172,6 +178,7 @@ var _useFetchSyncBlockTitle = require("./hooks/useFetchSyncBlockTitle");
172
178
  var _useHandleContentChanges = require("./hooks/useHandleContentChanges");
173
179
  var _ari = require("./clients/block-service/ari");
174
180
  var _ari2 = require("./clients/confluence/ari");
181
+ var _fetchMediaToken = require("./clients/confluence/fetchMediaToken");
175
182
  var _ari3 = require("./clients/jira/ari");
176
183
  var _blockServiceAPI = require("./providers/block-service/blockServiceAPI");
177
184
  var _sourceInfo = require("./clients/confluence/sourceInfo");
@@ -477,6 +477,8 @@ var SourceSyncBlockStoreManager = exports.SourceSyncBlockStoreManager = /*#__PUR
477
477
  onDeleteCompleted: onDeleteCompleted,
478
478
  destroyCallback: destroyCallback
479
479
  };
480
+ } else {
481
+ destroyCallback();
480
482
  }
481
483
  _context4.next = 12;
482
484
  break;
@@ -0,0 +1,68 @@
1
+ import { logException } from '@atlaskit/editor-common/monitoring';
2
+ import { fetchWithRetry } from '../../utils/retry';
3
+ const COMMON_HEADERS = {
4
+ 'Content-Type': 'application/json',
5
+ Accept: 'application/json'
6
+ };
7
+ const AGG_HEADERS = {
8
+ 'X-ExperimentalApi': 'confluence-agg-beta'
9
+ };
10
+ const GRAPHQL_ENDPOINT = '/gateway/api/graphql';
11
+ const GET_CONTENT_MEDIA_SESSION_OPERATION_NAME = 'MediaUploadTokenQuery';
12
+ const GET_CONTENT_MEDIA_SESSION_QUERY = `query ${GET_CONTENT_MEDIA_SESSION_OPERATION_NAME}($contentId: ID!) {
13
+ contentMediaSession(contentId: $contentId) {
14
+ token {
15
+ value
16
+ }
17
+ configuration {
18
+ clientId
19
+ fileStoreUrl
20
+ }
21
+ collection
22
+ }
23
+ }`;
24
+ const getContentMediaSession = async contentId => {
25
+ const bodyData = {
26
+ query: GET_CONTENT_MEDIA_SESSION_QUERY,
27
+ operationName: GET_CONTENT_MEDIA_SESSION_OPERATION_NAME,
28
+ variables: {
29
+ contentId: contentId
30
+ }
31
+ };
32
+ const response = await fetchWithRetry(GRAPHQL_ENDPOINT, {
33
+ method: 'POST',
34
+ headers: {
35
+ ...COMMON_HEADERS,
36
+ ...AGG_HEADERS
37
+ },
38
+ body: JSON.stringify(bodyData)
39
+ });
40
+ if (!response.ok) {
41
+ throw new Error(`Failed to get content media session: ${response.statusText}`);
42
+ }
43
+ const result = await response.json();
44
+ return result;
45
+ };
46
+ export const fetchMediaToken = async contentId => {
47
+ try {
48
+ var _response$data, _contentData$token;
49
+ const response = await getContentMediaSession(contentId);
50
+ const contentData = (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.contentMediaSession;
51
+ const token = contentData === null || contentData === void 0 ? void 0 : (_contentData$token = contentData.token) === null || _contentData$token === void 0 ? void 0 : _contentData$token.value;
52
+ const configuration = contentData === null || contentData === void 0 ? void 0 : contentData.configuration;
53
+ const collection = contentData === null || contentData === void 0 ? void 0 : contentData.collection;
54
+ if (!token || !configuration || !collection) {
55
+ throw new Error('Failed to get content media session data');
56
+ }
57
+ return Promise.resolve({
58
+ config: configuration,
59
+ token,
60
+ collectionId: collection
61
+ });
62
+ } catch (error) {
63
+ logException(error, {
64
+ location: 'editor-synced-block-provider/fetchMediaToken'
65
+ });
66
+ throw new Error(`Failed to get content media session: ${error}`);
67
+ }
68
+ };
@@ -11,6 +11,7 @@ export { useHandleContentChanges } from './hooks/useHandleContentChanges';
11
11
  // clients
12
12
  export { generateBlockAri, generateBlockAriFromReference, getLocalIdFromBlockResourceId } from './clients/block-service/ari';
13
13
  export { getConfluencePageAri, getPageIdAndTypeFromConfluencePageAri } from './clients/confluence/ari';
14
+ export { fetchMediaToken } from './clients/confluence/fetchMediaToken';
14
15
  export { getJiraWorkItemAri, getJiraWorkItemIdFromAri } from './clients/jira/ari';
15
16
 
16
17
  // providers
@@ -332,6 +332,8 @@ export class SourceSyncBlockStoreManager {
332
332
  onDeleteCompleted,
333
333
  destroyCallback
334
334
  };
335
+ } else {
336
+ destroyCallback();
335
337
  }
336
338
  } else {
337
339
  destroyCallback();
@@ -0,0 +1,102 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
+ import { logException } from '@atlaskit/editor-common/monitoring';
7
+ import { fetchWithRetry } from '../../utils/retry';
8
+ var COMMON_HEADERS = {
9
+ 'Content-Type': 'application/json',
10
+ Accept: 'application/json'
11
+ };
12
+ var AGG_HEADERS = {
13
+ 'X-ExperimentalApi': 'confluence-agg-beta'
14
+ };
15
+ var GRAPHQL_ENDPOINT = '/gateway/api/graphql';
16
+ var GET_CONTENT_MEDIA_SESSION_OPERATION_NAME = 'MediaUploadTokenQuery';
17
+ var GET_CONTENT_MEDIA_SESSION_QUERY = "query ".concat(GET_CONTENT_MEDIA_SESSION_OPERATION_NAME, "($contentId: ID!) {\n\tcontentMediaSession(contentId: $contentId) {\n\t\ttoken {\n\t\t\tvalue\n\t\t}\n\t\tconfiguration {\n\t\t\tclientId\n\t\t\tfileStoreUrl\n\t\t}\n\t\tcollection\n\t}\n}");
18
+ var getContentMediaSession = /*#__PURE__*/function () {
19
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(contentId) {
20
+ var bodyData, response, result;
21
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
22
+ while (1) switch (_context.prev = _context.next) {
23
+ case 0:
24
+ bodyData = {
25
+ query: GET_CONTENT_MEDIA_SESSION_QUERY,
26
+ operationName: GET_CONTENT_MEDIA_SESSION_OPERATION_NAME,
27
+ variables: {
28
+ contentId: contentId
29
+ }
30
+ };
31
+ _context.next = 3;
32
+ return fetchWithRetry(GRAPHQL_ENDPOINT, {
33
+ method: 'POST',
34
+ headers: _objectSpread(_objectSpread({}, COMMON_HEADERS), AGG_HEADERS),
35
+ body: JSON.stringify(bodyData)
36
+ });
37
+ case 3:
38
+ response = _context.sent;
39
+ if (response.ok) {
40
+ _context.next = 6;
41
+ break;
42
+ }
43
+ throw new Error("Failed to get content media session: ".concat(response.statusText));
44
+ case 6:
45
+ _context.next = 8;
46
+ return response.json();
47
+ case 8:
48
+ result = _context.sent;
49
+ return _context.abrupt("return", result);
50
+ case 10:
51
+ case "end":
52
+ return _context.stop();
53
+ }
54
+ }, _callee);
55
+ }));
56
+ return function getContentMediaSession(_x) {
57
+ return _ref.apply(this, arguments);
58
+ };
59
+ }();
60
+ export var fetchMediaToken = /*#__PURE__*/function () {
61
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(contentId) {
62
+ var _response$data, _contentData$token, response, contentData, token, configuration, collection;
63
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
64
+ while (1) switch (_context2.prev = _context2.next) {
65
+ case 0:
66
+ _context2.prev = 0;
67
+ _context2.next = 3;
68
+ return getContentMediaSession(contentId);
69
+ case 3:
70
+ response = _context2.sent;
71
+ contentData = (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.contentMediaSession;
72
+ token = contentData === null || contentData === void 0 || (_contentData$token = contentData.token) === null || _contentData$token === void 0 ? void 0 : _contentData$token.value;
73
+ configuration = contentData === null || contentData === void 0 ? void 0 : contentData.configuration;
74
+ collection = contentData === null || contentData === void 0 ? void 0 : contentData.collection;
75
+ if (!(!token || !configuration || !collection)) {
76
+ _context2.next = 10;
77
+ break;
78
+ }
79
+ throw new Error('Failed to get content media session data');
80
+ case 10:
81
+ return _context2.abrupt("return", Promise.resolve({
82
+ config: configuration,
83
+ token: token,
84
+ collectionId: collection
85
+ }));
86
+ case 13:
87
+ _context2.prev = 13;
88
+ _context2.t0 = _context2["catch"](0);
89
+ logException(_context2.t0, {
90
+ location: 'editor-synced-block-provider/fetchMediaToken'
91
+ });
92
+ throw new Error("Failed to get content media session: ".concat(_context2.t0));
93
+ case 17:
94
+ case "end":
95
+ return _context2.stop();
96
+ }
97
+ }, _callee2, null, [[0, 13]]);
98
+ }));
99
+ return function fetchMediaToken(_x2) {
100
+ return _ref2.apply(this, arguments);
101
+ };
102
+ }();
package/dist/esm/index.js CHANGED
@@ -11,6 +11,7 @@ export { useHandleContentChanges } from './hooks/useHandleContentChanges';
11
11
  // clients
12
12
  export { generateBlockAri, generateBlockAriFromReference, getLocalIdFromBlockResourceId } from './clients/block-service/ari';
13
13
  export { getConfluencePageAri, getPageIdAndTypeFromConfluencePageAri } from './clients/confluence/ari';
14
+ export { fetchMediaToken } from './clients/confluence/fetchMediaToken';
14
15
  export { getJiraWorkItemAri, getJiraWorkItemIdFromAri } from './clients/jira/ari';
15
16
 
16
17
  // providers
@@ -470,6 +470,8 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
470
470
  onDeleteCompleted: onDeleteCompleted,
471
471
  destroyCallback: destroyCallback
472
472
  };
473
+ } else {
474
+ destroyCallback();
473
475
  }
474
476
  _context4.next = 12;
475
477
  break;
@@ -0,0 +1,11 @@
1
+ type ConfigData = {
2
+ readonly clientId: string;
3
+ readonly fileStoreUrl: string;
4
+ };
5
+ type TokenData = {
6
+ collectionId?: string;
7
+ config: ConfigData;
8
+ token: string;
9
+ };
10
+ export declare const fetchMediaToken: (contentId: string) => Promise<TokenData>;
11
+ export {};
@@ -6,6 +6,7 @@ export { useFetchSyncBlockTitle } from './hooks/useFetchSyncBlockTitle';
6
6
  export { useHandleContentChanges } from './hooks/useHandleContentChanges';
7
7
  export { generateBlockAri, generateBlockAriFromReference, getLocalIdFromBlockResourceId, } from './clients/block-service/ari';
8
8
  export { getConfluencePageAri, getPageIdAndTypeFromConfluencePageAri, } from './clients/confluence/ari';
9
+ export { fetchMediaToken } from './clients/confluence/fetchMediaToken';
9
10
  export { getJiraWorkItemAri, getJiraWorkItemIdFromAri } from './clients/jira/ari';
10
11
  export { useMemoizedBlockServiceAPIProviders, useMemoizedBlockServiceFetchOnlyAPIProvider, } from './providers/block-service/blockServiceAPI';
11
12
  export { fetchConfluencePageInfo } from './clients/confluence/sourceInfo';
@@ -71,8 +71,8 @@ export type SyncedBlockRendererDataProviders = {
71
71
  taskDecisionProvider?: Promise<TaskDecisionProvider>;
72
72
  };
73
73
  export type SyncBlockRendererProviderCreator = {
74
- createEmojiProvider: ((options: MediaEmojiProviderOptions) => Promise<EmojiProvider>) | undefined;
75
- createMediaProvider: ((options: MediaEmojiProviderOptions) => Promise<MediaProvider>) | undefined;
74
+ createEmojiProvider: ((options: MediaEmojiProviderOptions) => Promise<EmojiProvider> | undefined) | undefined;
75
+ createMediaProvider: ((options: MediaEmojiProviderOptions) => Promise<MediaProvider> | undefined) | undefined;
76
76
  };
77
77
  export type SyncedBlockRendererProviderOptions = {
78
78
  parentDataProviders?: SyncedBlockRendererDataProviders;
@@ -0,0 +1,11 @@
1
+ type ConfigData = {
2
+ readonly clientId: string;
3
+ readonly fileStoreUrl: string;
4
+ };
5
+ type TokenData = {
6
+ collectionId?: string;
7
+ config: ConfigData;
8
+ token: string;
9
+ };
10
+ export declare const fetchMediaToken: (contentId: string) => Promise<TokenData>;
11
+ export {};
@@ -6,6 +6,7 @@ export { useFetchSyncBlockTitle } from './hooks/useFetchSyncBlockTitle';
6
6
  export { useHandleContentChanges } from './hooks/useHandleContentChanges';
7
7
  export { generateBlockAri, generateBlockAriFromReference, getLocalIdFromBlockResourceId, } from './clients/block-service/ari';
8
8
  export { getConfluencePageAri, getPageIdAndTypeFromConfluencePageAri, } from './clients/confluence/ari';
9
+ export { fetchMediaToken } from './clients/confluence/fetchMediaToken';
9
10
  export { getJiraWorkItemAri, getJiraWorkItemIdFromAri } from './clients/jira/ari';
10
11
  export { useMemoizedBlockServiceAPIProviders, useMemoizedBlockServiceFetchOnlyAPIProvider, } from './providers/block-service/blockServiceAPI';
11
12
  export { fetchConfluencePageInfo } from './clients/confluence/sourceInfo';
@@ -71,8 +71,8 @@ export type SyncedBlockRendererDataProviders = {
71
71
  taskDecisionProvider?: Promise<TaskDecisionProvider>;
72
72
  };
73
73
  export type SyncBlockRendererProviderCreator = {
74
- createEmojiProvider: ((options: MediaEmojiProviderOptions) => Promise<EmojiProvider>) | undefined;
75
- createMediaProvider: ((options: MediaEmojiProviderOptions) => Promise<MediaProvider>) | undefined;
74
+ createEmojiProvider: ((options: MediaEmojiProviderOptions) => Promise<EmojiProvider> | undefined) | undefined;
75
+ createMediaProvider: ((options: MediaEmojiProviderOptions) => Promise<MediaProvider> | undefined) | undefined;
76
76
  };
77
77
  export type SyncedBlockRendererProviderOptions = {
78
78
  parentDataProviders?: SyncedBlockRendererDataProviders;
package/package.json CHANGED
@@ -77,7 +77,7 @@
77
77
  }
78
78
  },
79
79
  "name": "@atlaskit/editor-synced-block-provider",
80
- "version": "3.5.3",
80
+ "version": "3.5.5",
81
81
  "description": "Synced Block Provider for @atlaskit/editor-plugin-synced-block",
82
82
  "author": "Atlassian Pty Ltd",
83
83
  "license": "Apache-2.0",