@atlaskit/editor-synced-block-provider 2.2.3 → 2.3.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 +14 -0
- package/dist/cjs/hooks/useFetchSyncBlockData.js +5 -30
- package/dist/cjs/providers/confluence/confluenceContentAPI.js +50 -0
- package/dist/cjs/providers/in-memory/inMemory.js +7 -0
- package/dist/cjs/providers/syncBlockProvider.js +75 -19
- package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +319 -63
- package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +35 -11
- package/dist/cjs/store-manager/syncBlockStoreManager.js +27 -4
- package/dist/cjs/utils/contentProperty.js +54 -1
- package/dist/cjs/utils/mergeFetchSyncBlockDataResult.js +38 -0
- package/dist/es2019/hooks/useFetchSyncBlockData.js +6 -31
- package/dist/es2019/providers/confluence/confluenceContentAPI.js +31 -1
- package/dist/es2019/providers/in-memory/inMemory.js +7 -0
- package/dist/es2019/providers/syncBlockProvider.js +31 -3
- package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +172 -44
- package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +16 -4
- package/dist/es2019/store-manager/syncBlockStoreManager.js +21 -4
- package/dist/es2019/utils/contentProperty.js +54 -0
- package/dist/es2019/utils/mergeFetchSyncBlockDataResult.js +30 -0
- package/dist/esm/hooks/useFetchSyncBlockData.js +6 -31
- package/dist/esm/providers/confluence/confluenceContentAPI.js +51 -1
- package/dist/esm/providers/in-memory/inMemory.js +7 -0
- package/dist/esm/providers/syncBlockProvider.js +73 -17
- package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +320 -64
- package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +35 -11
- package/dist/esm/store-manager/syncBlockStoreManager.js +27 -4
- package/dist/esm/utils/contentProperty.js +53 -0
- package/dist/esm/utils/mergeFetchSyncBlockDataResult.js +31 -0
- package/dist/types/common/schema.d.ts +1 -1
- package/dist/types/providers/confluence/confluenceContentAPI.d.ts +2 -1
- package/dist/types/providers/syncBlockProvider.d.ts +3 -2
- package/dist/types/providers/types.d.ts +8 -0
- package/dist/types/store-manager/referenceSyncBlockStoreManager.d.ts +24 -8
- package/dist/types/store-manager/sourceSyncBlockStoreManager.d.ts +1 -1
- package/dist/types/store-manager/syncBlockStoreManager.d.ts +12 -4
- package/dist/types/utils/contentProperty.d.ts +35 -0
- package/dist/types/utils/mergeFetchSyncBlockDataResult.d.ts +12 -0
- package/dist/types-ts4.5/common/schema.d.ts +1 -1
- package/dist/types-ts4.5/providers/confluence/confluenceContentAPI.d.ts +2 -1
- package/dist/types-ts4.5/providers/syncBlockProvider.d.ts +3 -2
- package/dist/types-ts4.5/providers/types.d.ts +8 -0
- package/dist/types-ts4.5/store-manager/referenceSyncBlockStoreManager.d.ts +24 -8
- package/dist/types-ts4.5/store-manager/sourceSyncBlockStoreManager.d.ts +1 -1
- package/dist/types-ts4.5/store-manager/syncBlockStoreManager.d.ts +12 -4
- package/dist/types-ts4.5/utils/contentProperty.d.ts +35 -0
- package/dist/types-ts4.5/utils/mergeFetchSyncBlockDataResult.d.ts +12 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-provider
|
|
2
2
|
|
|
3
|
+
## 2.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`eb9f8e2ab6fb5`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/eb9f8e2ab6fb5) -
|
|
8
|
+
[EDITOR-2543] Save bodiedSyncBlock deletion to BE instantly
|
|
9
|
+
|
|
10
|
+
## 2.3.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- [`6f9f13ab4687d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6f9f13ab4687d) -
|
|
15
|
+
EDITOR-2451 update sync-block refreshed logic based on experience principles
|
|
16
|
+
|
|
3
17
|
## 2.2.3
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -7,44 +7,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useFetchSyncBlockData = exports.SYNC_BLOCK_FETCH_INTERVAL = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
9
|
var _react = require("react");
|
|
10
|
-
var _types = require("../common/types");
|
|
11
10
|
var SYNC_BLOCK_FETCH_INTERVAL = exports.SYNC_BLOCK_FETCH_INTERVAL = 3000;
|
|
12
11
|
var useFetchSyncBlockData = exports.useFetchSyncBlockData = function useFetchSyncBlockData(manager, syncBlockNode) {
|
|
13
12
|
var _useState = (0, _react.useState)(null),
|
|
14
13
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
15
14
|
fetchSyncBlockDataResult = _useState2[0],
|
|
16
15
|
setFetchSyncBlockDataResult = _useState2[1];
|
|
17
|
-
var fetchSyncBlockNode = (0, _react.useCallback)(function () {
|
|
18
|
-
manager.fetchSyncBlockData(syncBlockNode).then(function (data) {
|
|
19
|
-
if (data !== null && data !== void 0 && data.error) {
|
|
20
|
-
// if there is an error, we don't want to replace real existing data with the error data
|
|
21
|
-
setFetchSyncBlockDataResult(function (prev) {
|
|
22
|
-
if (!prev || prev.error) {
|
|
23
|
-
return data;
|
|
24
|
-
}
|
|
25
|
-
return prev;
|
|
26
|
-
});
|
|
27
|
-
} else {
|
|
28
|
-
setFetchSyncBlockDataResult(data !== null && data !== void 0 ? data : null);
|
|
29
|
-
}
|
|
30
|
-
}).catch(function () {
|
|
31
|
-
//TODO: EDITOR-1921 - add error analytics
|
|
32
|
-
setFetchSyncBlockDataResult(function (prev) {
|
|
33
|
-
if (!prev || prev.error) {
|
|
34
|
-
return {
|
|
35
|
-
error: _types.SyncBlockError.Errored
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
return prev;
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
}, [manager, syncBlockNode]);
|
|
42
16
|
(0, _react.useEffect)(function () {
|
|
43
|
-
|
|
44
|
-
|
|
17
|
+
var unsubscribe = manager.subscribeToSyncBlockData(syncBlockNode, function (data) {
|
|
18
|
+
setFetchSyncBlockDataResult(data);
|
|
19
|
+
});
|
|
45
20
|
return function () {
|
|
46
|
-
|
|
21
|
+
unsubscribe();
|
|
47
22
|
};
|
|
48
|
-
}, [
|
|
23
|
+
}, [manager, setFetchSyncBlockDataResult, syncBlockNode]);
|
|
49
24
|
return fetchSyncBlockDataResult;
|
|
50
25
|
};
|
|
@@ -280,6 +280,56 @@ var ConfluenceADFWriteProvider = /*#__PURE__*/function () {
|
|
|
280
280
|
}
|
|
281
281
|
return writeData;
|
|
282
282
|
}()
|
|
283
|
+
}, {
|
|
284
|
+
key: "deleteData",
|
|
285
|
+
value: function () {
|
|
286
|
+
var _deleteData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(resourceId) {
|
|
287
|
+
var _getPageIdAndTypeFrom3, pageId, pageType, localId, key, options, deletePayload, deleteResult;
|
|
288
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
289
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
290
|
+
case 0:
|
|
291
|
+
_getPageIdAndTypeFrom3 = (0, _ari.getPageIdAndTypeFromAri)(resourceId), pageId = _getPageIdAndTypeFrom3.id, pageType = _getPageIdAndTypeFrom3.type;
|
|
292
|
+
localId = (0, _ari.getLocalIdFromAri)(resourceId);
|
|
293
|
+
key = getContentPropertyKey(this.config.contentPropertyKey, localId);
|
|
294
|
+
options = {
|
|
295
|
+
pageId: pageId,
|
|
296
|
+
key: key,
|
|
297
|
+
cloudId: this.config.cloudId,
|
|
298
|
+
pageType: pageType
|
|
299
|
+
};
|
|
300
|
+
_context4.prev = 4;
|
|
301
|
+
_context4.next = 7;
|
|
302
|
+
return (0, _contentProperty4.deleteContentProperty)(options);
|
|
303
|
+
case 7:
|
|
304
|
+
deletePayload = _context4.sent;
|
|
305
|
+
deleteResult = (0, _utils.isBlogPageType)(pageType) ? deletePayload.data.confluence.deleteBlogPostProperty : deletePayload.data.confluence.deletePageProperty;
|
|
306
|
+
_context4.next = 14;
|
|
307
|
+
break;
|
|
308
|
+
case 11:
|
|
309
|
+
_context4.prev = 11;
|
|
310
|
+
_context4.t0 = _context4["catch"](4);
|
|
311
|
+
return _context4.abrupt("return", {
|
|
312
|
+
resourceId: resourceId,
|
|
313
|
+
success: false,
|
|
314
|
+
error: "Fail to delete ".concat(pageType, " content property")
|
|
315
|
+
});
|
|
316
|
+
case 14:
|
|
317
|
+
return _context4.abrupt("return", {
|
|
318
|
+
resourceId: resourceId,
|
|
319
|
+
success: deleteResult.success,
|
|
320
|
+
error: deleteResult.errors.join()
|
|
321
|
+
});
|
|
322
|
+
case 15:
|
|
323
|
+
case "end":
|
|
324
|
+
return _context4.stop();
|
|
325
|
+
}
|
|
326
|
+
}, _callee4, this, [[4, 11]]);
|
|
327
|
+
}));
|
|
328
|
+
function deleteData(_x7) {
|
|
329
|
+
return _deleteData.apply(this, arguments);
|
|
330
|
+
}
|
|
331
|
+
return deleteData;
|
|
332
|
+
}()
|
|
283
333
|
}]);
|
|
284
334
|
}();
|
|
285
335
|
/**
|
|
@@ -27,5 +27,12 @@ var inMemoryWriteProvider = exports.inMemoryWriteProvider = {
|
|
|
27
27
|
inMemStore.set(uuid, data);
|
|
28
28
|
return Promise.resolve(uuid);
|
|
29
29
|
}
|
|
30
|
+
},
|
|
31
|
+
deleteData: function deleteData(resourceId) {
|
|
32
|
+
var success = inMemStore.delete(resourceId);
|
|
33
|
+
return Promise.resolve({
|
|
34
|
+
resourceId: resourceId,
|
|
35
|
+
success: success
|
|
36
|
+
});
|
|
30
37
|
}
|
|
31
38
|
};
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useMemoizedSyncedBlockProvider = exports.SyncBlockProvider = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
13
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -14,7 +15,8 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
14
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
17
|
var _react = require("react");
|
|
17
|
-
var _types = require("../
|
|
18
|
+
var _types = require("../common/types");
|
|
19
|
+
var _types2 = require("../providers/types");
|
|
18
20
|
var _ari = require("../utils/ari");
|
|
19
21
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
20
22
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
@@ -44,9 +46,26 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
44
46
|
key: "fetchNodesData",
|
|
45
47
|
value: function fetchNodesData(nodes) {
|
|
46
48
|
var _this2 = this;
|
|
47
|
-
|
|
48
|
-
return
|
|
49
|
+
var resourceIdSet = new Set(nodes.map(function (node) {
|
|
50
|
+
return node.attrs.resourceId;
|
|
49
51
|
}));
|
|
52
|
+
var resourceIds = (0, _toConsumableArray2.default)(resourceIdSet);
|
|
53
|
+
return Promise.allSettled(resourceIds.map(function (resourceId) {
|
|
54
|
+
return _this2.fetchProvider.fetchData(resourceId).then(function (data) {
|
|
55
|
+
return data;
|
|
56
|
+
}, function () {
|
|
57
|
+
return {
|
|
58
|
+
status: _types.SyncBlockError.Errored,
|
|
59
|
+
resourceId: resourceId
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
})).then(function (results) {
|
|
63
|
+
return results.filter(function (result) {
|
|
64
|
+
return result.status === 'fulfilled';
|
|
65
|
+
}).map(function (result) {
|
|
66
|
+
return result.value;
|
|
67
|
+
});
|
|
68
|
+
});
|
|
50
69
|
}
|
|
51
70
|
|
|
52
71
|
/**
|
|
@@ -71,6 +90,43 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
71
90
|
});
|
|
72
91
|
return Promise.all(resourceIds);
|
|
73
92
|
}
|
|
93
|
+
}, {
|
|
94
|
+
key: "deleteNodesData",
|
|
95
|
+
value: function () {
|
|
96
|
+
var _deleteNodesData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(resourceIds) {
|
|
97
|
+
var _this4 = this;
|
|
98
|
+
var results;
|
|
99
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
100
|
+
while (1) switch (_context.prev = _context.next) {
|
|
101
|
+
case 0:
|
|
102
|
+
_context.next = 2;
|
|
103
|
+
return Promise.allSettled(resourceIds.map(function (resourceId) {
|
|
104
|
+
return _this4.writeProvider.deleteData(resourceId);
|
|
105
|
+
}));
|
|
106
|
+
case 2:
|
|
107
|
+
results = _context.sent;
|
|
108
|
+
return _context.abrupt("return", results.map(function (result, index) {
|
|
109
|
+
if (result.status === 'fulfilled') {
|
|
110
|
+
return result.value;
|
|
111
|
+
} else {
|
|
112
|
+
return {
|
|
113
|
+
resourceId: resourceIds[index],
|
|
114
|
+
success: false,
|
|
115
|
+
error: result.reason
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
case 4:
|
|
120
|
+
case "end":
|
|
121
|
+
return _context.stop();
|
|
122
|
+
}
|
|
123
|
+
}, _callee);
|
|
124
|
+
}));
|
|
125
|
+
function deleteNodesData(_x) {
|
|
126
|
+
return _deleteNodesData.apply(this, arguments);
|
|
127
|
+
}
|
|
128
|
+
return deleteNodesData;
|
|
129
|
+
}()
|
|
74
130
|
}, {
|
|
75
131
|
key: "getSourceId",
|
|
76
132
|
value: function getSourceId() {
|
|
@@ -97,19 +153,19 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
97
153
|
return pageARI ? fetchURLfromARI(pageARI, sourceLocalId) : Promise.resolve(undefined);
|
|
98
154
|
}
|
|
99
155
|
}]);
|
|
100
|
-
}(
|
|
156
|
+
}(_types2.SyncBlockDataProvider);
|
|
101
157
|
var useMemoizedSyncedBlockProvider = exports.useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId) {
|
|
102
158
|
return (0, _react.useMemo)(function () {
|
|
103
159
|
return new SyncBlockProvider(fetchProvider, writeProvider, sourceId);
|
|
104
160
|
}, [fetchProvider, writeProvider, sourceId]);
|
|
105
161
|
};
|
|
106
162
|
var fetchURLfromARI = /*#__PURE__*/function () {
|
|
107
|
-
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
163
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(ari, sourceLocalId) {
|
|
108
164
|
var response, _payload$data, payload, url;
|
|
109
|
-
return _regenerator.default.wrap(function
|
|
110
|
-
while (1) switch (
|
|
165
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
166
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
111
167
|
case 0:
|
|
112
|
-
|
|
168
|
+
_context2.next = 2;
|
|
113
169
|
return fetch('/gateway/api/object-resolver/resolve/ari', {
|
|
114
170
|
method: 'POST',
|
|
115
171
|
headers: {
|
|
@@ -121,36 +177,36 @@ var fetchURLfromARI = /*#__PURE__*/function () {
|
|
|
121
177
|
})
|
|
122
178
|
});
|
|
123
179
|
case 2:
|
|
124
|
-
response =
|
|
180
|
+
response = _context2.sent;
|
|
125
181
|
if (!response.ok) {
|
|
126
|
-
|
|
182
|
+
_context2.next = 12;
|
|
127
183
|
break;
|
|
128
184
|
}
|
|
129
|
-
|
|
185
|
+
_context2.next = 6;
|
|
130
186
|
return response.json();
|
|
131
187
|
case 6:
|
|
132
|
-
payload =
|
|
188
|
+
payload = _context2.sent;
|
|
133
189
|
url = payload === null || payload === void 0 || (_payload$data = payload.data) === null || _payload$data === void 0 ? void 0 : _payload$data.url;
|
|
134
190
|
if (!(typeof url === 'string')) {
|
|
135
|
-
|
|
191
|
+
_context2.next = 10;
|
|
136
192
|
break;
|
|
137
193
|
}
|
|
138
|
-
return
|
|
194
|
+
return _context2.abrupt("return", sourceLocalId ? url + "?block=".concat(sourceLocalId) : url);
|
|
139
195
|
case 10:
|
|
140
|
-
|
|
196
|
+
_context2.next = 13;
|
|
141
197
|
break;
|
|
142
198
|
case 12:
|
|
143
199
|
//eslint-disable-next-line no-console
|
|
144
200
|
console.error('Failed to fetch URL from ARI', response.statusText);
|
|
145
201
|
case 13:
|
|
146
|
-
return
|
|
202
|
+
return _context2.abrupt("return", undefined);
|
|
147
203
|
case 14:
|
|
148
204
|
case "end":
|
|
149
|
-
return
|
|
205
|
+
return _context2.stop();
|
|
150
206
|
}
|
|
151
|
-
},
|
|
207
|
+
}, _callee2);
|
|
152
208
|
}));
|
|
153
|
-
return function fetchURLfromARI(
|
|
209
|
+
return function fetchURLfromARI(_x2, _x3) {
|
|
154
210
|
return _ref.apply(this, arguments);
|
|
155
211
|
};
|
|
156
212
|
}();
|