@atlaskit/editor-synced-block-provider 2.13.0 → 2.14.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,19 @@
1
1
  # @atlaskit/editor-synced-block-provider
2
2
 
3
+ ## 2.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`8f3a22c66ae60`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8f3a22c66ae60) -
8
+ Update to read from ssr cache
9
+
10
+ ## 2.13.1
11
+
12
+ ### Patch Changes
13
+
14
+ - [`d04179e359d44`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/d04179e359d44) -
15
+ EDITOR-2484 fix flush return on error
16
+
3
17
  ## 2.13.0
4
18
 
5
19
  ### Minor Changes
@@ -23,7 +23,7 @@ var generateBlockAri = exports.generateBlockAri = function generateBlockAri(sour
23
23
  };
24
24
 
25
25
  /**
26
- *
26
+ *
27
27
  * @param sourceAri - the ARI of the document. E.G ari:cloud:confluence:cloudId:page/pageId
28
28
  * @param resourceId - the resource ID of the reference synced block. E.G confluence-page/pageId/sourceResourceId
29
29
  * @returns the block ARI. E.G ari:cloud:blocks:<cloudId>:synced-block/<product>/<pageId>/<resourceId>
@@ -14,7 +14,15 @@ var _types = require("../common/types");
14
14
  var _errorHandling = require("../utils/errorHandling");
15
15
  var _utils = require("../utils/utils");
16
16
  var useFetchSyncBlockData = exports.useFetchSyncBlockData = function useFetchSyncBlockData(manager, resourceId, localId, fireAnalyticsEvent) {
17
- var _useState = (0, _react.useState)(null),
17
+ var _useState = (0, _react.useState)(function () {
18
+ if (resourceId) {
19
+ var _manager$referenceMan;
20
+ var _ref = (manager === null || manager === void 0 || (_manager$referenceMan = manager.referenceManager) === null || _manager$referenceMan === void 0 ? void 0 : _manager$referenceMan.getInitialSyncBlockData(resourceId)) || {},
21
+ data = _ref.data;
22
+ return data || null;
23
+ }
24
+ return null;
25
+ }),
18
26
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
19
27
  syncBlockInstance = _useState2[0],
20
28
  setSyncBlockInstance = _useState2[1];
@@ -73,7 +73,7 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
73
73
  }, {
74
74
  key: "nodeDataKey",
75
75
  value: function nodeDataKey(node) {
76
- return node.attrs.localId;
76
+ return node.attrs.resourceId;
77
77
  }
78
78
 
79
79
  /**
@@ -298,8 +298,13 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
298
298
  }
299
299
  }]);
300
300
  }(_types2.SyncBlockDataProvider);
301
- var useMemoizedSyncedBlockProvider = exports.useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions) {
301
+ var useMemoizedSyncedBlockProvider = exports.useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions, getSSRData) {
302
302
  return (0, _react.useMemo)(function () {
303
- return new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
304
- }, [fetchProvider, writeProvider, sourceId, providerOptions]);
303
+ var syncBlockProvider = new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
304
+ var ssrData = getSSRData ? getSSRData() : undefined;
305
+ if (ssrData) {
306
+ syncBlockProvider.setSSRData(ssrData);
307
+ }
308
+ return syncBlockProvider;
309
+ }, [fetchProvider, writeProvider, sourceId, providerOptions, getSSRData]);
305
310
  };
@@ -52,6 +52,13 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
52
52
  value: function updateFireAnalyticsEvent(fireAnalyticsEvent) {
53
53
  this.fireAnalyticsEvent = fireAnalyticsEvent;
54
54
  }
55
+ }, {
56
+ key: "getInitialSyncBlockData",
57
+ value: function getInitialSyncBlockData(resourceId) {
58
+ var _this$dataProvider;
59
+ var syncBlockNode = (0, _utils.createSyncBlockNode)('', resourceId);
60
+ return this.getFromCache(resourceId) || ((_this$dataProvider = this.dataProvider) === null || _this$dataProvider === void 0 || (_this$dataProvider = _this$dataProvider.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider === void 0 ? void 0 : _this$dataProvider.data);
61
+ }
55
62
 
56
63
  /**
57
64
  * Refreshes the subscriptions for all sync blocks.
@@ -315,17 +322,20 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
315
322
  }, {
316
323
  key: "subscribeToSyncBlock",
317
324
  value: function subscribeToSyncBlock(resourceId, localId, callback) {
318
- var _this3 = this;
325
+ var _this$dataProvider2,
326
+ _this3 = this;
319
327
  // add to subscriptions map
320
328
  var resourceSubscriptions = this.subscriptions.get(resourceId) || {};
321
329
  this.subscriptions.set(resourceId, _objectSpread(_objectSpread({}, resourceSubscriptions), {}, (0, _defineProperty2.default)({}, localId, callback)));
330
+ var syncBlockNode = (0, _utils.createSyncBlockNode)(localId, resourceId);
322
331
 
323
332
  // call the callback immediately if we have cached data
324
- var cachedData = this.getFromCache(resourceId);
333
+ // prefer cache from store manager first, should update data provider to use the same cache
334
+ var cachedData = this.getFromCache(resourceId) || ((_this$dataProvider2 = this.dataProvider) === null || _this$dataProvider2 === void 0 || (_this$dataProvider2 = _this$dataProvider2.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider2 === void 0 ? void 0 : _this$dataProvider2.data);
325
335
  if (cachedData) {
326
336
  callback(cachedData);
327
337
  } else {
328
- this.fetchSyncBlocksData([(0, _utils.createSyncBlockNode)(localId, resourceId)]).catch(function (error) {
338
+ this.fetchSyncBlocksData([syncBlockNode]).catch(function (error) {
329
339
  var _this3$fireAnalyticsE;
330
340
  (0, _monitoring.logException)(error, {
331
341
  location: 'editor-synced-block-provider/referenceSyncBlockStoreManager'
@@ -17,7 +17,7 @@ export const generateBlockAri = (sourceAri, resourceId, product) => {
17
17
  };
18
18
 
19
19
  /**
20
- *
20
+ *
21
21
  * @param sourceAri - the ARI of the document. E.G ari:cloud:confluence:cloudId:page/pageId
22
22
  * @param resourceId - the resource ID of the reference synced block. E.G confluence-page/pageId/sourceResourceId
23
23
  * @returns the block ARI. E.G ari:cloud:blocks:<cloudId>:synced-block/<product>/<pageId>/<resourceId>
@@ -4,7 +4,16 @@ import { SyncBlockError } from '../common/types';
4
4
  import { fetchErrorPayload } from '../utils/errorHandling';
5
5
  import { createSyncBlockNode } from '../utils/utils';
6
6
  export const useFetchSyncBlockData = (manager, resourceId, localId, fireAnalyticsEvent) => {
7
- const [syncBlockInstance, setSyncBlockInstance] = useState(null);
7
+ const [syncBlockInstance, setSyncBlockInstance] = useState(() => {
8
+ if (resourceId) {
9
+ var _manager$referenceMan;
10
+ const {
11
+ data
12
+ } = (manager === null || manager === void 0 ? void 0 : (_manager$referenceMan = manager.referenceManager) === null || _manager$referenceMan === void 0 ? void 0 : _manager$referenceMan.getInitialSyncBlockData(resourceId)) || {};
13
+ return data || null;
14
+ }
15
+ return null;
16
+ });
8
17
  const [isLoading, setIsLoading] = useState(true);
9
18
  const reloadData = useCallback(async () => {
10
19
  if (isLoading) {
@@ -46,7 +46,7 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
46
46
  * @returns The data key
47
47
  */
48
48
  nodeDataKey(node) {
49
- return node.attrs.localId;
49
+ return node.attrs.resourceId;
50
50
  }
51
51
 
52
52
  /**
@@ -201,8 +201,13 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
201
201
  }
202
202
  }
203
203
  }
204
- export const useMemoizedSyncedBlockProvider = (fetchProvider, writeProvider, sourceId, providerOptions) => {
204
+ export const useMemoizedSyncedBlockProvider = (fetchProvider, writeProvider, sourceId, providerOptions, getSSRData) => {
205
205
  return useMemo(() => {
206
- return new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
207
- }, [fetchProvider, writeProvider, sourceId, providerOptions]);
206
+ const syncBlockProvider = new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
207
+ const ssrData = getSSRData ? getSSRData() : undefined;
208
+ if (ssrData) {
209
+ syncBlockProvider.setSSRData(ssrData);
210
+ }
211
+ return syncBlockProvider;
212
+ }, [fetchProvider, writeProvider, sourceId, providerOptions, getSSRData]);
208
213
  };
@@ -31,6 +31,11 @@ export class ReferenceSyncBlockStoreManager {
31
31
  updateFireAnalyticsEvent(fireAnalyticsEvent) {
32
32
  this.fireAnalyticsEvent = fireAnalyticsEvent;
33
33
  }
34
+ getInitialSyncBlockData(resourceId) {
35
+ var _this$dataProvider, _this$dataProvider$ge;
36
+ const syncBlockNode = createSyncBlockNode('', resourceId);
37
+ return this.getFromCache(resourceId) || ((_this$dataProvider = this.dataProvider) === null || _this$dataProvider === void 0 ? void 0 : (_this$dataProvider$ge = _this$dataProvider.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider$ge === void 0 ? void 0 : _this$dataProvider$ge.data);
38
+ }
34
39
 
35
40
  /**
36
41
  * Refreshes the subscriptions for all sync blocks.
@@ -200,19 +205,22 @@ export class ReferenceSyncBlockStoreManager {
200
205
  this.providerFactories.delete(resourceId);
201
206
  }
202
207
  subscribeToSyncBlock(resourceId, localId, callback) {
208
+ var _this$dataProvider2, _this$dataProvider2$g;
203
209
  // add to subscriptions map
204
210
  const resourceSubscriptions = this.subscriptions.get(resourceId) || {};
205
211
  this.subscriptions.set(resourceId, {
206
212
  ...resourceSubscriptions,
207
213
  [localId]: callback
208
214
  });
215
+ const syncBlockNode = createSyncBlockNode(localId, resourceId);
209
216
 
210
217
  // call the callback immediately if we have cached data
211
- const cachedData = this.getFromCache(resourceId);
218
+ // prefer cache from store manager first, should update data provider to use the same cache
219
+ const cachedData = this.getFromCache(resourceId) || ((_this$dataProvider2 = this.dataProvider) === null || _this$dataProvider2 === void 0 ? void 0 : (_this$dataProvider2$g = _this$dataProvider2.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider2$g === void 0 ? void 0 : _this$dataProvider2$g.data);
212
220
  if (cachedData) {
213
221
  callback(cachedData);
214
222
  } else {
215
- this.fetchSyncBlocksData([createSyncBlockNode(localId, resourceId)]).catch(error => {
223
+ this.fetchSyncBlocksData([syncBlockNode]).catch(error => {
216
224
  var _this$fireAnalyticsEv7;
217
225
  logException(error, {
218
226
  location: 'editor-synced-block-provider/referenceSyncBlockStoreManager'
@@ -17,7 +17,7 @@ export var generateBlockAri = function generateBlockAri(sourceAri, resourceId, p
17
17
  };
18
18
 
19
19
  /**
20
- *
20
+ *
21
21
  * @param sourceAri - the ARI of the document. E.G ari:cloud:confluence:cloudId:page/pageId
22
22
  * @param resourceId - the resource ID of the reference synced block. E.G confluence-page/pageId/sourceResourceId
23
23
  * @returns the block ARI. E.G ari:cloud:blocks:<cloudId>:synced-block/<product>/<pageId>/<resourceId>
@@ -7,7 +7,15 @@ import { SyncBlockError } from '../common/types';
7
7
  import { fetchErrorPayload } from '../utils/errorHandling';
8
8
  import { createSyncBlockNode } from '../utils/utils';
9
9
  export var useFetchSyncBlockData = function useFetchSyncBlockData(manager, resourceId, localId, fireAnalyticsEvent) {
10
- var _useState = useState(null),
10
+ var _useState = useState(function () {
11
+ if (resourceId) {
12
+ var _manager$referenceMan;
13
+ var _ref = (manager === null || manager === void 0 || (_manager$referenceMan = manager.referenceManager) === null || _manager$referenceMan === void 0 ? void 0 : _manager$referenceMan.getInitialSyncBlockData(resourceId)) || {},
14
+ data = _ref.data;
15
+ return data || null;
16
+ }
17
+ return null;
18
+ }),
11
19
  _useState2 = _slicedToArray(_useState, 2),
12
20
  syncBlockInstance = _useState2[0],
13
21
  setSyncBlockInstance = _useState2[1];
@@ -66,7 +66,7 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
66
66
  }, {
67
67
  key: "nodeDataKey",
68
68
  value: function nodeDataKey(node) {
69
- return node.attrs.localId;
69
+ return node.attrs.resourceId;
70
70
  }
71
71
 
72
72
  /**
@@ -291,8 +291,13 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
291
291
  }
292
292
  }]);
293
293
  }(SyncBlockDataProvider);
294
- export var useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions) {
294
+ export var useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions, getSSRData) {
295
295
  return useMemo(function () {
296
- return new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
297
- }, [fetchProvider, writeProvider, sourceId, providerOptions]);
296
+ var syncBlockProvider = new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
297
+ var ssrData = getSSRData ? getSSRData() : undefined;
298
+ if (ssrData) {
299
+ syncBlockProvider.setSSRData(ssrData);
300
+ }
301
+ return syncBlockProvider;
302
+ }, [fetchProvider, writeProvider, sourceId, providerOptions, getSSRData]);
298
303
  };
@@ -46,6 +46,13 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
46
46
  value: function updateFireAnalyticsEvent(fireAnalyticsEvent) {
47
47
  this.fireAnalyticsEvent = fireAnalyticsEvent;
48
48
  }
49
+ }, {
50
+ key: "getInitialSyncBlockData",
51
+ value: function getInitialSyncBlockData(resourceId) {
52
+ var _this$dataProvider;
53
+ var syncBlockNode = createSyncBlockNode('', resourceId);
54
+ return this.getFromCache(resourceId) || ((_this$dataProvider = this.dataProvider) === null || _this$dataProvider === void 0 || (_this$dataProvider = _this$dataProvider.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider === void 0 ? void 0 : _this$dataProvider.data);
55
+ }
49
56
 
50
57
  /**
51
58
  * Refreshes the subscriptions for all sync blocks.
@@ -309,17 +316,20 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
309
316
  }, {
310
317
  key: "subscribeToSyncBlock",
311
318
  value: function subscribeToSyncBlock(resourceId, localId, callback) {
312
- var _this3 = this;
319
+ var _this$dataProvider2,
320
+ _this3 = this;
313
321
  // add to subscriptions map
314
322
  var resourceSubscriptions = this.subscriptions.get(resourceId) || {};
315
323
  this.subscriptions.set(resourceId, _objectSpread(_objectSpread({}, resourceSubscriptions), {}, _defineProperty({}, localId, callback)));
324
+ var syncBlockNode = createSyncBlockNode(localId, resourceId);
316
325
 
317
326
  // call the callback immediately if we have cached data
318
- var cachedData = this.getFromCache(resourceId);
327
+ // prefer cache from store manager first, should update data provider to use the same cache
328
+ var cachedData = this.getFromCache(resourceId) || ((_this$dataProvider2 = this.dataProvider) === null || _this$dataProvider2 === void 0 || (_this$dataProvider2 = _this$dataProvider2.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider2 === void 0 ? void 0 : _this$dataProvider2.data);
319
329
  if (cachedData) {
320
330
  callback(cachedData);
321
331
  } else {
322
- this.fetchSyncBlocksData([createSyncBlockNode(localId, resourceId)]).catch(function (error) {
332
+ this.fetchSyncBlocksData([syncBlockNode]).catch(function (error) {
323
333
  var _this3$fireAnalyticsE;
324
334
  logException(error, {
325
335
  location: 'editor-synced-block-provider/referenceSyncBlockStoreManager'
@@ -1,4 +1,4 @@
1
- import { type SyncBlockProduct } from "../../common/types";
1
+ import { type SyncBlockProduct } from '../../common/types';
2
2
  /**
3
3
  * Generates the block ARI from the source page ARI and the source block's resource ID.
4
4
  * @param sourceAri - the ARI of the document. E.G ari:cloud:confluence:cloudId:page/pageId
@@ -95,4 +95,4 @@ export declare class SyncBlockProvider extends SyncBlockDataProvider {
95
95
  */
96
96
  retrieveSyncBlockParentInfo(sourceAri: string, sourceProduct: SyncBlockProduct): SyncBlockParentInfo | undefined;
97
97
  }
98
- export declare const useMemoizedSyncedBlockProvider: (fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string, providerOptions: SyncedBlockRendererProviderOptions) => SyncBlockProvider;
98
+ export declare const useMemoizedSyncedBlockProvider: (fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string, providerOptions: SyncedBlockRendererProviderOptions, getSSRData?: () => Record<string, SyncBlockInstance> | undefined) => SyncBlockProvider;
@@ -15,6 +15,7 @@ export declare class ReferenceSyncBlockStoreManager {
15
15
  constructor(dataProvider?: SyncBlockDataProvider, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void);
16
16
  generateResourceIdForReference(sourceId: ResourceId): ResourceId;
17
17
  updateFireAnalyticsEvent(fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): void;
18
+ getInitialSyncBlockData(resourceId: ResourceId): SyncBlockInstance | undefined;
18
19
  /**
19
20
  * Refreshes the subscriptions for all sync blocks.
20
21
  * @returns {Promise<void>}
@@ -1,4 +1,4 @@
1
- import { type SyncBlockProduct } from "../../common/types";
1
+ import { type SyncBlockProduct } from '../../common/types';
2
2
  /**
3
3
  * Generates the block ARI from the source page ARI and the source block's resource ID.
4
4
  * @param sourceAri - the ARI of the document. E.G ari:cloud:confluence:cloudId:page/pageId
@@ -95,4 +95,4 @@ export declare class SyncBlockProvider extends SyncBlockDataProvider {
95
95
  */
96
96
  retrieveSyncBlockParentInfo(sourceAri: string, sourceProduct: SyncBlockProduct): SyncBlockParentInfo | undefined;
97
97
  }
98
- export declare const useMemoizedSyncedBlockProvider: (fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string, providerOptions: SyncedBlockRendererProviderOptions) => SyncBlockProvider;
98
+ export declare const useMemoizedSyncedBlockProvider: (fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string, providerOptions: SyncedBlockRendererProviderOptions, getSSRData?: () => Record<string, SyncBlockInstance> | undefined) => SyncBlockProvider;
@@ -15,6 +15,7 @@ export declare class ReferenceSyncBlockStoreManager {
15
15
  constructor(dataProvider?: SyncBlockDataProvider, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void);
16
16
  generateResourceIdForReference(sourceId: ResourceId): ResourceId;
17
17
  updateFireAnalyticsEvent(fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): void;
18
+ getInitialSyncBlockData(resourceId: ResourceId): SyncBlockInstance | undefined;
18
19
  /**
19
20
  * Refreshes the subscriptions for all sync blocks.
20
21
  * @returns {Promise<void>}
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "category": "Layout and structure"
7
7
  }
8
8
  },
9
- "repository": "https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo",
9
+ "repository": "https://bitbucket.org/atlassian/atlassian-frontend-monorepo",
10
10
  "main": "dist/cjs/index.js",
11
11
  "module": "dist/esm/index.js",
12
12
  "module:es2019": "dist/es2019/index.js",
@@ -34,7 +34,7 @@
34
34
  "uuid": "^3.1.0"
35
35
  },
36
36
  "peerDependencies": {
37
- "@atlaskit/editor-common": "^110.40.0",
37
+ "@atlaskit/editor-common": "^110.41.0",
38
38
  "react": "^18.2.0"
39
39
  },
40
40
  "devDependencies": {
@@ -77,7 +77,7 @@
77
77
  }
78
78
  },
79
79
  "name": "@atlaskit/editor-synced-block-provider",
80
- "version": "2.13.0",
80
+ "version": "2.14.0",
81
81
  "description": "Synced Block Provider for @atlaskit/editor-plugin-synced-block",
82
82
  "author": "Atlassian Pty Ltd",
83
83
  "license": "Apache-2.0",