@atlaskit/editor-synced-block-provider 3.14.0 → 3.14.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 +7 -0
- package/dist/cjs/clients/block-service/blockSubscription.js +2 -0
- package/dist/cjs/providers/block-service/blockServiceAPI.js +16 -38
- package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +2 -4
- package/dist/cjs/utils/utils.js +12 -1
- package/dist/es2019/clients/block-service/blockSubscription.js +2 -0
- package/dist/es2019/providers/block-service/blockServiceAPI.js +6 -29
- package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +0 -2
- package/dist/es2019/utils/utils.js +11 -0
- package/dist/esm/clients/block-service/blockSubscription.js +2 -0
- package/dist/esm/providers/block-service/blockServiceAPI.js +16 -38
- package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +2 -4
- package/dist/esm/utils/utils.js +11 -0
- package/dist/types/clients/block-service/blockSubscription.d.ts +1 -0
- package/dist/types/utils/utils.d.ts +1 -0
- package/dist/types-ts4.5/clients/block-service/blockSubscription.d.ts +1 -0
- package/dist/types-ts4.5/utils/utils.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-provider
|
|
2
2
|
|
|
3
|
+
## 3.14.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`838e5da4cc27d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/838e5da4cc27d) -
|
|
8
|
+
Refactor SyncBlockLabel and BlockServiceAPI provider
|
|
9
|
+
|
|
3
10
|
## 3.14.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.subscribeToBlockUpdates = void 0;
|
|
7
7
|
var _graphqlWs = require("graphql-ws");
|
|
8
|
+
var _utils = require("../../utils/utils");
|
|
8
9
|
var GRAPHQL_WS_ENDPOINT = '/gateway/api/graphql/subscriptions';
|
|
9
10
|
var blockServiceClient = null;
|
|
10
11
|
var getBlockServiceClient = function getBlockServiceClient() {
|
|
@@ -60,6 +61,7 @@ var parseSubscriptionPayload = function parseSubscriptionPayload(payload) {
|
|
|
60
61
|
blockAri: payload.blockAri,
|
|
61
62
|
blockInstanceId: payload.blockInstanceId,
|
|
62
63
|
content: JSON.parse(payload.content),
|
|
64
|
+
contentUpdatedAt: (0, _utils.convertContentUpdatedAt)(payload.contentUpdatedAt),
|
|
63
65
|
createdAt: createdAt,
|
|
64
66
|
createdBy: payload.createdBy,
|
|
65
67
|
product: payload.product,
|
|
@@ -12,13 +12,13 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
12
12
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
13
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
14
|
var _react = require("react");
|
|
15
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
16
15
|
var _ari = require("../../clients/block-service/ari");
|
|
17
16
|
var _blockService = require("../../clients/block-service/blockService");
|
|
18
17
|
var _blockSubscription = require("../../clients/block-service/blockSubscription");
|
|
19
18
|
var _types = require("../../common/types");
|
|
20
19
|
var _errorHandling = require("../../utils/errorHandling");
|
|
21
20
|
var _resourceId2 = require("../../utils/resourceId");
|
|
21
|
+
var _utils = require("../../utils/utils");
|
|
22
22
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
23
23
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
24
24
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -104,24 +104,16 @@ var convertToSyncBlockData = exports.convertToSyncBlockData = function convertTo
|
|
|
104
104
|
// BE returns microseconds, convert to milliseconds
|
|
105
105
|
// BE should fix this in the future
|
|
106
106
|
createdAt = new Date(data.createdAt / 1000).toISOString();
|
|
107
|
-
} catch (
|
|
107
|
+
} catch (_unused) {
|
|
108
108
|
// fallback to undefined
|
|
109
109
|
// as we don't want to block the whole process due to invalid date
|
|
110
110
|
createdAt = undefined;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
var contentUpdatedAt;
|
|
114
|
-
if (typeof data.contentUpdatedAt === 'number' && (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
115
|
-
try {
|
|
116
|
-
contentUpdatedAt = new Date(data.contentUpdatedAt).toISOString();
|
|
117
|
-
} catch (e) {
|
|
118
|
-
contentUpdatedAt = undefined;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
113
|
return {
|
|
122
114
|
blockInstanceId: data.blockInstanceId,
|
|
123
115
|
content: JSON.parse(data.content),
|
|
124
|
-
contentUpdatedAt: contentUpdatedAt,
|
|
116
|
+
contentUpdatedAt: (0, _utils.convertContentUpdatedAt)(data.contentUpdatedAt),
|
|
125
117
|
createdAt: createdAt,
|
|
126
118
|
createdBy: data.createdBy,
|
|
127
119
|
product: data.product,
|
|
@@ -169,7 +161,7 @@ var fetchReferences = exports.fetchReferences = /*#__PURE__*/function () {
|
|
|
169
161
|
data: convertToSyncBlockData(blockContentResponse, resourceId),
|
|
170
162
|
resourceId: resourceId
|
|
171
163
|
};
|
|
172
|
-
} catch (
|
|
164
|
+
} catch (_unused2) {
|
|
173
165
|
// JSON parsing error, return InvalidContent error
|
|
174
166
|
return {
|
|
175
167
|
error: _types.SyncBlockError.InvalidContent,
|
|
@@ -212,7 +204,7 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
212
204
|
key: "fetchData",
|
|
213
205
|
value: function () {
|
|
214
206
|
var _fetchData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(resourceId) {
|
|
215
|
-
var blockAri, blockContentResponse, value, syncedBlockData
|
|
207
|
+
var blockAri, blockContentResponse, value, syncedBlockData;
|
|
216
208
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
217
209
|
while (1) switch (_context2.prev = _context2.next) {
|
|
218
210
|
case 0:
|
|
@@ -240,47 +232,40 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
240
232
|
case 8:
|
|
241
233
|
// Parse the synced block content from the response's content
|
|
242
234
|
syncedBlockData = JSON.parse(value);
|
|
243
|
-
if (typeof blockContentResponse.contentUpdatedAt === 'number' && (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
244
|
-
try {
|
|
245
|
-
contentUpdatedAt = new Date(blockContentResponse.contentUpdatedAt).toISOString();
|
|
246
|
-
} catch (e) {
|
|
247
|
-
contentUpdatedAt = undefined;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
235
|
return _context2.abrupt("return", {
|
|
251
236
|
data: {
|
|
252
237
|
content: syncedBlockData,
|
|
253
238
|
resourceId: blockAri,
|
|
254
239
|
blockInstanceId: blockContentResponse.blockInstanceId,
|
|
255
240
|
// this was the node's localId, but has become the resourceId.
|
|
256
|
-
contentUpdatedAt: contentUpdatedAt,
|
|
241
|
+
contentUpdatedAt: (0, _utils.convertContentUpdatedAt)(blockContentResponse.contentUpdatedAt),
|
|
257
242
|
sourceAri: blockContentResponse.sourceAri,
|
|
258
243
|
product: blockContentResponse.product,
|
|
259
244
|
status: blockContentResponse.status
|
|
260
245
|
},
|
|
261
246
|
resourceId: resourceId
|
|
262
247
|
});
|
|
263
|
-
case
|
|
264
|
-
_context2.prev =
|
|
248
|
+
case 12:
|
|
249
|
+
_context2.prev = 12;
|
|
265
250
|
_context2.t0 = _context2["catch"](1);
|
|
266
251
|
if (!(_context2.t0 instanceof _blockService.BlockError)) {
|
|
267
|
-
_context2.next =
|
|
252
|
+
_context2.next = 16;
|
|
268
253
|
break;
|
|
269
254
|
}
|
|
270
255
|
return _context2.abrupt("return", {
|
|
271
256
|
error: mapBlockError(_context2.t0),
|
|
272
257
|
resourceId: resourceId
|
|
273
258
|
});
|
|
274
|
-
case
|
|
259
|
+
case 16:
|
|
275
260
|
return _context2.abrupt("return", {
|
|
276
261
|
error: _types.SyncBlockError.Errored,
|
|
277
262
|
resourceId: resourceId
|
|
278
263
|
});
|
|
279
|
-
case
|
|
264
|
+
case 17:
|
|
280
265
|
case "end":
|
|
281
266
|
return _context2.stop();
|
|
282
267
|
}
|
|
283
|
-
}, _callee2, this, [[1,
|
|
268
|
+
}, _callee2, this, [[1, 12]]);
|
|
284
269
|
}));
|
|
285
270
|
function fetchData(_x2) {
|
|
286
271
|
return _fetchData.apply(this, arguments);
|
|
@@ -373,7 +358,7 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
373
358
|
value: (function () {
|
|
374
359
|
var _batchFetchData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(blockNodeIdentifiers) {
|
|
375
360
|
var _this2 = this;
|
|
376
|
-
var blockIdentifiers, validResourceIds, processedResourceIds, response, results, _iterator, _step, blockContentResponse, resourceId, value, syncedBlockData,
|
|
361
|
+
var blockIdentifiers, validResourceIds, processedResourceIds, response, results, _iterator, _step, blockContentResponse, resourceId, value, syncedBlockData, _iterator2, _step2, errorResponse, _resourceId, _iterator3, _step3, blockNodeIdentifier;
|
|
377
362
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
378
363
|
while (1) switch (_context4.prev = _context4.next) {
|
|
379
364
|
case 0:
|
|
@@ -445,19 +430,11 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
445
430
|
case 24:
|
|
446
431
|
try {
|
|
447
432
|
syncedBlockData = JSON.parse(value);
|
|
448
|
-
contentUpdatedAt = void 0;
|
|
449
|
-
if (typeof blockContentResponse.contentUpdatedAt === 'number' && (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
450
|
-
try {
|
|
451
|
-
contentUpdatedAt = new Date(blockContentResponse.contentUpdatedAt).toISOString();
|
|
452
|
-
} catch (e) {
|
|
453
|
-
contentUpdatedAt = undefined;
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
433
|
results.push({
|
|
457
434
|
data: {
|
|
458
435
|
content: syncedBlockData,
|
|
459
436
|
resourceId: blockContentResponse.blockAri,
|
|
460
|
-
contentUpdatedAt: contentUpdatedAt,
|
|
437
|
+
contentUpdatedAt: (0, _utils.convertContentUpdatedAt)(blockContentResponse.contentUpdatedAt),
|
|
461
438
|
blockInstanceId: blockContentResponse.blockInstanceId,
|
|
462
439
|
sourceAri: blockContentResponse.sourceAri,
|
|
463
440
|
product: blockContentResponse.product,
|
|
@@ -465,7 +442,7 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
465
442
|
},
|
|
466
443
|
resourceId: resourceId
|
|
467
444
|
});
|
|
468
|
-
} catch (
|
|
445
|
+
} catch (_unused3) {
|
|
469
446
|
results.push({
|
|
470
447
|
error: _types.SyncBlockError.Errored,
|
|
471
448
|
resourceId: resourceId
|
|
@@ -590,6 +567,7 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
590
567
|
sourceAri: parsedData.sourceAri,
|
|
591
568
|
product: parsedData.product,
|
|
592
569
|
createdAt: parsedData.createdAt,
|
|
570
|
+
contentUpdatedAt: parsedData.contentUpdatedAt,
|
|
593
571
|
createdBy: parsedData.createdBy,
|
|
594
572
|
status: parsedData.status
|
|
595
573
|
},
|
|
@@ -499,7 +499,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
499
499
|
value: (function () {
|
|
500
500
|
var _fetchSyncBlocksData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(syncBlockNodes) {
|
|
501
501
|
var _this5 = this;
|
|
502
|
-
var nodesToFetch, _this$fetchExperience, data,
|
|
502
|
+
var nodesToFetch, _this$fetchExperience, data, hasUnexpectedError, hasExpectedError, _this$fetchExperience2, _this$fetchExperience3, _this$fetchExperience4;
|
|
503
503
|
return _regenerator.default.wrap(function _callee2$(_context3) {
|
|
504
504
|
while (1) switch (_context3.prev = _context3.next) {
|
|
505
505
|
case 0:
|
|
@@ -547,7 +547,6 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
547
547
|
});
|
|
548
548
|
case 12:
|
|
549
549
|
data = _context3.sent;
|
|
550
|
-
resolvedData = [];
|
|
551
550
|
hasUnexpectedError = false;
|
|
552
551
|
hasExpectedError = false;
|
|
553
552
|
data.forEach(function (syncBlockInstance) {
|
|
@@ -559,7 +558,6 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
559
558
|
var existingSyncBlock = _this5.getFromCache(syncBlockInstance.resourceId);
|
|
560
559
|
var resolvedSyncBlockInstance = existingSyncBlock ? (0, _resolveSyncBlockInstance.resolveSyncBlockInstance)(existingSyncBlock, syncBlockInstance) : syncBlockInstance;
|
|
561
560
|
_this5.updateCache(resolvedSyncBlockInstance);
|
|
562
|
-
resolvedData.push(resolvedSyncBlockInstance);
|
|
563
561
|
if (syncBlockInstance.error) {
|
|
564
562
|
var _this5$fireAnalyticsE2;
|
|
565
563
|
(_this5$fireAnalyticsE2 = _this5.fireAnalyticsEvent) === null || _this5$fireAnalyticsE2 === void 0 || _this5$fireAnalyticsE2.call(_this5, (0, _errorHandling.fetchErrorPayload)(syncBlockInstance.error, syncBlockInstance.resourceId));
|
|
@@ -588,7 +586,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
588
586
|
(_this$fetchExperience4 = this.fetchExperience) === null || _this$fetchExperience4 === void 0 || _this$fetchExperience4.success();
|
|
589
587
|
}
|
|
590
588
|
}
|
|
591
|
-
case
|
|
589
|
+
case 17:
|
|
592
590
|
case "end":
|
|
593
591
|
return _context3.stop();
|
|
594
592
|
}
|
package/dist/cjs/utils/utils.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getContentIdAndProductFromResourceId = exports.createSyncBlockNode = exports.convertSyncBlockPMNodeToSyncBlockData = exports.convertSyncBlockJSONNodeToSyncBlockNode = exports.convertPMNodesToSyncBlockNodes = exports.convertPMNodeToSyncBlockNode = void 0;
|
|
6
|
+
exports.getContentIdAndProductFromResourceId = exports.createSyncBlockNode = exports.convertSyncBlockPMNodeToSyncBlockData = exports.convertSyncBlockJSONNodeToSyncBlockNode = exports.convertPMNodesToSyncBlockNodes = exports.convertPMNodeToSyncBlockNode = exports.convertContentUpdatedAt = void 0;
|
|
7
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
7
8
|
/* eslint-disable require-unicode-regexp */
|
|
8
9
|
|
|
9
10
|
var convertSyncBlockPMNodeToSyncBlockData = exports.convertSyncBlockPMNodeToSyncBlockData = function convertSyncBlockPMNodeToSyncBlockData(node) {
|
|
@@ -57,4 +58,14 @@ var getContentIdAndProductFromResourceId = exports.getContentIdAndProductFromRes
|
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
60
|
throw new Error("Invalid resourceId: ".concat(resourceId));
|
|
61
|
+
};
|
|
62
|
+
var convertContentUpdatedAt = exports.convertContentUpdatedAt = function convertContentUpdatedAt(contentUpdatedAt) {
|
|
63
|
+
if (typeof contentUpdatedAt === 'number' && (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
64
|
+
try {
|
|
65
|
+
return new Date(contentUpdatedAt).toISOString();
|
|
66
|
+
} catch (_unused) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
60
71
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createClient } from 'graphql-ws';
|
|
2
|
+
import { convertContentUpdatedAt } from '../../utils/utils';
|
|
2
3
|
const GRAPHQL_WS_ENDPOINT = '/gateway/api/graphql/subscriptions';
|
|
3
4
|
let blockServiceClient = null;
|
|
4
5
|
const getBlockServiceClient = () => {
|
|
@@ -69,6 +70,7 @@ const parseSubscriptionPayload = payload => {
|
|
|
69
70
|
blockAri: payload.blockAri,
|
|
70
71
|
blockInstanceId: payload.blockInstanceId,
|
|
71
72
|
content: JSON.parse(payload.content),
|
|
73
|
+
contentUpdatedAt: convertContentUpdatedAt(payload.contentUpdatedAt),
|
|
72
74
|
createdAt,
|
|
73
75
|
createdBy: payload.createdBy,
|
|
74
76
|
product: payload.product,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/* eslint-disable require-unicode-regexp */
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
3
|
import { generateBlockAri, generateBlockAriFromReference } from '../../clients/block-service/ari';
|
|
5
4
|
import { batchRetrieveSyncedBlocks, BlockError, createSyncedBlock, deleteSyncedBlock, getReferenceSyncedBlocks, getReferenceSyncedBlocksByBlockAri, getSyncedBlockContent, updateReferenceSyncedBlockOnDocument, updateSyncedBlock } from '../../clients/block-service/blockService';
|
|
6
5
|
import { subscribeToBlockUpdates as subscribeToBlockUpdatesWS } from '../../clients/block-service/blockSubscription';
|
|
7
6
|
import { SyncBlockError } from '../../common/types';
|
|
8
7
|
import { stringifyError } from '../../utils/errorHandling';
|
|
9
8
|
import { createResourceIdForReference } from '../../utils/resourceId';
|
|
9
|
+
import { convertContentUpdatedAt } from '../../utils/utils';
|
|
10
10
|
const mapBlockError = error => {
|
|
11
11
|
switch (error.status) {
|
|
12
12
|
case 400:
|
|
@@ -87,24 +87,16 @@ export const convertToSyncBlockData = (data, resourceId) => {
|
|
|
87
87
|
// BE returns microseconds, convert to milliseconds
|
|
88
88
|
// BE should fix this in the future
|
|
89
89
|
createdAt = new Date(data.createdAt / 1000).toISOString();
|
|
90
|
-
} catch
|
|
90
|
+
} catch {
|
|
91
91
|
// fallback to undefined
|
|
92
92
|
// as we don't want to block the whole process due to invalid date
|
|
93
93
|
createdAt = undefined;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
let contentUpdatedAt;
|
|
97
|
-
if (typeof data.contentUpdatedAt === 'number' && fg('platform_synced_block_dogfooding')) {
|
|
98
|
-
try {
|
|
99
|
-
contentUpdatedAt = new Date(data.contentUpdatedAt).toISOString();
|
|
100
|
-
} catch (e) {
|
|
101
|
-
contentUpdatedAt = undefined;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
96
|
return {
|
|
105
97
|
blockInstanceId: data.blockInstanceId,
|
|
106
98
|
content: JSON.parse(data.content),
|
|
107
|
-
contentUpdatedAt,
|
|
99
|
+
contentUpdatedAt: convertContentUpdatedAt(data.contentUpdatedAt),
|
|
108
100
|
createdAt,
|
|
109
101
|
createdBy: data.createdBy,
|
|
110
102
|
product: data.product,
|
|
@@ -189,21 +181,13 @@ class BlockServiceADFFetchProvider {
|
|
|
189
181
|
|
|
190
182
|
// Parse the synced block content from the response's content
|
|
191
183
|
const syncedBlockData = JSON.parse(value);
|
|
192
|
-
let contentUpdatedAt;
|
|
193
|
-
if (typeof blockContentResponse.contentUpdatedAt === 'number' && fg('platform_synced_block_dogfooding')) {
|
|
194
|
-
try {
|
|
195
|
-
contentUpdatedAt = new Date(blockContentResponse.contentUpdatedAt).toISOString();
|
|
196
|
-
} catch (e) {
|
|
197
|
-
contentUpdatedAt = undefined;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
184
|
return {
|
|
201
185
|
data: {
|
|
202
186
|
content: syncedBlockData,
|
|
203
187
|
resourceId: blockAri,
|
|
204
188
|
blockInstanceId: blockContentResponse.blockInstanceId,
|
|
205
189
|
// this was the node's localId, but has become the resourceId.
|
|
206
|
-
contentUpdatedAt,
|
|
190
|
+
contentUpdatedAt: convertContentUpdatedAt(blockContentResponse.contentUpdatedAt),
|
|
207
191
|
sourceAri: blockContentResponse.sourceAri,
|
|
208
192
|
product: blockContentResponse.product,
|
|
209
193
|
status: blockContentResponse.status
|
|
@@ -325,19 +309,11 @@ class BlockServiceADFFetchProvider {
|
|
|
325
309
|
}
|
|
326
310
|
try {
|
|
327
311
|
const syncedBlockData = JSON.parse(value);
|
|
328
|
-
let contentUpdatedAt;
|
|
329
|
-
if (typeof blockContentResponse.contentUpdatedAt === 'number' && fg('platform_synced_block_dogfooding')) {
|
|
330
|
-
try {
|
|
331
|
-
contentUpdatedAt = new Date(blockContentResponse.contentUpdatedAt).toISOString();
|
|
332
|
-
} catch (e) {
|
|
333
|
-
contentUpdatedAt = undefined;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
312
|
results.push({
|
|
337
313
|
data: {
|
|
338
314
|
content: syncedBlockData,
|
|
339
315
|
resourceId: blockContentResponse.blockAri,
|
|
340
|
-
contentUpdatedAt,
|
|
316
|
+
contentUpdatedAt: convertContentUpdatedAt(blockContentResponse.contentUpdatedAt),
|
|
341
317
|
blockInstanceId: blockContentResponse.blockInstanceId,
|
|
342
318
|
sourceAri: blockContentResponse.sourceAri,
|
|
343
319
|
product: blockContentResponse.product,
|
|
@@ -411,6 +387,7 @@ class BlockServiceADFFetchProvider {
|
|
|
411
387
|
sourceAri: parsedData.sourceAri,
|
|
412
388
|
product: parsedData.product,
|
|
413
389
|
createdAt: parsedData.createdAt,
|
|
390
|
+
contentUpdatedAt: parsedData.contentUpdatedAt,
|
|
414
391
|
createdBy: parsedData.createdBy,
|
|
415
392
|
status: parsedData.status
|
|
416
393
|
},
|
|
@@ -399,7 +399,6 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
399
399
|
this.syncBlockFetchDataRequests.delete(node.attrs.resourceId);
|
|
400
400
|
});
|
|
401
401
|
});
|
|
402
|
-
const resolvedData = [];
|
|
403
402
|
let hasUnexpectedError = false;
|
|
404
403
|
let hasExpectedError = false;
|
|
405
404
|
data.forEach(syncBlockInstance => {
|
|
@@ -411,7 +410,6 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
411
410
|
const existingSyncBlock = this.getFromCache(syncBlockInstance.resourceId);
|
|
412
411
|
const resolvedSyncBlockInstance = existingSyncBlock ? resolveSyncBlockInstance(existingSyncBlock, syncBlockInstance) : syncBlockInstance;
|
|
413
412
|
this.updateCache(resolvedSyncBlockInstance);
|
|
414
|
-
resolvedData.push(resolvedSyncBlockInstance);
|
|
415
413
|
if (syncBlockInstance.error) {
|
|
416
414
|
var _this$fireAnalyticsEv0;
|
|
417
415
|
(_this$fireAnalyticsEv0 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv0 === void 0 ? void 0 : _this$fireAnalyticsEv0.call(this, fetchErrorPayload(syncBlockInstance.error, syncBlockInstance.resourceId));
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable require-unicode-regexp */
|
|
2
2
|
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
export const convertSyncBlockPMNodeToSyncBlockData = node => {
|
|
4
5
|
return {
|
|
5
6
|
blockInstanceId: node.attrs.localId,
|
|
@@ -47,4 +48,14 @@ export const getContentIdAndProductFromResourceId = resourceId => {
|
|
|
47
48
|
};
|
|
48
49
|
}
|
|
49
50
|
throw new Error(`Invalid resourceId: ${resourceId}`);
|
|
51
|
+
};
|
|
52
|
+
export const convertContentUpdatedAt = contentUpdatedAt => {
|
|
53
|
+
if (typeof contentUpdatedAt === 'number' && fg('platform_synced_block_dogfooding')) {
|
|
54
|
+
try {
|
|
55
|
+
return new Date(contentUpdatedAt).toISOString();
|
|
56
|
+
} catch {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return undefined;
|
|
50
61
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createClient } from 'graphql-ws';
|
|
2
|
+
import { convertContentUpdatedAt } from '../../utils/utils';
|
|
2
3
|
var GRAPHQL_WS_ENDPOINT = '/gateway/api/graphql/subscriptions';
|
|
3
4
|
var blockServiceClient = null;
|
|
4
5
|
var getBlockServiceClient = function getBlockServiceClient() {
|
|
@@ -54,6 +55,7 @@ var parseSubscriptionPayload = function parseSubscriptionPayload(payload) {
|
|
|
54
55
|
blockAri: payload.blockAri,
|
|
55
56
|
blockInstanceId: payload.blockInstanceId,
|
|
56
57
|
content: JSON.parse(payload.content),
|
|
58
|
+
contentUpdatedAt: convertContentUpdatedAt(payload.contentUpdatedAt),
|
|
57
59
|
createdAt: createdAt,
|
|
58
60
|
createdBy: payload.createdBy,
|
|
59
61
|
product: payload.product,
|
|
@@ -11,13 +11,13 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
11
11
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
12
12
|
/* eslint-disable require-unicode-regexp */
|
|
13
13
|
import { useMemo } from 'react';
|
|
14
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
15
14
|
import { generateBlockAri, generateBlockAriFromReference } from '../../clients/block-service/ari';
|
|
16
15
|
import { batchRetrieveSyncedBlocks, BlockError, createSyncedBlock, deleteSyncedBlock, getReferenceSyncedBlocks, getReferenceSyncedBlocksByBlockAri, getSyncedBlockContent, updateReferenceSyncedBlockOnDocument, updateSyncedBlock } from '../../clients/block-service/blockService';
|
|
17
16
|
import { subscribeToBlockUpdates as subscribeToBlockUpdatesWS } from '../../clients/block-service/blockSubscription';
|
|
18
17
|
import { SyncBlockError } from '../../common/types';
|
|
19
18
|
import { stringifyError } from '../../utils/errorHandling';
|
|
20
19
|
import { createResourceIdForReference } from '../../utils/resourceId';
|
|
20
|
+
import { convertContentUpdatedAt } from '../../utils/utils';
|
|
21
21
|
var mapBlockError = function mapBlockError(error) {
|
|
22
22
|
switch (error.status) {
|
|
23
23
|
case 400:
|
|
@@ -98,24 +98,16 @@ export var convertToSyncBlockData = function convertToSyncBlockData(data, resour
|
|
|
98
98
|
// BE returns microseconds, convert to milliseconds
|
|
99
99
|
// BE should fix this in the future
|
|
100
100
|
createdAt = new Date(data.createdAt / 1000).toISOString();
|
|
101
|
-
} catch (
|
|
101
|
+
} catch (_unused) {
|
|
102
102
|
// fallback to undefined
|
|
103
103
|
// as we don't want to block the whole process due to invalid date
|
|
104
104
|
createdAt = undefined;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
var contentUpdatedAt;
|
|
108
|
-
if (typeof data.contentUpdatedAt === 'number' && fg('platform_synced_block_dogfooding')) {
|
|
109
|
-
try {
|
|
110
|
-
contentUpdatedAt = new Date(data.contentUpdatedAt).toISOString();
|
|
111
|
-
} catch (e) {
|
|
112
|
-
contentUpdatedAt = undefined;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
107
|
return {
|
|
116
108
|
blockInstanceId: data.blockInstanceId,
|
|
117
109
|
content: JSON.parse(data.content),
|
|
118
|
-
contentUpdatedAt: contentUpdatedAt,
|
|
110
|
+
contentUpdatedAt: convertContentUpdatedAt(data.contentUpdatedAt),
|
|
119
111
|
createdAt: createdAt,
|
|
120
112
|
createdBy: data.createdBy,
|
|
121
113
|
product: data.product,
|
|
@@ -163,7 +155,7 @@ export var fetchReferences = /*#__PURE__*/function () {
|
|
|
163
155
|
data: convertToSyncBlockData(blockContentResponse, resourceId),
|
|
164
156
|
resourceId: resourceId
|
|
165
157
|
};
|
|
166
|
-
} catch (
|
|
158
|
+
} catch (_unused2) {
|
|
167
159
|
// JSON parsing error, return InvalidContent error
|
|
168
160
|
return {
|
|
169
161
|
error: SyncBlockError.InvalidContent,
|
|
@@ -206,7 +198,7 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
206
198
|
key: "fetchData",
|
|
207
199
|
value: function () {
|
|
208
200
|
var _fetchData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resourceId) {
|
|
209
|
-
var blockAri, blockContentResponse, value, syncedBlockData
|
|
201
|
+
var blockAri, blockContentResponse, value, syncedBlockData;
|
|
210
202
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
211
203
|
while (1) switch (_context2.prev = _context2.next) {
|
|
212
204
|
case 0:
|
|
@@ -234,47 +226,40 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
234
226
|
case 8:
|
|
235
227
|
// Parse the synced block content from the response's content
|
|
236
228
|
syncedBlockData = JSON.parse(value);
|
|
237
|
-
if (typeof blockContentResponse.contentUpdatedAt === 'number' && fg('platform_synced_block_dogfooding')) {
|
|
238
|
-
try {
|
|
239
|
-
contentUpdatedAt = new Date(blockContentResponse.contentUpdatedAt).toISOString();
|
|
240
|
-
} catch (e) {
|
|
241
|
-
contentUpdatedAt = undefined;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
229
|
return _context2.abrupt("return", {
|
|
245
230
|
data: {
|
|
246
231
|
content: syncedBlockData,
|
|
247
232
|
resourceId: blockAri,
|
|
248
233
|
blockInstanceId: blockContentResponse.blockInstanceId,
|
|
249
234
|
// this was the node's localId, but has become the resourceId.
|
|
250
|
-
contentUpdatedAt: contentUpdatedAt,
|
|
235
|
+
contentUpdatedAt: convertContentUpdatedAt(blockContentResponse.contentUpdatedAt),
|
|
251
236
|
sourceAri: blockContentResponse.sourceAri,
|
|
252
237
|
product: blockContentResponse.product,
|
|
253
238
|
status: blockContentResponse.status
|
|
254
239
|
},
|
|
255
240
|
resourceId: resourceId
|
|
256
241
|
});
|
|
257
|
-
case
|
|
258
|
-
_context2.prev =
|
|
242
|
+
case 12:
|
|
243
|
+
_context2.prev = 12;
|
|
259
244
|
_context2.t0 = _context2["catch"](1);
|
|
260
245
|
if (!(_context2.t0 instanceof BlockError)) {
|
|
261
|
-
_context2.next =
|
|
246
|
+
_context2.next = 16;
|
|
262
247
|
break;
|
|
263
248
|
}
|
|
264
249
|
return _context2.abrupt("return", {
|
|
265
250
|
error: mapBlockError(_context2.t0),
|
|
266
251
|
resourceId: resourceId
|
|
267
252
|
});
|
|
268
|
-
case
|
|
253
|
+
case 16:
|
|
269
254
|
return _context2.abrupt("return", {
|
|
270
255
|
error: SyncBlockError.Errored,
|
|
271
256
|
resourceId: resourceId
|
|
272
257
|
});
|
|
273
|
-
case
|
|
258
|
+
case 17:
|
|
274
259
|
case "end":
|
|
275
260
|
return _context2.stop();
|
|
276
261
|
}
|
|
277
|
-
}, _callee2, this, [[1,
|
|
262
|
+
}, _callee2, this, [[1, 12]]);
|
|
278
263
|
}));
|
|
279
264
|
function fetchData(_x2) {
|
|
280
265
|
return _fetchData.apply(this, arguments);
|
|
@@ -367,7 +352,7 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
367
352
|
value: (function () {
|
|
368
353
|
var _batchFetchData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(blockNodeIdentifiers) {
|
|
369
354
|
var _this2 = this;
|
|
370
|
-
var blockIdentifiers, validResourceIds, processedResourceIds, response, results, _iterator, _step, blockContentResponse, resourceId, value, syncedBlockData,
|
|
355
|
+
var blockIdentifiers, validResourceIds, processedResourceIds, response, results, _iterator, _step, blockContentResponse, resourceId, value, syncedBlockData, _iterator2, _step2, errorResponse, _resourceId, _iterator3, _step3, blockNodeIdentifier;
|
|
371
356
|
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
372
357
|
while (1) switch (_context4.prev = _context4.next) {
|
|
373
358
|
case 0:
|
|
@@ -439,19 +424,11 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
439
424
|
case 24:
|
|
440
425
|
try {
|
|
441
426
|
syncedBlockData = JSON.parse(value);
|
|
442
|
-
contentUpdatedAt = void 0;
|
|
443
|
-
if (typeof blockContentResponse.contentUpdatedAt === 'number' && fg('platform_synced_block_dogfooding')) {
|
|
444
|
-
try {
|
|
445
|
-
contentUpdatedAt = new Date(blockContentResponse.contentUpdatedAt).toISOString();
|
|
446
|
-
} catch (e) {
|
|
447
|
-
contentUpdatedAt = undefined;
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
427
|
results.push({
|
|
451
428
|
data: {
|
|
452
429
|
content: syncedBlockData,
|
|
453
430
|
resourceId: blockContentResponse.blockAri,
|
|
454
|
-
contentUpdatedAt: contentUpdatedAt,
|
|
431
|
+
contentUpdatedAt: convertContentUpdatedAt(blockContentResponse.contentUpdatedAt),
|
|
455
432
|
blockInstanceId: blockContentResponse.blockInstanceId,
|
|
456
433
|
sourceAri: blockContentResponse.sourceAri,
|
|
457
434
|
product: blockContentResponse.product,
|
|
@@ -459,7 +436,7 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
459
436
|
},
|
|
460
437
|
resourceId: resourceId
|
|
461
438
|
});
|
|
462
|
-
} catch (
|
|
439
|
+
} catch (_unused3) {
|
|
463
440
|
results.push({
|
|
464
441
|
error: SyncBlockError.Errored,
|
|
465
442
|
resourceId: resourceId
|
|
@@ -584,6 +561,7 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
584
561
|
sourceAri: parsedData.sourceAri,
|
|
585
562
|
product: parsedData.product,
|
|
586
563
|
createdAt: parsedData.createdAt,
|
|
564
|
+
contentUpdatedAt: parsedData.contentUpdatedAt,
|
|
587
565
|
createdBy: parsedData.createdBy,
|
|
588
566
|
status: parsedData.status
|
|
589
567
|
},
|
|
@@ -493,7 +493,7 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
493
493
|
value: (function () {
|
|
494
494
|
var _fetchSyncBlocksData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(syncBlockNodes) {
|
|
495
495
|
var _this5 = this;
|
|
496
|
-
var nodesToFetch, _this$fetchExperience, data,
|
|
496
|
+
var nodesToFetch, _this$fetchExperience, data, hasUnexpectedError, hasExpectedError, _this$fetchExperience2, _this$fetchExperience3, _this$fetchExperience4;
|
|
497
497
|
return _regeneratorRuntime.wrap(function _callee2$(_context3) {
|
|
498
498
|
while (1) switch (_context3.prev = _context3.next) {
|
|
499
499
|
case 0:
|
|
@@ -541,7 +541,6 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
541
541
|
});
|
|
542
542
|
case 12:
|
|
543
543
|
data = _context3.sent;
|
|
544
|
-
resolvedData = [];
|
|
545
544
|
hasUnexpectedError = false;
|
|
546
545
|
hasExpectedError = false;
|
|
547
546
|
data.forEach(function (syncBlockInstance) {
|
|
@@ -553,7 +552,6 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
553
552
|
var existingSyncBlock = _this5.getFromCache(syncBlockInstance.resourceId);
|
|
554
553
|
var resolvedSyncBlockInstance = existingSyncBlock ? resolveSyncBlockInstance(existingSyncBlock, syncBlockInstance) : syncBlockInstance;
|
|
555
554
|
_this5.updateCache(resolvedSyncBlockInstance);
|
|
556
|
-
resolvedData.push(resolvedSyncBlockInstance);
|
|
557
555
|
if (syncBlockInstance.error) {
|
|
558
556
|
var _this5$fireAnalyticsE2;
|
|
559
557
|
(_this5$fireAnalyticsE2 = _this5.fireAnalyticsEvent) === null || _this5$fireAnalyticsE2 === void 0 || _this5$fireAnalyticsE2.call(_this5, fetchErrorPayload(syncBlockInstance.error, syncBlockInstance.resourceId));
|
|
@@ -582,7 +580,7 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
582
580
|
(_this$fetchExperience4 = this.fetchExperience) === null || _this$fetchExperience4 === void 0 || _this$fetchExperience4.success();
|
|
583
581
|
}
|
|
584
582
|
}
|
|
585
|
-
case
|
|
583
|
+
case 17:
|
|
586
584
|
case "end":
|
|
587
585
|
return _context3.stop();
|
|
588
586
|
}
|
package/dist/esm/utils/utils.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable require-unicode-regexp */
|
|
2
2
|
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
export var convertSyncBlockPMNodeToSyncBlockData = function convertSyncBlockPMNodeToSyncBlockData(node) {
|
|
4
5
|
return {
|
|
5
6
|
blockInstanceId: node.attrs.localId,
|
|
@@ -51,4 +52,14 @@ export var getContentIdAndProductFromResourceId = function getContentIdAndProduc
|
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
54
|
throw new Error("Invalid resourceId: ".concat(resourceId));
|
|
55
|
+
};
|
|
56
|
+
export var convertContentUpdatedAt = function convertContentUpdatedAt(contentUpdatedAt) {
|
|
57
|
+
if (typeof contentUpdatedAt === 'number' && fg('platform_synced_block_dogfooding')) {
|
|
58
|
+
try {
|
|
59
|
+
return new Date(contentUpdatedAt).toISOString();
|
|
60
|
+
} catch (_unused) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
54
65
|
};
|
package/package.json
CHANGED