@atlaskit/editor-synced-block-provider 23.1.0 → 23.1.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 +10 -0
- package/dist/cjs/providers/block-service/blockServiceAPI.js +32 -10
- package/dist/cjs/providers/syncBlockProvider.js +5 -5
- package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +9 -10
- package/dist/es2019/providers/block-service/blockServiceAPI.js +27 -7
- package/dist/es2019/providers/syncBlockProvider.js +5 -3
- package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +9 -10
- package/dist/esm/providers/block-service/blockServiceAPI.js +32 -10
- package/dist/esm/providers/syncBlockProvider.js +5 -5
- package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +9 -10
- package/dist/types/providers/block-service/blockServiceAPI.d.ts +9 -2
- package/dist/types/providers/syncBlockProvider.d.ts +0 -1
- package/dist/types/providers/types.d.ts +2 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-provider
|
|
2
2
|
|
|
3
|
+
## 23.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`b68ccfbea3aeb`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b68ccfbea3aeb) -
|
|
8
|
+
Generate synced-block reference IDs through the fetch provider under
|
|
9
|
+
platform_editor_blocks_patch_12, allowing fetch-only renderers to check same-document references
|
|
10
|
+
without a write provider.
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
3
13
|
## 23.1.0
|
|
4
14
|
|
|
5
15
|
### Minor Changes
|
|
@@ -606,15 +606,27 @@ var writeDataBatch = exports.writeDataBatch = /*#__PURE__*/function () {
|
|
|
606
606
|
var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
607
607
|
function BlockServiceADFFetchProvider(_ref5) {
|
|
608
608
|
var cloudId = _ref5.cloudId,
|
|
609
|
-
parentAri = _ref5.parentAri
|
|
609
|
+
parentAri = _ref5.parentAri,
|
|
610
|
+
parentId = _ref5.parentId,
|
|
611
|
+
product = _ref5.product;
|
|
610
612
|
(0, _classCallCheck2.default)(this, BlockServiceADFFetchProvider);
|
|
611
613
|
this.cloudId = cloudId;
|
|
612
614
|
this.parentAri = parentAri;
|
|
615
|
+
this.parentId = parentId;
|
|
616
|
+
this.product = product;
|
|
613
617
|
}
|
|
614
|
-
|
|
615
|
-
// resourceId of the reference synced block.
|
|
616
|
-
// the ARI must be constructed to call the block service API
|
|
617
618
|
return (0, _createClass2.default)(BlockServiceADFFetchProvider, [{
|
|
619
|
+
key: "generateResourceIdForReference",
|
|
620
|
+
value: function generateResourceIdForReference(sourceId) {
|
|
621
|
+
if (!this.product || !this.parentId) {
|
|
622
|
+
return sourceId;
|
|
623
|
+
}
|
|
624
|
+
return (0, _resourceId2.createResourceIdForReference)(this.product, this.parentId, sourceId);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
// resourceId of the reference synced block.
|
|
628
|
+
// the ARI must be constructed to call the block service API
|
|
629
|
+
}, {
|
|
618
630
|
key: "fetchData",
|
|
619
631
|
value: function () {
|
|
620
632
|
var _fetchData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(resourceId) {
|
|
@@ -1496,7 +1508,9 @@ var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_re
|
|
|
1496
1508
|
return {
|
|
1497
1509
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1498
1510
|
cloudId: cloudId,
|
|
1499
|
-
parentAri: parentAri
|
|
1511
|
+
parentAri: parentAri,
|
|
1512
|
+
parentId: parentId,
|
|
1513
|
+
product: product
|
|
1500
1514
|
}),
|
|
1501
1515
|
writeProvider: new BlockServiceADFWriteProvider({
|
|
1502
1516
|
cloudId: cloudId,
|
|
@@ -1525,11 +1539,15 @@ var useMemoizedBlockServiceAPIProviders = exports.useMemoizedBlockServiceAPIProv
|
|
|
1525
1539
|
};
|
|
1526
1540
|
var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(_ref1) {
|
|
1527
1541
|
var cloudId = _ref1.cloudId,
|
|
1528
|
-
parentAri = _ref1.parentAri
|
|
1542
|
+
parentAri = _ref1.parentAri,
|
|
1543
|
+
parentId = _ref1.parentId,
|
|
1544
|
+
product = _ref1.product;
|
|
1529
1545
|
return {
|
|
1530
1546
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1531
1547
|
cloudId: cloudId,
|
|
1532
|
-
parentAri: parentAri
|
|
1548
|
+
parentAri: parentAri,
|
|
1549
|
+
parentId: parentId,
|
|
1550
|
+
product: product
|
|
1533
1551
|
}),
|
|
1534
1552
|
writeProvider: undefined
|
|
1535
1553
|
};
|
|
@@ -1540,11 +1558,15 @@ var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnl
|
|
|
1540
1558
|
*/
|
|
1541
1559
|
var useMemoizedBlockServiceFetchOnlyAPIProvider = exports.useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref10) {
|
|
1542
1560
|
var cloudId = _ref10.cloudId,
|
|
1543
|
-
parentAri = _ref10.parentAri
|
|
1561
|
+
parentAri = _ref10.parentAri,
|
|
1562
|
+
parentId = _ref10.parentId,
|
|
1563
|
+
product = _ref10.product;
|
|
1544
1564
|
return (0, _react.useMemo)(function () {
|
|
1545
1565
|
return createBlockServiceFetchOnlyAPIProvider({
|
|
1546
1566
|
cloudId: cloudId,
|
|
1547
|
-
parentAri: parentAri
|
|
1567
|
+
parentAri: parentAri,
|
|
1568
|
+
parentId: parentId,
|
|
1569
|
+
product: product
|
|
1548
1570
|
});
|
|
1549
|
-
}, [cloudId, parentAri]);
|
|
1571
|
+
}, [cloudId, parentAri, parentId, product]);
|
|
1550
1572
|
};
|
|
@@ -15,6 +15,7 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
15
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
16
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
17
|
var _react = require("react");
|
|
18
|
+
var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
|
|
18
19
|
var _ari = require("../clients/block-service/ari");
|
|
19
20
|
var _ari2 = require("../clients/confluence/ari");
|
|
20
21
|
var _sourceInfo2 = require("../clients/confluence/sourceInfo");
|
|
@@ -404,14 +405,13 @@ var SyncedBlockProvider = exports.SyncedBlockProvider = /*#__PURE__*/function (_
|
|
|
404
405
|
resourceId: resourceId
|
|
405
406
|
};
|
|
406
407
|
}
|
|
407
|
-
}, {
|
|
408
|
-
key: "canGenerateResourceIdForReference",
|
|
409
|
-
value: function canGenerateResourceIdForReference() {
|
|
410
|
-
return this.writeProvider !== undefined;
|
|
411
|
-
}
|
|
412
408
|
}, {
|
|
413
409
|
key: "generateResourceIdForReference",
|
|
414
410
|
value: function generateResourceIdForReference(sourceId) {
|
|
411
|
+
if ((0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_blocks_patch_12')) {
|
|
412
|
+
var _this$fetchProvider$g, _this$fetchProvider$g2, _this$fetchProvider;
|
|
413
|
+
return (_this$fetchProvider$g = (_this$fetchProvider$g2 = (_this$fetchProvider = this.fetchProvider).generateResourceIdForReference) === null || _this$fetchProvider$g2 === void 0 ? void 0 : _this$fetchProvider$g2.call(_this$fetchProvider, sourceId)) !== null && _this$fetchProvider$g !== void 0 ? _this$fetchProvider$g : sourceId;
|
|
414
|
+
}
|
|
415
415
|
if (!this.writeProvider) {
|
|
416
416
|
throw new Error('Write provider not set');
|
|
417
417
|
}
|
|
@@ -273,9 +273,8 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
273
273
|
}, {
|
|
274
274
|
key: "getSameDocumentReferenceParts",
|
|
275
275
|
value: function getSameDocumentReferenceParts(resourceId) {
|
|
276
|
-
var _this$dataProvider$ca, _this$dataProvider3;
|
|
277
276
|
var parsed = (0, _resourceId.parseResourceId)(resourceId);
|
|
278
|
-
if (!parsed || !this.dataProvider ||
|
|
277
|
+
if (!parsed || !this.dataProvider || this.dataProvider.generateResourceIdForReference(parsed.uuid) !== resourceId) {
|
|
279
278
|
return undefined;
|
|
280
279
|
}
|
|
281
280
|
return parsed;
|
|
@@ -787,8 +786,8 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
787
786
|
var sanitizedSyncBlock = this.normalizeReferenceData(syncBlock);
|
|
788
787
|
var resourceId = sanitizedSyncBlock.resourceId;
|
|
789
788
|
if (resourceId) {
|
|
790
|
-
var _this$
|
|
791
|
-
(_this$
|
|
789
|
+
var _this$dataProvider3;
|
|
790
|
+
(_this$dataProvider3 = this.dataProvider) === null || _this$dataProvider3 === void 0 || _this$dataProvider3.updateCache((0, _defineProperty2.default)({}, resourceId, sanitizedSyncBlock), {
|
|
792
791
|
strategy: 'merge',
|
|
793
792
|
source: 'network'
|
|
794
793
|
});
|
|
@@ -799,15 +798,15 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
799
798
|
}, {
|
|
800
799
|
key: "getFromCache",
|
|
801
800
|
value: function getFromCache(resourceId) {
|
|
802
|
-
var _this$
|
|
801
|
+
var _this$dataProvider4;
|
|
803
802
|
var syncBlockNode = (0, _utils.createSyncBlockNode)('', resourceId);
|
|
804
|
-
return (_this$
|
|
803
|
+
return (_this$dataProvider4 = this.dataProvider) === null || _this$dataProvider4 === void 0 || (_this$dataProvider4 = _this$dataProvider4.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider4 === void 0 ? void 0 : _this$dataProvider4.data;
|
|
805
804
|
}
|
|
806
805
|
}, {
|
|
807
806
|
key: "deleteFromCache",
|
|
808
807
|
value: function deleteFromCache(resourceId) {
|
|
809
|
-
var _this$
|
|
810
|
-
(_this$
|
|
808
|
+
var _this$dataProvider5;
|
|
809
|
+
(_this$dataProvider5 = this.dataProvider) === null || _this$dataProvider5 === void 0 || _this$dataProvider5.removeFromCache([resourceId]);
|
|
811
810
|
this._providerFactoryManager.deleteFactory(resourceId);
|
|
812
811
|
// Evict in-flight source-info promise and reset reschedule counter
|
|
813
812
|
// so a stale resolution can't silently merge into a re-fetched entry.
|
|
@@ -1291,7 +1290,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
1291
1290
|
}, {
|
|
1292
1291
|
key: "destroy",
|
|
1293
1292
|
value: function destroy() {
|
|
1294
|
-
var _this$
|
|
1293
|
+
var _this$dataProvider6, _this$saveExperience5, _this$fetchExperience0, _this$fetchSourceInfo2;
|
|
1295
1294
|
// Mark destroyed first so in-flight timer callbacks can early-return.
|
|
1296
1295
|
this.isDestroyed = true;
|
|
1297
1296
|
|
|
@@ -1317,7 +1316,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
1317
1316
|
this._subscriptionManager.destroy();
|
|
1318
1317
|
this._providerFactoryManager.destroy();
|
|
1319
1318
|
this._batchFetcher.destroy();
|
|
1320
|
-
(_this$
|
|
1319
|
+
(_this$dataProvider6 = this.dataProvider) === null || _this$dataProvider6 === void 0 || _this$dataProvider6.resetCache();
|
|
1321
1320
|
this.dataProvider = undefined;
|
|
1322
1321
|
this.syncBlockFetchDataRequests.clear();
|
|
1323
1322
|
this.syncBlockSourceInfoRequests.clear();
|
|
@@ -414,10 +414,20 @@ export const writeDataBatch = async (cloudId, parentAri, parentId, product, data
|
|
|
414
414
|
class BlockServiceADFFetchProvider {
|
|
415
415
|
constructor({
|
|
416
416
|
cloudId,
|
|
417
|
-
parentAri
|
|
417
|
+
parentAri,
|
|
418
|
+
parentId,
|
|
419
|
+
product
|
|
418
420
|
}) {
|
|
419
421
|
this.cloudId = cloudId;
|
|
420
422
|
this.parentAri = parentAri;
|
|
423
|
+
this.parentId = parentId;
|
|
424
|
+
this.product = product;
|
|
425
|
+
}
|
|
426
|
+
generateResourceIdForReference(sourceId) {
|
|
427
|
+
if (!this.product || !this.parentId) {
|
|
428
|
+
return sourceId;
|
|
429
|
+
}
|
|
430
|
+
return createResourceIdForReference(this.product, this.parentId, sourceId);
|
|
421
431
|
}
|
|
422
432
|
|
|
423
433
|
// resourceId of the reference synced block.
|
|
@@ -975,7 +985,9 @@ const createBlockServiceAPIProviders = ({
|
|
|
975
985
|
return {
|
|
976
986
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
977
987
|
cloudId,
|
|
978
|
-
parentAri
|
|
988
|
+
parentAri,
|
|
989
|
+
parentId,
|
|
990
|
+
product
|
|
979
991
|
}),
|
|
980
992
|
writeProvider: new BlockServiceADFWriteProvider({
|
|
981
993
|
cloudId,
|
|
@@ -1005,12 +1017,16 @@ export const useMemoizedBlockServiceAPIProviders = ({
|
|
|
1005
1017
|
};
|
|
1006
1018
|
const createBlockServiceFetchOnlyAPIProvider = ({
|
|
1007
1019
|
cloudId,
|
|
1008
|
-
parentAri
|
|
1020
|
+
parentAri,
|
|
1021
|
+
parentId,
|
|
1022
|
+
product
|
|
1009
1023
|
}) => {
|
|
1010
1024
|
return {
|
|
1011
1025
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1012
1026
|
cloudId,
|
|
1013
|
-
parentAri
|
|
1027
|
+
parentAri,
|
|
1028
|
+
parentId,
|
|
1029
|
+
product
|
|
1014
1030
|
}),
|
|
1015
1031
|
writeProvider: undefined
|
|
1016
1032
|
};
|
|
@@ -1021,8 +1037,12 @@ const createBlockServiceFetchOnlyAPIProvider = ({
|
|
|
1021
1037
|
*/
|
|
1022
1038
|
export const useMemoizedBlockServiceFetchOnlyAPIProvider = ({
|
|
1023
1039
|
cloudId,
|
|
1024
|
-
parentAri
|
|
1040
|
+
parentAri,
|
|
1041
|
+
parentId,
|
|
1042
|
+
product
|
|
1025
1043
|
}) => useMemo(() => createBlockServiceFetchOnlyAPIProvider({
|
|
1026
1044
|
cloudId,
|
|
1027
|
-
parentAri
|
|
1028
|
-
|
|
1045
|
+
parentAri,
|
|
1046
|
+
parentId,
|
|
1047
|
+
product
|
|
1048
|
+
}), [cloudId, parentAri, parentId, product]);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import { useMemo, useRef } from 'react';
|
|
3
|
+
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
3
4
|
import { getProductFromSourceAri } from '../clients/block-service/ari';
|
|
4
5
|
import { getPageIdAndTypeFromConfluencePageAri } from '../clients/confluence/ari';
|
|
5
6
|
import { fetchConfluencePageInfo } from '../clients/confluence/sourceInfo';
|
|
@@ -256,10 +257,11 @@ export class SyncedBlockProvider extends SyncBlockDataProviderInterface {
|
|
|
256
257
|
resourceId
|
|
257
258
|
};
|
|
258
259
|
}
|
|
259
|
-
canGenerateResourceIdForReference() {
|
|
260
|
-
return this.writeProvider !== undefined;
|
|
261
|
-
}
|
|
262
260
|
generateResourceIdForReference(sourceId) {
|
|
261
|
+
if (isExperimentEnabled('platform_editor_blocks_patch_12')) {
|
|
262
|
+
var _this$fetchProvider$g, _this$fetchProvider$g2, _this$fetchProvider;
|
|
263
|
+
return (_this$fetchProvider$g = (_this$fetchProvider$g2 = (_this$fetchProvider = this.fetchProvider).generateResourceIdForReference) === null || _this$fetchProvider$g2 === void 0 ? void 0 : _this$fetchProvider$g2.call(_this$fetchProvider, sourceId)) !== null && _this$fetchProvider$g !== void 0 ? _this$fetchProvider$g : sourceId;
|
|
264
|
+
}
|
|
263
265
|
if (!this.writeProvider) {
|
|
264
266
|
throw new Error('Write provider not set');
|
|
265
267
|
}
|
|
@@ -193,9 +193,8 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
193
193
|
return this.getFromSessionCache(resourceId);
|
|
194
194
|
}
|
|
195
195
|
getSameDocumentReferenceParts(resourceId) {
|
|
196
|
-
var _this$dataProvider$ca, _this$dataProvider3;
|
|
197
196
|
const parsed = parseResourceId(resourceId);
|
|
198
|
-
if (!parsed || !this.dataProvider ||
|
|
197
|
+
if (!parsed || !this.dataProvider || this.dataProvider.generateResourceIdForReference(parsed.uuid) !== resourceId) {
|
|
199
198
|
return undefined;
|
|
200
199
|
}
|
|
201
200
|
return parsed;
|
|
@@ -649,8 +648,8 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
649
648
|
resourceId
|
|
650
649
|
} = sanitizedSyncBlock;
|
|
651
650
|
if (resourceId) {
|
|
652
|
-
var _this$
|
|
653
|
-
(_this$
|
|
651
|
+
var _this$dataProvider3;
|
|
652
|
+
(_this$dataProvider3 = this.dataProvider) === null || _this$dataProvider3 === void 0 ? void 0 : _this$dataProvider3.updateCache({
|
|
654
653
|
[resourceId]: sanitizedSyncBlock
|
|
655
654
|
}, {
|
|
656
655
|
strategy: 'merge',
|
|
@@ -661,13 +660,13 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
661
660
|
}
|
|
662
661
|
}
|
|
663
662
|
getFromCache(resourceId) {
|
|
664
|
-
var _this$
|
|
663
|
+
var _this$dataProvider4, _this$dataProvider4$g;
|
|
665
664
|
const syncBlockNode = createSyncBlockNode('', resourceId);
|
|
666
|
-
return (_this$
|
|
665
|
+
return (_this$dataProvider4 = this.dataProvider) === null || _this$dataProvider4 === void 0 ? void 0 : (_this$dataProvider4$g = _this$dataProvider4.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider4$g === void 0 ? void 0 : _this$dataProvider4$g.data;
|
|
667
666
|
}
|
|
668
667
|
deleteFromCache(resourceId) {
|
|
669
|
-
var _this$
|
|
670
|
-
(_this$
|
|
668
|
+
var _this$dataProvider5;
|
|
669
|
+
(_this$dataProvider5 = this.dataProvider) === null || _this$dataProvider5 === void 0 ? void 0 : _this$dataProvider5.removeFromCache([resourceId]);
|
|
671
670
|
this._providerFactoryManager.deleteFactory(resourceId);
|
|
672
671
|
// Evict in-flight source-info promise and reset reschedule counter
|
|
673
672
|
// so a stale resolution can't silently merge into a re-fetched entry.
|
|
@@ -1054,7 +1053,7 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
1054
1053
|
return success;
|
|
1055
1054
|
}
|
|
1056
1055
|
destroy() {
|
|
1057
|
-
var _this$
|
|
1056
|
+
var _this$dataProvider6, _this$saveExperience5, _this$fetchExperience0, _this$fetchSourceInfo7;
|
|
1058
1057
|
// Mark destroyed first so in-flight timer callbacks can early-return.
|
|
1059
1058
|
this.isDestroyed = true;
|
|
1060
1059
|
|
|
@@ -1076,7 +1075,7 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
1076
1075
|
this._subscriptionManager.destroy();
|
|
1077
1076
|
this._providerFactoryManager.destroy();
|
|
1078
1077
|
this._batchFetcher.destroy();
|
|
1079
|
-
(_this$
|
|
1078
|
+
(_this$dataProvider6 = this.dataProvider) === null || _this$dataProvider6 === void 0 ? void 0 : _this$dataProvider6.resetCache();
|
|
1080
1079
|
this.dataProvider = undefined;
|
|
1081
1080
|
this.syncBlockFetchDataRequests.clear();
|
|
1082
1081
|
this.syncBlockSourceInfoRequests.clear();
|
|
@@ -600,15 +600,27 @@ export var writeDataBatch = /*#__PURE__*/function () {
|
|
|
600
600
|
var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
601
601
|
function BlockServiceADFFetchProvider(_ref5) {
|
|
602
602
|
var cloudId = _ref5.cloudId,
|
|
603
|
-
parentAri = _ref5.parentAri
|
|
603
|
+
parentAri = _ref5.parentAri,
|
|
604
|
+
parentId = _ref5.parentId,
|
|
605
|
+
product = _ref5.product;
|
|
604
606
|
_classCallCheck(this, BlockServiceADFFetchProvider);
|
|
605
607
|
this.cloudId = cloudId;
|
|
606
608
|
this.parentAri = parentAri;
|
|
609
|
+
this.parentId = parentId;
|
|
610
|
+
this.product = product;
|
|
607
611
|
}
|
|
608
|
-
|
|
609
|
-
// resourceId of the reference synced block.
|
|
610
|
-
// the ARI must be constructed to call the block service API
|
|
611
612
|
return _createClass(BlockServiceADFFetchProvider, [{
|
|
613
|
+
key: "generateResourceIdForReference",
|
|
614
|
+
value: function generateResourceIdForReference(sourceId) {
|
|
615
|
+
if (!this.product || !this.parentId) {
|
|
616
|
+
return sourceId;
|
|
617
|
+
}
|
|
618
|
+
return createResourceIdForReference(this.product, this.parentId, sourceId);
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
// resourceId of the reference synced block.
|
|
622
|
+
// the ARI must be constructed to call the block service API
|
|
623
|
+
}, {
|
|
612
624
|
key: "fetchData",
|
|
613
625
|
value: function () {
|
|
614
626
|
var _fetchData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(resourceId) {
|
|
@@ -1488,7 +1500,9 @@ var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_re
|
|
|
1488
1500
|
return {
|
|
1489
1501
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1490
1502
|
cloudId: cloudId,
|
|
1491
|
-
parentAri: parentAri
|
|
1503
|
+
parentAri: parentAri,
|
|
1504
|
+
parentId: parentId,
|
|
1505
|
+
product: product
|
|
1492
1506
|
}),
|
|
1493
1507
|
writeProvider: new BlockServiceADFWriteProvider({
|
|
1494
1508
|
cloudId: cloudId,
|
|
@@ -1517,11 +1531,15 @@ export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServic
|
|
|
1517
1531
|
};
|
|
1518
1532
|
var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(_ref1) {
|
|
1519
1533
|
var cloudId = _ref1.cloudId,
|
|
1520
|
-
parentAri = _ref1.parentAri
|
|
1534
|
+
parentAri = _ref1.parentAri,
|
|
1535
|
+
parentId = _ref1.parentId,
|
|
1536
|
+
product = _ref1.product;
|
|
1521
1537
|
return {
|
|
1522
1538
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1523
1539
|
cloudId: cloudId,
|
|
1524
|
-
parentAri: parentAri
|
|
1540
|
+
parentAri: parentAri,
|
|
1541
|
+
parentId: parentId,
|
|
1542
|
+
product: product
|
|
1525
1543
|
}),
|
|
1526
1544
|
writeProvider: undefined
|
|
1527
1545
|
};
|
|
@@ -1532,11 +1550,15 @@ var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnl
|
|
|
1532
1550
|
*/
|
|
1533
1551
|
export var useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref10) {
|
|
1534
1552
|
var cloudId = _ref10.cloudId,
|
|
1535
|
-
parentAri = _ref10.parentAri
|
|
1553
|
+
parentAri = _ref10.parentAri,
|
|
1554
|
+
parentId = _ref10.parentId,
|
|
1555
|
+
product = _ref10.product;
|
|
1536
1556
|
return useMemo(function () {
|
|
1537
1557
|
return createBlockServiceFetchOnlyAPIProvider({
|
|
1538
1558
|
cloudId: cloudId,
|
|
1539
|
-
parentAri: parentAri
|
|
1559
|
+
parentAri: parentAri,
|
|
1560
|
+
parentId: parentId,
|
|
1561
|
+
product: product
|
|
1540
1562
|
});
|
|
1541
|
-
}, [cloudId, parentAri]);
|
|
1563
|
+
}, [cloudId, parentAri, parentId, product]);
|
|
1542
1564
|
};
|
|
@@ -12,6 +12,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
12
12
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
13
13
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
14
14
|
import { useMemo, useRef } from 'react';
|
|
15
|
+
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
15
16
|
import { getProductFromSourceAri } from '../clients/block-service/ari';
|
|
16
17
|
import { getPageIdAndTypeFromConfluencePageAri } from '../clients/confluence/ari';
|
|
17
18
|
import { fetchConfluencePageInfo } from '../clients/confluence/sourceInfo';
|
|
@@ -397,14 +398,13 @@ export var SyncedBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
397
398
|
resourceId: resourceId
|
|
398
399
|
};
|
|
399
400
|
}
|
|
400
|
-
}, {
|
|
401
|
-
key: "canGenerateResourceIdForReference",
|
|
402
|
-
value: function canGenerateResourceIdForReference() {
|
|
403
|
-
return this.writeProvider !== undefined;
|
|
404
|
-
}
|
|
405
401
|
}, {
|
|
406
402
|
key: "generateResourceIdForReference",
|
|
407
403
|
value: function generateResourceIdForReference(sourceId) {
|
|
404
|
+
if (isExperimentEnabled('platform_editor_blocks_patch_12')) {
|
|
405
|
+
var _this$fetchProvider$g, _this$fetchProvider$g2, _this$fetchProvider;
|
|
406
|
+
return (_this$fetchProvider$g = (_this$fetchProvider$g2 = (_this$fetchProvider = this.fetchProvider).generateResourceIdForReference) === null || _this$fetchProvider$g2 === void 0 ? void 0 : _this$fetchProvider$g2.call(_this$fetchProvider, sourceId)) !== null && _this$fetchProvider$g !== void 0 ? _this$fetchProvider$g : sourceId;
|
|
407
|
+
}
|
|
408
408
|
if (!this.writeProvider) {
|
|
409
409
|
throw new Error('Write provider not set');
|
|
410
410
|
}
|
|
@@ -266,9 +266,8 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
266
266
|
}, {
|
|
267
267
|
key: "getSameDocumentReferenceParts",
|
|
268
268
|
value: function getSameDocumentReferenceParts(resourceId) {
|
|
269
|
-
var _this$dataProvider$ca, _this$dataProvider3;
|
|
270
269
|
var parsed = parseResourceId(resourceId);
|
|
271
|
-
if (!parsed || !this.dataProvider ||
|
|
270
|
+
if (!parsed || !this.dataProvider || this.dataProvider.generateResourceIdForReference(parsed.uuid) !== resourceId) {
|
|
272
271
|
return undefined;
|
|
273
272
|
}
|
|
274
273
|
return parsed;
|
|
@@ -780,8 +779,8 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
780
779
|
var sanitizedSyncBlock = this.normalizeReferenceData(syncBlock);
|
|
781
780
|
var resourceId = sanitizedSyncBlock.resourceId;
|
|
782
781
|
if (resourceId) {
|
|
783
|
-
var _this$
|
|
784
|
-
(_this$
|
|
782
|
+
var _this$dataProvider3;
|
|
783
|
+
(_this$dataProvider3 = this.dataProvider) === null || _this$dataProvider3 === void 0 || _this$dataProvider3.updateCache(_defineProperty({}, resourceId, sanitizedSyncBlock), {
|
|
785
784
|
strategy: 'merge',
|
|
786
785
|
source: 'network'
|
|
787
786
|
});
|
|
@@ -792,15 +791,15 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
792
791
|
}, {
|
|
793
792
|
key: "getFromCache",
|
|
794
793
|
value: function getFromCache(resourceId) {
|
|
795
|
-
var _this$
|
|
794
|
+
var _this$dataProvider4;
|
|
796
795
|
var syncBlockNode = createSyncBlockNode('', resourceId);
|
|
797
|
-
return (_this$
|
|
796
|
+
return (_this$dataProvider4 = this.dataProvider) === null || _this$dataProvider4 === void 0 || (_this$dataProvider4 = _this$dataProvider4.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider4 === void 0 ? void 0 : _this$dataProvider4.data;
|
|
798
797
|
}
|
|
799
798
|
}, {
|
|
800
799
|
key: "deleteFromCache",
|
|
801
800
|
value: function deleteFromCache(resourceId) {
|
|
802
|
-
var _this$
|
|
803
|
-
(_this$
|
|
801
|
+
var _this$dataProvider5;
|
|
802
|
+
(_this$dataProvider5 = this.dataProvider) === null || _this$dataProvider5 === void 0 || _this$dataProvider5.removeFromCache([resourceId]);
|
|
804
803
|
this._providerFactoryManager.deleteFactory(resourceId);
|
|
805
804
|
// Evict in-flight source-info promise and reset reschedule counter
|
|
806
805
|
// so a stale resolution can't silently merge into a re-fetched entry.
|
|
@@ -1284,7 +1283,7 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
1284
1283
|
}, {
|
|
1285
1284
|
key: "destroy",
|
|
1286
1285
|
value: function destroy() {
|
|
1287
|
-
var _this$
|
|
1286
|
+
var _this$dataProvider6, _this$saveExperience5, _this$fetchExperience0, _this$fetchSourceInfo2;
|
|
1288
1287
|
// Mark destroyed first so in-flight timer callbacks can early-return.
|
|
1289
1288
|
this.isDestroyed = true;
|
|
1290
1289
|
|
|
@@ -1310,7 +1309,7 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
1310
1309
|
this._subscriptionManager.destroy();
|
|
1311
1310
|
this._providerFactoryManager.destroy();
|
|
1312
1311
|
this._batchFetcher.destroy();
|
|
1313
|
-
(_this$
|
|
1312
|
+
(_this$dataProvider6 = this.dataProvider) === null || _this$dataProvider6 === void 0 || _this$dataProvider6.resetCache();
|
|
1314
1313
|
this.dataProvider = undefined;
|
|
1315
1314
|
this.syncBlockFetchDataRequests.clear();
|
|
1316
1315
|
this.syncBlockSourceInfoRequests.clear();
|
|
@@ -49,6 +49,8 @@ export declare const writeDataBatch: (cloudId: string, parentAri: string | undef
|
|
|
49
49
|
interface BlockServiceADFFetchProviderProps {
|
|
50
50
|
cloudId: string;
|
|
51
51
|
parentAri: string | undefined;
|
|
52
|
+
parentId?: string;
|
|
53
|
+
product?: SyncBlockProduct;
|
|
52
54
|
}
|
|
53
55
|
/**
|
|
54
56
|
* ADFFetchProvider implementation that fetches synced block data from Block Service API
|
|
@@ -56,7 +58,10 @@ interface BlockServiceADFFetchProviderProps {
|
|
|
56
58
|
declare class BlockServiceADFFetchProvider implements ADFFetchProvider {
|
|
57
59
|
private cloudId;
|
|
58
60
|
private parentAri;
|
|
59
|
-
|
|
61
|
+
private parentId?;
|
|
62
|
+
private product?;
|
|
63
|
+
constructor({ cloudId, parentAri, parentId, product }: BlockServiceADFFetchProviderProps);
|
|
64
|
+
generateResourceIdForReference(sourceId: ResourceId): ResourceId;
|
|
60
65
|
fetchData(resourceId: string): Promise<SyncBlockInstance>;
|
|
61
66
|
fetchReferences(referenceResourceId: string): Promise<ReferenceSyncBlockData>;
|
|
62
67
|
/**
|
|
@@ -116,11 +121,13 @@ export declare const useMemoizedBlockServiceAPIProviders: ({ cloudId, parentAri,
|
|
|
116
121
|
interface BlockServiceFetchOnlyAPIProviderProps {
|
|
117
122
|
cloudId: string;
|
|
118
123
|
parentAri: string | undefined;
|
|
124
|
+
parentId?: string;
|
|
125
|
+
product?: SyncBlockProduct;
|
|
119
126
|
}
|
|
120
127
|
/**
|
|
121
128
|
* If the parentAri is not a valid ARI, pass in an empty string.
|
|
122
129
|
*/
|
|
123
|
-
export declare const useMemoizedBlockServiceFetchOnlyAPIProvider: ({ cloudId, parentAri, }: BlockServiceFetchOnlyAPIProviderProps) => {
|
|
130
|
+
export declare const useMemoizedBlockServiceFetchOnlyAPIProvider: ({ cloudId, parentAri, parentId, product, }: BlockServiceFetchOnlyAPIProviderProps) => {
|
|
124
131
|
fetchProvider: BlockServiceADFFetchProvider;
|
|
125
132
|
writeProvider: undefined;
|
|
126
133
|
};
|
|
@@ -74,7 +74,6 @@ export declare class SyncedBlockProvider extends SyncBlockDataProviderInterface
|
|
|
74
74
|
localId: BlockInstanceId;
|
|
75
75
|
resourceId: ResourceId;
|
|
76
76
|
};
|
|
77
|
-
canGenerateResourceIdForReference(): boolean;
|
|
78
77
|
generateResourceIdForReference(sourceId: ResourceId): ResourceId;
|
|
79
78
|
/**
|
|
80
79
|
* Get the synced block renderer provider options
|
|
@@ -151,6 +151,8 @@ export interface ADFFetchProvider {
|
|
|
151
151
|
batchFetchData: (blockNodeIdentifiers: BlockNodeIdentifiers[], config?: BatchFetchConfig) => Promise<SyncBlockInstance[]>;
|
|
152
152
|
fetchData: (resourceId: ResourceId) => Promise<SyncBlockInstance>;
|
|
153
153
|
fetchReferences: (referenceResourceId: string) => Promise<ReferenceSyncBlockData>;
|
|
154
|
+
/** Returns an unscoped sourceId when the host document identity is unavailable. */
|
|
155
|
+
generateResourceIdForReference?: (sourceId: ResourceId) => ResourceId;
|
|
154
156
|
/**
|
|
155
157
|
* Subscribes to real-time updates for a specific block.
|
|
156
158
|
*/
|
|
@@ -224,7 +226,6 @@ export declare abstract class SyncBlockDataProviderInterface extends NodeDataPro
|
|
|
224
226
|
* @returns The generated resource ID
|
|
225
227
|
*/
|
|
226
228
|
abstract generateResourceIdForReference(sourceId: ResourceId): ResourceId;
|
|
227
|
-
canGenerateResourceIdForReference?(): boolean;
|
|
228
229
|
abstract updateReferenceData(blocks: SyncBlockAttrs[], noContent?: boolean): Promise<UpdateReferenceSyncBlockResult>;
|
|
229
230
|
abstract fetchReferences(resourceId: string, isSource: boolean): Promise<ReferenceSyncBlockData>;
|
|
230
231
|
/**
|
package/package.json
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"uuid": "^11.1.1"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"@atlaskit/editor-common": "^131.
|
|
36
|
+
"@atlaskit/editor-common": "^131.6.0",
|
|
37
37
|
"react": "^18.2.0 || ^19.2.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"react-dom": "^19.2.0"
|
|
43
43
|
},
|
|
44
44
|
"name": "@atlaskit/editor-synced-block-provider",
|
|
45
|
-
"version": "23.1.
|
|
45
|
+
"version": "23.1.1",
|
|
46
46
|
"description": "Synced Block Provider for @atlaskit/editor-plugin-synced-block",
|
|
47
47
|
"author": "Atlassian Pty Ltd",
|
|
48
48
|
"license": "Apache-2.0",
|