@atlaskit/editor-synced-block-provider 3.30.5 → 3.31.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 +21 -0
- package/dist/cjs/clients/block-service/blockService.js +121 -17
- package/dist/cjs/clients/block-service/blockSubscription.js +48 -3
- package/dist/cjs/clients/confluence/fetchMediaToken.js +7 -5
- package/dist/cjs/hooks/useFetchSyncBlockTitle.js +40 -2
- package/dist/cjs/hooks/useHandleContentChanges.js +3 -0
- package/dist/cjs/index.js +12 -33
- package/dist/cjs/providers/block-service/blockServiceAPI.js +509 -185
- package/dist/cjs/providers/syncBlockProvider.js +68 -6
- package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +3 -0
- package/dist/cjs/store-manager/syncBlockStoreManager.js +20 -5
- package/dist/cjs/utils/experienceTracking.js +10 -10
- package/dist/cjs/utils/resourceId.js +2 -2
- package/dist/cjs/utils/retry.js +33 -7
- package/dist/cjs/utils/utils.js +1 -1
- package/dist/cjs/utils/validValue.js +2 -1
- package/dist/es2019/clients/block-service/blockService.js +108 -13
- package/dist/es2019/clients/block-service/blockSubscription.js +62 -2
- package/dist/es2019/clients/confluence/fetchMediaToken.js +5 -3
- package/dist/es2019/hooks/useFetchSyncBlockTitle.js +36 -3
- package/dist/es2019/hooks/useHandleContentChanges.js +3 -0
- package/dist/es2019/index.js +2 -6
- package/dist/es2019/providers/block-service/blockServiceAPI.js +172 -23
- package/dist/es2019/providers/syncBlockProvider.js +56 -3
- package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +3 -0
- package/dist/es2019/store-manager/syncBlockStoreManager.js +19 -6
- package/dist/es2019/utils/experienceTracking.js +10 -10
- package/dist/es2019/utils/resourceId.js +2 -2
- package/dist/es2019/utils/retry.js +26 -6
- package/dist/es2019/utils/utils.js +1 -1
- package/dist/es2019/utils/validValue.js +2 -1
- package/dist/esm/clients/block-service/blockService.js +120 -16
- package/dist/esm/clients/block-service/blockSubscription.js +47 -2
- package/dist/esm/clients/confluence/fetchMediaToken.js +7 -5
- package/dist/esm/hooks/useFetchSyncBlockTitle.js +41 -3
- package/dist/esm/hooks/useHandleContentChanges.js +3 -0
- package/dist/esm/index.js +2 -6
- package/dist/esm/providers/block-service/blockServiceAPI.js +513 -189
- package/dist/esm/providers/syncBlockProvider.js +69 -7
- package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +3 -0
- package/dist/esm/store-manager/syncBlockStoreManager.js +21 -6
- package/dist/esm/utils/experienceTracking.js +10 -10
- package/dist/esm/utils/resourceId.js +2 -2
- package/dist/esm/utils/retry.js +33 -7
- package/dist/esm/utils/utils.js +1 -1
- package/dist/esm/utils/validValue.js +2 -1
- package/dist/types/clients/block-service/blockService.d.ts +36 -0
- package/dist/types/clients/block-service/blockSubscription.d.ts +26 -1
- package/dist/types/index.d.ts +2 -6
- package/dist/types/providers/block-service/blockServiceAPI.d.ts +15 -7
- package/dist/types/providers/syncBlockProvider.d.ts +1 -1
- package/dist/types/providers/types.d.ts +6 -0
- package/dist/types/store-manager/syncBlockStoreManager.d.ts +1 -1
- package/dist/types/utils/experienceTracking.d.ts +10 -10
- package/dist/types-ts4.5/clients/block-service/blockService.d.ts +36 -0
- package/dist/types-ts4.5/clients/block-service/blockSubscription.d.ts +26 -1
- package/dist/types-ts4.5/index.d.ts +2 -6
- package/dist/types-ts4.5/providers/block-service/blockServiceAPI.d.ts +15 -7
- package/dist/types-ts4.5/providers/syncBlockProvider.d.ts +1 -1
- package/dist/types-ts4.5/providers/types.d.ts +6 -0
- package/dist/types-ts4.5/store-manager/syncBlockStoreManager.d.ts +1 -1
- package/dist/types-ts4.5/utils/experienceTracking.d.ts +10 -10
- package/package.json +5 -2
- package/dist/cjs/clients/block-service/sharedSubscriptionUtils.js +0 -82
- package/dist/cjs/utils/__generated__/relaySubscriptionUtilsSubscription.graphql.js +0 -94
- package/dist/cjs/utils/relayResponseConverter.js +0 -76
- package/dist/cjs/utils/relaySubscriptionUtils.js +0 -130
- package/dist/es2019/clients/block-service/sharedSubscriptionUtils.js +0 -91
- package/dist/es2019/utils/__generated__/relaySubscriptionUtilsSubscription.graphql.js +0 -88
- package/dist/es2019/utils/relayResponseConverter.js +0 -69
- package/dist/es2019/utils/relaySubscriptionUtils.js +0 -125
- package/dist/esm/clients/block-service/sharedSubscriptionUtils.js +0 -76
- package/dist/esm/utils/__generated__/relaySubscriptionUtilsSubscription.graphql.js +0 -88
- package/dist/esm/utils/relayResponseConverter.js +0 -69
- package/dist/esm/utils/relaySubscriptionUtils.js +0 -123
- package/dist/types/clients/block-service/sharedSubscriptionUtils.d.ts +0 -61
- package/dist/types/utils/__generated__/relaySubscriptionUtilsSubscription.graphql.d.ts +0 -31
- package/dist/types/utils/relayResponseConverter.d.ts +0 -47
- package/dist/types/utils/relaySubscriptionUtils.d.ts +0 -61
- package/dist/types-ts4.5/clients/block-service/sharedSubscriptionUtils.d.ts +0 -61
- package/dist/types-ts4.5/utils/__generated__/relaySubscriptionUtilsSubscription.graphql.d.ts +0 -31
- package/dist/types-ts4.5/utils/relayResponseConverter.d.ts +0 -47
- package/dist/types-ts4.5/utils/relaySubscriptionUtils.d.ts +0 -61
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-provider
|
|
2
2
|
|
|
3
|
+
## 3.31.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`6590226f4f11a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6590226f4f11a) -
|
|
8
|
+
EDITOR-2914 implement bulk update for synced blocks
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- [`f4633c591d70f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/f4633c591d70f) -
|
|
13
|
+
Revert 610719f because the query stopped sending
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
|
|
16
|
+
## 3.30.6
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- [`e18437c28f9ab`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e18437c28f9ab) -
|
|
21
|
+
Improve synced blocks robustness.
|
|
22
|
+
- Updated dependencies
|
|
23
|
+
|
|
3
24
|
## 3.30.5
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateSyncedBlock = exports.updateReferenceSyncedBlockOnDocument = exports.isBlockContentResponse = exports.getSyncedBlockContent = exports.getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocks = exports.deleteSyncedBlock = exports.createSyncedBlock = exports.batchRetrieveSyncedBlocks = exports.BlockError = void 0;
|
|
7
|
+
exports.updateSyncedBlocks = exports.updateSyncedBlock = exports.updateReferenceSyncedBlockOnDocument = exports.isBlockContentResponse = exports.getSyncedBlockContent = exports.getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocks = exports.deleteSyncedBlock = exports.createSyncedBlock = exports.batchRetrieveSyncedBlocks = exports.BlockError = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -129,8 +129,9 @@ var UPDATE_DOCUMENT_REFERENCES_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_UPDATE_DOCU
|
|
|
129
129
|
var BATCH_RETRIEVE_BLOCKS_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_BATCH_RETRIEVE_BLOCKS';
|
|
130
130
|
var GET_BLOCK_REFERENCES_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_GET_REFERENCES';
|
|
131
131
|
var GET_BLOCK_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_GET_BLOCK';
|
|
132
|
+
var BATCH_UPDATE_BLOCKS_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_BATCH_UPDATE_BLOCKS';
|
|
132
133
|
var buildGetDocumentReferenceBlocksQuery = function buildGetDocumentReferenceBlocksQuery(documentAri) {
|
|
133
|
-
return "query ".concat(GET_DOCUMENT_REFERENCE_BLOCKS_OPERATION_NAME, " {\n\tblockService_getDocumentReferenceBlocks(documentAri: \""
|
|
134
|
+
return "query ".concat(GET_DOCUMENT_REFERENCE_BLOCKS_OPERATION_NAME, " {\n\tblockService_getDocumentReferenceBlocks(documentAri: ").concat((0, _platformFeatureFlags.fg)('platform_synced_block_patch_4') ? JSON.stringify(documentAri) : "\"".concat(documentAri, "\""), ") {\n\t\tblocks {\n\t\t\tblockAri\n\t\t\tblockInstanceId\n\t\t\tcontent\n\t\t\tcontentUpdatedAt\n\t\t\tcreatedAt\n\t\t\tcreatedBy\n\t\t\tproduct\n\t\t\tsourceAri\n\t\t\tstatus\n\t\t\tversion\n\t\t}\n\t\terrors {\n\t\t\tblockAri\n\t\t\tcode\n\t\t\treason\n\t\t}\n\t}\n}");
|
|
134
135
|
};
|
|
135
136
|
var buildGetBlockQuery = function buildGetBlockQuery(blockAri) {
|
|
136
137
|
return "query ".concat(GET_BLOCK_OPERATION_NAME, " {\n\tblockService_getBlock(blockAri: ").concat(JSON.stringify(blockAri), ") {\n\t\tblockAri\n\t\tblockInstanceId\n\t\tcontent\n\t\tcontentUpdatedAt\n\t\tcreatedAt\n\t\tcreatedBy\n\t\tdeletionReason\n\t\tproduct\n\t\tsourceAri\n\t\tstatus\n\t\tversion\n\t}\n}");
|
|
@@ -161,11 +162,17 @@ var buildDeleteBlockMutation = function buildDeleteBlockMutation(blockAri, delet
|
|
|
161
162
|
* 'jira-work-item' -> 'JIRA_WORK_ITEM'
|
|
162
163
|
*/
|
|
163
164
|
var convertProductToGraphQLEnum = function convertProductToGraphQLEnum(product) {
|
|
164
|
-
|
|
165
|
-
|
|
165
|
+
switch (product) {
|
|
166
|
+
case 'confluence-page':
|
|
167
|
+
return 'CONFLUENCE_PAGE';
|
|
168
|
+
case 'jira-work-item':
|
|
169
|
+
return 'JIRA_WORK_ITEM';
|
|
170
|
+
default:
|
|
171
|
+
{
|
|
172
|
+
var exhaustiveCheck = product;
|
|
173
|
+
throw new Error("Unsupported product: ".concat(exhaustiveCheck));
|
|
174
|
+
}
|
|
166
175
|
}
|
|
167
|
-
// product must be 'jira-work-item' at this point
|
|
168
|
-
return 'JIRA_WORK_ITEM';
|
|
169
176
|
};
|
|
170
177
|
var buildCreateBlockMutation = function buildCreateBlockMutation(blockAri, blockInstanceId, content, product, sourceAri, stepVersion, status) {
|
|
171
178
|
var inputParts = ["blockAri: ".concat(JSON.stringify(blockAri)), "blockInstanceId: ".concat(JSON.stringify(blockInstanceId)), "content: ".concat(JSON.stringify(content)), "product: ".concat(convertProductToGraphQLEnum(product)), "sourceAri: ".concat(JSON.stringify(sourceAri))];
|
|
@@ -195,6 +202,19 @@ var buildBatchRetrieveBlocksQuery = function buildBatchRetrieveBlocksQuery(block
|
|
|
195
202
|
var buildGetBlockReferencesQuery = function buildGetBlockReferencesQuery(blockAri) {
|
|
196
203
|
return "query ".concat(GET_BLOCK_REFERENCES_OPERATION_NAME, " {\n\tblockService_getReferences(blockAri: ").concat(JSON.stringify(blockAri), ") {\n\t\treferences {\n\t\t\tblockAri\n\t\t\tblockInstanceId\n\t\t\tcreatedAt\n\t\t\tcreatedBy\n\t\t\tdocumentAri\n\t\t}\n\t\terrors {\n\t\t\tblockAri\n\t\t\tcode\n\t\t\treason\n\t\t}\n\t}\n}");
|
|
197
204
|
};
|
|
205
|
+
var buildBatchUpdateBlocksMutation = function buildBatchUpdateBlocksMutation(blocks) {
|
|
206
|
+
var blocksArray = blocks.map(function (block) {
|
|
207
|
+
var inputParts = ["blockAri: ".concat(JSON.stringify(block.blockAri)), "content: ".concat(JSON.stringify(block.content))];
|
|
208
|
+
if (block.stepVersion !== undefined) {
|
|
209
|
+
inputParts.push("stepVersion: ".concat(block.stepVersion));
|
|
210
|
+
}
|
|
211
|
+
if (block.status !== undefined) {
|
|
212
|
+
inputParts.push("status: ".concat(JSON.stringify(block.status)));
|
|
213
|
+
}
|
|
214
|
+
return "{ ".concat(inputParts.join(', '), " }");
|
|
215
|
+
}).join(', ');
|
|
216
|
+
return "mutation ".concat(BATCH_UPDATE_BLOCKS_OPERATION_NAME, " {\n\tblockService_batchUpdateBlocks(input: { blocks: [").concat(blocksArray, "] }) {\n\t\tsuccess {\n\t\t\tblockAri\n\t\t\tblockInstanceId\n\t\t\tcontent\n\t\t\tcontentUpdatedAt\n\t\t\tcreatedAt\n\t\t\tcreatedBy\n\t\t\tdeletionReason\n\t\t\tproduct\n\t\t\tsourceAri\n\t\t\tstatus\n\t\t\tversion\n\t\t}\n\t\terror {\n\t\t\tblockAri\n\t\t\tcode\n\t\t\treason\n\t\t}\n\t}\n}");
|
|
217
|
+
};
|
|
198
218
|
var BlockError = exports.BlockError = /*#__PURE__*/function (_Error) {
|
|
199
219
|
function BlockError(status) {
|
|
200
220
|
var _this;
|
|
@@ -336,8 +356,8 @@ var batchRetrieveSyncedBlocks = exports.batchRetrieveSyncedBlocks = /*#__PURE__*
|
|
|
336
356
|
}();
|
|
337
357
|
var deleteSyncedBlock = exports.deleteSyncedBlock = /*#__PURE__*/function () {
|
|
338
358
|
var _ref7 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(_ref6) {
|
|
339
|
-
var _result$data3;
|
|
340
|
-
var blockAri, deleteReason, bodyData, url, response, result;
|
|
359
|
+
var _result$data3, _result$data4;
|
|
360
|
+
var blockAri, deleteReason, bodyData, url, response, result, isDeleted;
|
|
341
361
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
342
362
|
while (1) switch (_context4.prev = _context4.next) {
|
|
343
363
|
case 0:
|
|
@@ -373,12 +393,13 @@ var deleteSyncedBlock = exports.deleteSyncedBlock = /*#__PURE__*/function () {
|
|
|
373
393
|
return e.message;
|
|
374
394
|
}).join(', '));
|
|
375
395
|
case 13:
|
|
376
|
-
|
|
377
|
-
|
|
396
|
+
isDeleted = (0, _platformFeatureFlags.fg)('platform_synced_block_patch_4') ? (_result$data3 = result.data) === null || _result$data3 === void 0 || (_result$data3 = _result$data3.blockService_deleteBlock) === null || _result$data3 === void 0 ? void 0 : _result$data3.deleted : (_result$data4 = result.data) === null || _result$data4 === void 0 ? void 0 : _result$data4.blockService_deleteBlock.deleted;
|
|
397
|
+
if (isDeleted) {
|
|
398
|
+
_context4.next = 16;
|
|
378
399
|
break;
|
|
379
400
|
}
|
|
380
401
|
throw new Error('Block deletion failed; deleted flag is false');
|
|
381
|
-
case
|
|
402
|
+
case 16:
|
|
382
403
|
case "end":
|
|
383
404
|
return _context4.stop();
|
|
384
405
|
}
|
|
@@ -437,7 +458,7 @@ var updateSyncedBlock = exports.updateSyncedBlock = /*#__PURE__*/function () {
|
|
|
437
458
|
}();
|
|
438
459
|
var createSyncedBlock = exports.createSyncedBlock = /*#__PURE__*/function () {
|
|
439
460
|
var _ref1 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(_ref0) {
|
|
440
|
-
var _result$
|
|
461
|
+
var _result$data5;
|
|
441
462
|
var blockAri, blockInstanceId, sourceAri, product, content, stepVersion, status, bodyData, url, response, result;
|
|
442
463
|
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
443
464
|
while (1) switch (_context6.prev = _context6.next) {
|
|
@@ -474,7 +495,7 @@ var createSyncedBlock = exports.createSyncedBlock = /*#__PURE__*/function () {
|
|
|
474
495
|
return e.message;
|
|
475
496
|
}).join(', '));
|
|
476
497
|
case 13:
|
|
477
|
-
if ((_result$
|
|
498
|
+
if ((_result$data5 = result.data) !== null && _result$data5 !== void 0 && _result$data5.blockService_createBlock) {
|
|
478
499
|
_context6.next = 15;
|
|
479
500
|
break;
|
|
480
501
|
}
|
|
@@ -493,7 +514,7 @@ var createSyncedBlock = exports.createSyncedBlock = /*#__PURE__*/function () {
|
|
|
493
514
|
}();
|
|
494
515
|
var updateReferenceSyncedBlockOnDocument = exports.updateReferenceSyncedBlockOnDocument = /*#__PURE__*/function () {
|
|
495
516
|
var _ref11 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(_ref10) {
|
|
496
|
-
var documentAri, blocks, _ref10$noContent, noContent, bodyData, url, response, result, _result$
|
|
517
|
+
var documentAri, blocks, _ref10$noContent, noContent, bodyData, url, response, result, _result$data6;
|
|
497
518
|
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
498
519
|
while (1) switch (_context7.prev = _context7.next) {
|
|
499
520
|
case 0:
|
|
@@ -534,7 +555,7 @@ var updateReferenceSyncedBlockOnDocument = exports.updateReferenceSyncedBlockOnD
|
|
|
534
555
|
_context7.next = 17;
|
|
535
556
|
break;
|
|
536
557
|
}
|
|
537
|
-
if ((_result$
|
|
558
|
+
if ((_result$data6 = result.data) !== null && _result$data6 !== void 0 && _result$data6.blockService_updateDocumentReferences) {
|
|
538
559
|
_context7.next = 16;
|
|
539
560
|
break;
|
|
540
561
|
}
|
|
@@ -553,7 +574,7 @@ var updateReferenceSyncedBlockOnDocument = exports.updateReferenceSyncedBlockOnD
|
|
|
553
574
|
}();
|
|
554
575
|
var getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocksByBlockAri = /*#__PURE__*/function () {
|
|
555
576
|
var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(_ref12) {
|
|
556
|
-
var _result$
|
|
577
|
+
var _result$data7;
|
|
557
578
|
var blockAri, bodyData, url, response, result, graphqlResponse;
|
|
558
579
|
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
559
580
|
while (1) switch (_context8.prev = _context8.next) {
|
|
@@ -590,7 +611,7 @@ var getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocksByBlock
|
|
|
590
611
|
return e.message;
|
|
591
612
|
}).join(', '));
|
|
592
613
|
case 13:
|
|
593
|
-
if ((_result$
|
|
614
|
+
if ((_result$data7 = result.data) !== null && _result$data7 !== void 0 && _result$data7.blockService_getReferences) {
|
|
594
615
|
_context8.next = 15;
|
|
595
616
|
break;
|
|
596
617
|
}
|
|
@@ -611,4 +632,87 @@ var getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocksByBlock
|
|
|
611
632
|
return function getReferenceSyncedBlocksByBlockAri(_x8) {
|
|
612
633
|
return _ref13.apply(this, arguments);
|
|
613
634
|
};
|
|
635
|
+
}();
|
|
636
|
+
|
|
637
|
+
/**
|
|
638
|
+
* Batch updates multiple synced blocks.
|
|
639
|
+
*
|
|
640
|
+
* Calls the Block Service GraphQL API: `blockService_batchUpdateBlocks`
|
|
641
|
+
*
|
|
642
|
+
* @param blocks - Array of block updates to apply
|
|
643
|
+
* @returns A promise containing arrays of successfully updated blocks and any errors encountered
|
|
644
|
+
*
|
|
645
|
+
* @example
|
|
646
|
+
* ```typescript
|
|
647
|
+
* const result = await updateSyncedBlocks({
|
|
648
|
+
* blocks: [
|
|
649
|
+
* {
|
|
650
|
+
* blockAri: 'ari:cloud:blocks:site-123:synced-block/uuid-456',
|
|
651
|
+
* content: '{"type":"doc","version":1,"content":[]}',
|
|
652
|
+
* status: 'active',
|
|
653
|
+
* stepVersion: 42
|
|
654
|
+
* }
|
|
655
|
+
* ]
|
|
656
|
+
* });
|
|
657
|
+
* ```
|
|
658
|
+
*/
|
|
659
|
+
var updateSyncedBlocks = exports.updateSyncedBlocks = /*#__PURE__*/function () {
|
|
660
|
+
var _ref15 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(_ref14) {
|
|
661
|
+
var _result$data8;
|
|
662
|
+
var blocks, bodyData, url, response, result, graphqlResponse;
|
|
663
|
+
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
664
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
665
|
+
case 0:
|
|
666
|
+
blocks = _ref14.blocks;
|
|
667
|
+
bodyData = {
|
|
668
|
+
query: buildBatchUpdateBlocksMutation(blocks),
|
|
669
|
+
operationName: BATCH_UPDATE_BLOCKS_OPERATION_NAME
|
|
670
|
+
};
|
|
671
|
+
url = (0, _platformFeatureFlags.fg)('platform_synced_block_patch_3') ? "".concat(GRAPHQL_ENDPOINT, "?operation=editorSyncedBlockBatchUpdateBlocks") : GRAPHQL_ENDPOINT;
|
|
672
|
+
_context9.next = 5;
|
|
673
|
+
return (0, _retry.fetchWithRetry)(url, {
|
|
674
|
+
method: 'POST',
|
|
675
|
+
headers: COMMON_HEADERS,
|
|
676
|
+
body: JSON.stringify(bodyData)
|
|
677
|
+
});
|
|
678
|
+
case 5:
|
|
679
|
+
response = _context9.sent;
|
|
680
|
+
if (response.ok) {
|
|
681
|
+
_context9.next = 8;
|
|
682
|
+
break;
|
|
683
|
+
}
|
|
684
|
+
throw new BlockError(response.status);
|
|
685
|
+
case 8:
|
|
686
|
+
_context9.next = 10;
|
|
687
|
+
return response.json();
|
|
688
|
+
case 10:
|
|
689
|
+
result = _context9.sent;
|
|
690
|
+
if (!(result.errors && result.errors.length > 0)) {
|
|
691
|
+
_context9.next = 13;
|
|
692
|
+
break;
|
|
693
|
+
}
|
|
694
|
+
throw new Error(result.errors.map(function (e) {
|
|
695
|
+
return e.message;
|
|
696
|
+
}).join(', '));
|
|
697
|
+
case 13:
|
|
698
|
+
if ((_result$data8 = result.data) !== null && _result$data8 !== void 0 && _result$data8.blockService_batchUpdateBlocks) {
|
|
699
|
+
_context9.next = 15;
|
|
700
|
+
break;
|
|
701
|
+
}
|
|
702
|
+
throw new Error('No data returned from GraphQL mutation');
|
|
703
|
+
case 15:
|
|
704
|
+
graphqlResponse = result.data.blockService_batchUpdateBlocks;
|
|
705
|
+
return _context9.abrupt("return", {
|
|
706
|
+
success: graphqlResponse.success,
|
|
707
|
+
error: graphqlResponse.error
|
|
708
|
+
});
|
|
709
|
+
case 17:
|
|
710
|
+
case "end":
|
|
711
|
+
return _context9.stop();
|
|
712
|
+
}
|
|
713
|
+
}, _callee9);
|
|
714
|
+
}));
|
|
715
|
+
return function updateSyncedBlocks(_x9) {
|
|
716
|
+
return _ref15.apply(this, arguments);
|
|
717
|
+
};
|
|
614
718
|
}();
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.subscribeToBlockUpdates = void 0;
|
|
7
7
|
var _graphqlWs = require("graphql-ws");
|
|
8
8
|
var _coreUtils = require("@atlaskit/editor-common/core-utils");
|
|
9
|
-
var
|
|
9
|
+
var _utils = require("../../utils/utils");
|
|
10
10
|
var GRAPHQL_WS_ENDPOINT = '/gateway/api/graphql/subscriptions';
|
|
11
11
|
var blockServiceClient = null;
|
|
12
12
|
var getBlockServiceClient = function getBlockServiceClient() {
|
|
@@ -25,6 +25,51 @@ var getBlockServiceClient = function getBlockServiceClient() {
|
|
|
25
25
|
}
|
|
26
26
|
return blockServiceClient;
|
|
27
27
|
};
|
|
28
|
+
var SUBSCRIPTION_QUERY = "\nsubscription EDITOR_SYNCED_BLOCK_ON_BLOCK_UPDATED($resourceId: ID!) {\n\tblockService_onBlockUpdated(resourceId: $resourceId) {\n\t\tblockAri\n\t\tblockInstanceId\n\t\tcontent\n\t\tcontentUpdatedAt\n\t\tcreatedAt\n\t\tcreatedBy\n\t\tdeletionReason\n\t\tproduct\n\t\tsourceAri\n\t\tstatus\n\t}\n}\n";
|
|
29
|
+
/**
|
|
30
|
+
* Extracts the resourceId from a block ARI.
|
|
31
|
+
* Block ARI format: ari:cloud:blocks:<cloudId>:synced-block/<resourceId>
|
|
32
|
+
* @param blockAri - The block ARI string
|
|
33
|
+
* @returns The resourceId portion of the ARI
|
|
34
|
+
*/
|
|
35
|
+
var extractResourceIdFromBlockAri = function extractResourceIdFromBlockAri(blockAri) {
|
|
36
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
37
|
+
var match = blockAri.match(/ari:cloud:blocks:[^:]+:synced-block\/(.+)$/);
|
|
38
|
+
return (match === null || match === void 0 ? void 0 : match[1]) || null;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Parses the subscription payload into a standardized format.
|
|
43
|
+
* @param payload - The raw subscription payload
|
|
44
|
+
* @returns Parsed block data or null if parsing fails
|
|
45
|
+
*/
|
|
46
|
+
var parseSubscriptionPayload = function parseSubscriptionPayload(payload) {
|
|
47
|
+
try {
|
|
48
|
+
var resourceId = extractResourceIdFromBlockAri(payload.blockAri);
|
|
49
|
+
if (!resourceId) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
var createdAt;
|
|
53
|
+
if (payload.createdAt !== undefined && payload.createdAt !== null) {
|
|
54
|
+
createdAt = new Date(payload.createdAt).toISOString();
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
blockAri: payload.blockAri,
|
|
58
|
+
blockInstanceId: payload.blockInstanceId,
|
|
59
|
+
content: JSON.parse(payload.content),
|
|
60
|
+
contentUpdatedAt: (0, _utils.convertContentUpdatedAt)(payload.contentUpdatedAt),
|
|
61
|
+
createdAt: createdAt,
|
|
62
|
+
createdBy: payload.createdBy,
|
|
63
|
+
product: payload.product,
|
|
64
|
+
resourceId: resourceId,
|
|
65
|
+
sourceAri: payload.sourceAri,
|
|
66
|
+
status: payload.status
|
|
67
|
+
};
|
|
68
|
+
} catch (_unused) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
28
73
|
/**
|
|
29
74
|
* Creates a GraphQL subscription to block updates using the shared graphql-ws client.
|
|
30
75
|
*
|
|
@@ -40,7 +85,7 @@ var subscribeToBlockUpdates = exports.subscribeToBlockUpdates = function subscri
|
|
|
40
85
|
return function () {};
|
|
41
86
|
}
|
|
42
87
|
var unsubscribe = client.subscribe({
|
|
43
|
-
query:
|
|
88
|
+
query: SUBSCRIPTION_QUERY,
|
|
44
89
|
variables: {
|
|
45
90
|
resourceId: blockAri
|
|
46
91
|
},
|
|
@@ -49,7 +94,7 @@ var subscribeToBlockUpdates = exports.subscribeToBlockUpdates = function subscri
|
|
|
49
94
|
next: function next(value) {
|
|
50
95
|
var _value$data;
|
|
51
96
|
if ((_value$data = value.data) !== null && _value$data !== void 0 && _value$data.blockService_onBlockUpdated) {
|
|
52
|
-
var parsed =
|
|
97
|
+
var parsed = parseSubscriptionPayload(value.data.blockService_onBlockUpdated);
|
|
53
98
|
if (parsed !== null) {
|
|
54
99
|
onData(parsed);
|
|
55
100
|
} else {
|
|
@@ -9,6 +9,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
11
|
var _monitoring = require("@atlaskit/editor-common/monitoring");
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
13
|
var _retry = require("../../utils/retry");
|
|
13
14
|
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
15
|
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; }
|
|
@@ -66,7 +67,7 @@ var getContentMediaSession = /*#__PURE__*/function () {
|
|
|
66
67
|
}();
|
|
67
68
|
var fetchMediaToken = exports.fetchMediaToken = /*#__PURE__*/function () {
|
|
68
69
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(contentId) {
|
|
69
|
-
var _response$data, _contentData$token, response, contentData, token, configuration, collection;
|
|
70
|
+
var _response$data, _contentData$token, response, contentData, token, configuration, collection, errorMsg;
|
|
70
71
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
71
72
|
while (1) switch (_context2.prev = _context2.next) {
|
|
72
73
|
case 0:
|
|
@@ -85,19 +86,20 @@ var fetchMediaToken = exports.fetchMediaToken = /*#__PURE__*/function () {
|
|
|
85
86
|
}
|
|
86
87
|
throw new Error('Failed to get content media session data');
|
|
87
88
|
case 10:
|
|
88
|
-
return _context2.abrupt("return",
|
|
89
|
+
return _context2.abrupt("return", {
|
|
89
90
|
config: configuration,
|
|
90
91
|
token: token,
|
|
91
92
|
collectionId: collection
|
|
92
|
-
})
|
|
93
|
+
});
|
|
93
94
|
case 13:
|
|
94
95
|
_context2.prev = 13;
|
|
95
96
|
_context2.t0 = _context2["catch"](0);
|
|
96
97
|
(0, _monitoring.logException)(_context2.t0, {
|
|
97
98
|
location: 'editor-synced-block-provider/fetchMediaToken'
|
|
98
99
|
});
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
errorMsg = (0, _platformFeatureFlags.fg)('platform_synced_block_patch_4') ? _context2.t0 instanceof Error ? _context2.t0.message : String(_context2.t0) : String(_context2.t0);
|
|
101
|
+
throw new Error("Failed to get content media session: ".concat(errorMsg));
|
|
102
|
+
case 18:
|
|
101
103
|
case "end":
|
|
102
104
|
return _context2.stop();
|
|
103
105
|
}
|
|
@@ -7,7 +7,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useFetchSyncBlockTitle = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
9
|
var _react = require("react");
|
|
10
|
-
var
|
|
10
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
11
|
+
var _platformFeatureFlagsReact = require("@atlaskit/platform-feature-flags-react");
|
|
12
|
+
var useFetchSyncBlockTitleBase = function useFetchSyncBlockTitleBase(manager, syncBlockNode) {
|
|
11
13
|
// Initialize state from cache to prevent flickering during re-renders
|
|
12
14
|
var _useState = (0, _react.useState)(function () {
|
|
13
15
|
var _cachedData$data;
|
|
@@ -33,4 +35,40 @@ var useFetchSyncBlockTitle = exports.useFetchSyncBlockTitle = function useFetchS
|
|
|
33
35
|
};
|
|
34
36
|
}, [manager, syncBlockNode]);
|
|
35
37
|
return sourceTitle;
|
|
36
|
-
};
|
|
38
|
+
};
|
|
39
|
+
var useFetchSyncBlockTitlePatched = function useFetchSyncBlockTitlePatched(manager, syncBlockNode) {
|
|
40
|
+
var _syncBlockNode$attrs, _syncBlockNode$attrs2;
|
|
41
|
+
var nodeRef = (0, _react.useRef)(syncBlockNode);
|
|
42
|
+
nodeRef.current = syncBlockNode;
|
|
43
|
+
var nodeTypeName = syncBlockNode.type.name;
|
|
44
|
+
var resourceId = (_syncBlockNode$attrs = syncBlockNode.attrs) === null || _syncBlockNode$attrs === void 0 ? void 0 : _syncBlockNode$attrs.resourceId;
|
|
45
|
+
var localId = (_syncBlockNode$attrs2 = syncBlockNode.attrs) === null || _syncBlockNode$attrs2 === void 0 ? void 0 : _syncBlockNode$attrs2.localId;
|
|
46
|
+
|
|
47
|
+
// Initialize state from cache to prevent flickering during re-renders
|
|
48
|
+
var _useState3 = (0, _react.useState)(function () {
|
|
49
|
+
var _cachedData$data2;
|
|
50
|
+
if (nodeTypeName !== 'syncBlock') {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
if (!resourceId) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
var cachedData = manager.referenceManager.getFromCache(resourceId);
|
|
57
|
+
return cachedData === null || cachedData === void 0 || (_cachedData$data2 = cachedData.data) === null || _cachedData$data2 === void 0 ? void 0 : _cachedData$data2.sourceTitle;
|
|
58
|
+
}),
|
|
59
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
60
|
+
sourceTitle = _useState4[0],
|
|
61
|
+
setSourceTitle = _useState4[1];
|
|
62
|
+
(0, _react.useEffect)(function () {
|
|
63
|
+
var unsubscribe = manager.referenceManager.subscribeToSourceTitle(nodeRef.current, function (title) {
|
|
64
|
+
setSourceTitle(title);
|
|
65
|
+
});
|
|
66
|
+
return function () {
|
|
67
|
+
unsubscribe();
|
|
68
|
+
};
|
|
69
|
+
}, [manager, nodeTypeName, resourceId, localId]);
|
|
70
|
+
return sourceTitle;
|
|
71
|
+
};
|
|
72
|
+
var useFetchSyncBlockTitle = exports.useFetchSyncBlockTitle = (0, _platformFeatureFlagsReact.conditionalHooksFactory)(function () {
|
|
73
|
+
return (0, _platformFeatureFlags.fg)('platform_synced_block_patch_4');
|
|
74
|
+
}, useFetchSyncBlockTitlePatched, useFetchSyncBlockTitleBase);
|
|
@@ -6,6 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useHandleContentChanges = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var useHandleContentChanges = exports.useHandleContentChanges = function useHandleContentChanges(manager, syncBlockNode) {
|
|
9
|
+
// syncBlockNode is intentionally in deps — its reference changes when the
|
|
10
|
+
// node content is modified by a ProseMirror transaction, which is exactly
|
|
11
|
+
// when the source manager cache needs to be updated.
|
|
9
12
|
(0, _react.useEffect)(function () {
|
|
10
13
|
manager.sourceManager.updateSyncBlockData(syncBlockNode);
|
|
11
14
|
}, [manager, syncBlockNode]);
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,12 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "BLOCK_SERVICE_SUBSCRIPTION_QUERY", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function get() {
|
|
9
|
-
return _sharedSubscriptionUtils.BLOCK_SERVICE_SUBSCRIPTION_QUERY;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
6
|
Object.defineProperty(exports, "BlockError", {
|
|
13
7
|
enumerable: true,
|
|
14
8
|
get: function get() {
|
|
@@ -63,12 +57,6 @@ Object.defineProperty(exports, "convertPMNodesToSyncBlockNodes", {
|
|
|
63
57
|
return _utils.convertPMNodesToSyncBlockNodes;
|
|
64
58
|
}
|
|
65
59
|
});
|
|
66
|
-
Object.defineProperty(exports, "convertRelayResponseToSyncBlockInstance", {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
get: function get() {
|
|
69
|
-
return _relayResponseConverter.convertRelayResponseToSyncBlockInstance;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
60
|
Object.defineProperty(exports, "convertSyncBlockJSONNodeToSyncBlockNode", {
|
|
73
61
|
enumerable: true,
|
|
74
62
|
get: function get() {
|
|
@@ -87,18 +75,6 @@ Object.defineProperty(exports, "convertToSyncBlockData", {
|
|
|
87
75
|
return _blockServiceAPI.convertToSyncBlockData;
|
|
88
76
|
}
|
|
89
77
|
});
|
|
90
|
-
Object.defineProperty(exports, "createRelayBlockSubscription", {
|
|
91
|
-
enumerable: true,
|
|
92
|
-
get: function get() {
|
|
93
|
-
return _relaySubscriptionUtils.createRelayBlockSubscription;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
Object.defineProperty(exports, "createRelaySubscriptionFunction", {
|
|
97
|
-
enumerable: true,
|
|
98
|
-
get: function get() {
|
|
99
|
-
return _relaySubscriptionUtils.createRelaySubscriptionFunction;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
78
|
Object.defineProperty(exports, "createResourceIdForReference", {
|
|
103
79
|
enumerable: true,
|
|
104
80
|
get: function get() {
|
|
@@ -207,12 +183,6 @@ Object.defineProperty(exports, "parseResourceId", {
|
|
|
207
183
|
return _resourceId.parseResourceId;
|
|
208
184
|
}
|
|
209
185
|
});
|
|
210
|
-
Object.defineProperty(exports, "parseSubscriptionPayload", {
|
|
211
|
-
enumerable: true,
|
|
212
|
-
get: function get() {
|
|
213
|
-
return _sharedSubscriptionUtils.parseSubscriptionPayload;
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
186
|
Object.defineProperty(exports, "rebaseTransaction", {
|
|
217
187
|
enumerable: true,
|
|
218
188
|
get: function get() {
|
|
@@ -231,6 +201,12 @@ Object.defineProperty(exports, "syncBlockInMemorySessionCache", {
|
|
|
231
201
|
return _syncBlockInMemorySessionCache.syncBlockInMemorySessionCache;
|
|
232
202
|
}
|
|
233
203
|
});
|
|
204
|
+
Object.defineProperty(exports, "updateSyncedBlocks", {
|
|
205
|
+
enumerable: true,
|
|
206
|
+
get: function get() {
|
|
207
|
+
return _blockService.updateSyncedBlocks;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
234
210
|
Object.defineProperty(exports, "useFetchSyncBlockData", {
|
|
235
211
|
enumerable: true,
|
|
236
212
|
get: function get() {
|
|
@@ -273,6 +249,12 @@ Object.defineProperty(exports, "useMemoizedSyncedBlockProvider", {
|
|
|
273
249
|
return _syncBlockProvider.useMemoizedSyncedBlockProvider;
|
|
274
250
|
}
|
|
275
251
|
});
|
|
252
|
+
Object.defineProperty(exports, "writeDataBatch", {
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function get() {
|
|
255
|
+
return _blockServiceAPI.writeDataBatch;
|
|
256
|
+
}
|
|
257
|
+
});
|
|
276
258
|
var _rebaseTransaction = require("./common/rebase-transaction");
|
|
277
259
|
var _types = require("./common/types");
|
|
278
260
|
var _useFetchSyncBlockData = require("./hooks/useFetchSyncBlockData");
|
|
@@ -289,9 +271,6 @@ var _syncBlockProvider = require("./providers/syncBlockProvider");
|
|
|
289
271
|
var _referenceSyncBlockStoreManager = require("./store-manager/referenceSyncBlockStoreManager");
|
|
290
272
|
var _syncBlockInMemorySessionCache = require("./store-manager/syncBlockInMemorySessionCache");
|
|
291
273
|
var _syncBlockStoreManager = require("./store-manager/syncBlockStoreManager");
|
|
292
|
-
var _sharedSubscriptionUtils = require("./clients/block-service/sharedSubscriptionUtils");
|
|
293
|
-
var _relayResponseConverter = require("./utils/relayResponseConverter");
|
|
294
|
-
var _relaySubscriptionUtils = require("./utils/relaySubscriptionUtils");
|
|
295
274
|
var _resolveSyncBlockInstance = require("./utils/resolveSyncBlockInstance");
|
|
296
275
|
var _resourceId = require("./utils/resourceId");
|
|
297
276
|
var _utils = require("./utils/utils");
|