@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
|
@@ -1,43 +1,18 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
import {
|
|
3
|
-
import { SyncBlockError } from '../common/types';
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
4
3
|
export var SYNC_BLOCK_FETCH_INTERVAL = 3000;
|
|
5
4
|
export var useFetchSyncBlockData = function useFetchSyncBlockData(manager, syncBlockNode) {
|
|
6
5
|
var _useState = useState(null),
|
|
7
6
|
_useState2 = _slicedToArray(_useState, 2),
|
|
8
7
|
fetchSyncBlockDataResult = _useState2[0],
|
|
9
8
|
setFetchSyncBlockDataResult = _useState2[1];
|
|
10
|
-
var fetchSyncBlockNode = useCallback(function () {
|
|
11
|
-
manager.fetchSyncBlockData(syncBlockNode).then(function (data) {
|
|
12
|
-
if (data !== null && data !== void 0 && data.error) {
|
|
13
|
-
// if there is an error, we don't want to replace real existing data with the error data
|
|
14
|
-
setFetchSyncBlockDataResult(function (prev) {
|
|
15
|
-
if (!prev || prev.error) {
|
|
16
|
-
return data;
|
|
17
|
-
}
|
|
18
|
-
return prev;
|
|
19
|
-
});
|
|
20
|
-
} else {
|
|
21
|
-
setFetchSyncBlockDataResult(data !== null && data !== void 0 ? data : null);
|
|
22
|
-
}
|
|
23
|
-
}).catch(function () {
|
|
24
|
-
//TODO: EDITOR-1921 - add error analytics
|
|
25
|
-
setFetchSyncBlockDataResult(function (prev) {
|
|
26
|
-
if (!prev || prev.error) {
|
|
27
|
-
return {
|
|
28
|
-
error: SyncBlockError.Errored
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
return prev;
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
}, [manager, syncBlockNode]);
|
|
35
9
|
useEffect(function () {
|
|
36
|
-
|
|
37
|
-
|
|
10
|
+
var unsubscribe = manager.subscribeToSyncBlockData(syncBlockNode, function (data) {
|
|
11
|
+
setFetchSyncBlockDataResult(data);
|
|
12
|
+
});
|
|
38
13
|
return function () {
|
|
39
|
-
|
|
14
|
+
unsubscribe();
|
|
40
15
|
};
|
|
41
|
-
}, [
|
|
16
|
+
}, [manager, setFetchSyncBlockDataResult, syncBlockNode]);
|
|
42
17
|
return fetchSyncBlockDataResult;
|
|
43
18
|
};
|
|
@@ -7,7 +7,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
7
7
|
import { useMemo } from 'react';
|
|
8
8
|
import { SyncBlockError } from '../../common/types';
|
|
9
9
|
import { getLocalIdFromAri, getPageIdAndTypeFromAri } from '../../utils/ari';
|
|
10
|
-
import { getContentProperty, createContentProperty, updateContentProperty } from '../../utils/contentProperty';
|
|
10
|
+
import { getContentProperty, createContentProperty, updateContentProperty, deleteContentProperty } from '../../utils/contentProperty';
|
|
11
11
|
import { isBlogPageType } from '../../utils/utils';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -274,6 +274,56 @@ var ConfluenceADFWriteProvider = /*#__PURE__*/function () {
|
|
|
274
274
|
}
|
|
275
275
|
return writeData;
|
|
276
276
|
}()
|
|
277
|
+
}, {
|
|
278
|
+
key: "deleteData",
|
|
279
|
+
value: function () {
|
|
280
|
+
var _deleteData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(resourceId) {
|
|
281
|
+
var _getPageIdAndTypeFrom3, pageId, pageType, localId, key, options, deletePayload, deleteResult;
|
|
282
|
+
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
283
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
284
|
+
case 0:
|
|
285
|
+
_getPageIdAndTypeFrom3 = getPageIdAndTypeFromAri(resourceId), pageId = _getPageIdAndTypeFrom3.id, pageType = _getPageIdAndTypeFrom3.type;
|
|
286
|
+
localId = getLocalIdFromAri(resourceId);
|
|
287
|
+
key = getContentPropertyKey(this.config.contentPropertyKey, localId);
|
|
288
|
+
options = {
|
|
289
|
+
pageId: pageId,
|
|
290
|
+
key: key,
|
|
291
|
+
cloudId: this.config.cloudId,
|
|
292
|
+
pageType: pageType
|
|
293
|
+
};
|
|
294
|
+
_context4.prev = 4;
|
|
295
|
+
_context4.next = 7;
|
|
296
|
+
return deleteContentProperty(options);
|
|
297
|
+
case 7:
|
|
298
|
+
deletePayload = _context4.sent;
|
|
299
|
+
deleteResult = isBlogPageType(pageType) ? deletePayload.data.confluence.deleteBlogPostProperty : deletePayload.data.confluence.deletePageProperty;
|
|
300
|
+
_context4.next = 14;
|
|
301
|
+
break;
|
|
302
|
+
case 11:
|
|
303
|
+
_context4.prev = 11;
|
|
304
|
+
_context4.t0 = _context4["catch"](4);
|
|
305
|
+
return _context4.abrupt("return", {
|
|
306
|
+
resourceId: resourceId,
|
|
307
|
+
success: false,
|
|
308
|
+
error: "Fail to delete ".concat(pageType, " content property")
|
|
309
|
+
});
|
|
310
|
+
case 14:
|
|
311
|
+
return _context4.abrupt("return", {
|
|
312
|
+
resourceId: resourceId,
|
|
313
|
+
success: deleteResult.success,
|
|
314
|
+
error: deleteResult.errors.join()
|
|
315
|
+
});
|
|
316
|
+
case 15:
|
|
317
|
+
case "end":
|
|
318
|
+
return _context4.stop();
|
|
319
|
+
}
|
|
320
|
+
}, _callee4, this, [[4, 11]]);
|
|
321
|
+
}));
|
|
322
|
+
function deleteData(_x7) {
|
|
323
|
+
return _deleteData.apply(this, arguments);
|
|
324
|
+
}
|
|
325
|
+
return deleteData;
|
|
326
|
+
}()
|
|
277
327
|
}]);
|
|
278
328
|
}();
|
|
279
329
|
/**
|
|
@@ -21,5 +21,12 @@ export var inMemoryWriteProvider = {
|
|
|
21
21
|
inMemStore.set(uuid, data);
|
|
22
22
|
return Promise.resolve(uuid);
|
|
23
23
|
}
|
|
24
|
+
},
|
|
25
|
+
deleteData: function deleteData(resourceId) {
|
|
26
|
+
var success = inMemStore.delete(resourceId);
|
|
27
|
+
return Promise.resolve({
|
|
28
|
+
resourceId: resourceId,
|
|
29
|
+
success: success
|
|
30
|
+
});
|
|
24
31
|
}
|
|
25
32
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
3
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
4
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
5
|
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
@@ -9,6 +10,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
9
10
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
10
11
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
12
|
import { useMemo } from 'react';
|
|
13
|
+
import { SyncBlockError } from '../common/types';
|
|
12
14
|
import { SyncBlockDataProvider } from '../providers/types';
|
|
13
15
|
import { getLocalIdFromAri, getPageARIFromResourceId } from '../utils/ari';
|
|
14
16
|
export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
@@ -37,9 +39,26 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
37
39
|
key: "fetchNodesData",
|
|
38
40
|
value: function fetchNodesData(nodes) {
|
|
39
41
|
var _this2 = this;
|
|
40
|
-
|
|
41
|
-
return
|
|
42
|
+
var resourceIdSet = new Set(nodes.map(function (node) {
|
|
43
|
+
return node.attrs.resourceId;
|
|
42
44
|
}));
|
|
45
|
+
var resourceIds = _toConsumableArray(resourceIdSet);
|
|
46
|
+
return Promise.allSettled(resourceIds.map(function (resourceId) {
|
|
47
|
+
return _this2.fetchProvider.fetchData(resourceId).then(function (data) {
|
|
48
|
+
return data;
|
|
49
|
+
}, function () {
|
|
50
|
+
return {
|
|
51
|
+
status: SyncBlockError.Errored,
|
|
52
|
+
resourceId: resourceId
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
})).then(function (results) {
|
|
56
|
+
return results.filter(function (result) {
|
|
57
|
+
return result.status === 'fulfilled';
|
|
58
|
+
}).map(function (result) {
|
|
59
|
+
return result.value;
|
|
60
|
+
});
|
|
61
|
+
});
|
|
43
62
|
}
|
|
44
63
|
|
|
45
64
|
/**
|
|
@@ -64,6 +83,43 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
64
83
|
});
|
|
65
84
|
return Promise.all(resourceIds);
|
|
66
85
|
}
|
|
86
|
+
}, {
|
|
87
|
+
key: "deleteNodesData",
|
|
88
|
+
value: function () {
|
|
89
|
+
var _deleteNodesData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(resourceIds) {
|
|
90
|
+
var _this4 = this;
|
|
91
|
+
var results;
|
|
92
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
93
|
+
while (1) switch (_context.prev = _context.next) {
|
|
94
|
+
case 0:
|
|
95
|
+
_context.next = 2;
|
|
96
|
+
return Promise.allSettled(resourceIds.map(function (resourceId) {
|
|
97
|
+
return _this4.writeProvider.deleteData(resourceId);
|
|
98
|
+
}));
|
|
99
|
+
case 2:
|
|
100
|
+
results = _context.sent;
|
|
101
|
+
return _context.abrupt("return", results.map(function (result, index) {
|
|
102
|
+
if (result.status === 'fulfilled') {
|
|
103
|
+
return result.value;
|
|
104
|
+
} else {
|
|
105
|
+
return {
|
|
106
|
+
resourceId: resourceIds[index],
|
|
107
|
+
success: false,
|
|
108
|
+
error: result.reason
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
case 4:
|
|
113
|
+
case "end":
|
|
114
|
+
return _context.stop();
|
|
115
|
+
}
|
|
116
|
+
}, _callee);
|
|
117
|
+
}));
|
|
118
|
+
function deleteNodesData(_x) {
|
|
119
|
+
return _deleteNodesData.apply(this, arguments);
|
|
120
|
+
}
|
|
121
|
+
return deleteNodesData;
|
|
122
|
+
}()
|
|
67
123
|
}, {
|
|
68
124
|
key: "getSourceId",
|
|
69
125
|
value: function getSourceId() {
|
|
@@ -97,12 +153,12 @@ export var useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvi
|
|
|
97
153
|
}, [fetchProvider, writeProvider, sourceId]);
|
|
98
154
|
};
|
|
99
155
|
var fetchURLfromARI = /*#__PURE__*/function () {
|
|
100
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
156
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(ari, sourceLocalId) {
|
|
101
157
|
var response, _payload$data, payload, url;
|
|
102
|
-
return _regeneratorRuntime.wrap(function
|
|
103
|
-
while (1) switch (
|
|
158
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
159
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
104
160
|
case 0:
|
|
105
|
-
|
|
161
|
+
_context2.next = 2;
|
|
106
162
|
return fetch('/gateway/api/object-resolver/resolve/ari', {
|
|
107
163
|
method: 'POST',
|
|
108
164
|
headers: {
|
|
@@ -114,36 +170,36 @@ var fetchURLfromARI = /*#__PURE__*/function () {
|
|
|
114
170
|
})
|
|
115
171
|
});
|
|
116
172
|
case 2:
|
|
117
|
-
response =
|
|
173
|
+
response = _context2.sent;
|
|
118
174
|
if (!response.ok) {
|
|
119
|
-
|
|
175
|
+
_context2.next = 12;
|
|
120
176
|
break;
|
|
121
177
|
}
|
|
122
|
-
|
|
178
|
+
_context2.next = 6;
|
|
123
179
|
return response.json();
|
|
124
180
|
case 6:
|
|
125
|
-
payload =
|
|
181
|
+
payload = _context2.sent;
|
|
126
182
|
url = payload === null || payload === void 0 || (_payload$data = payload.data) === null || _payload$data === void 0 ? void 0 : _payload$data.url;
|
|
127
183
|
if (!(typeof url === 'string')) {
|
|
128
|
-
|
|
184
|
+
_context2.next = 10;
|
|
129
185
|
break;
|
|
130
186
|
}
|
|
131
|
-
return
|
|
187
|
+
return _context2.abrupt("return", sourceLocalId ? url + "?block=".concat(sourceLocalId) : url);
|
|
132
188
|
case 10:
|
|
133
|
-
|
|
189
|
+
_context2.next = 13;
|
|
134
190
|
break;
|
|
135
191
|
case 12:
|
|
136
192
|
//eslint-disable-next-line no-console
|
|
137
193
|
console.error('Failed to fetch URL from ARI', response.statusText);
|
|
138
194
|
case 13:
|
|
139
|
-
return
|
|
195
|
+
return _context2.abrupt("return", undefined);
|
|
140
196
|
case 14:
|
|
141
197
|
case "end":
|
|
142
|
-
return
|
|
198
|
+
return _context2.stop();
|
|
143
199
|
}
|
|
144
|
-
},
|
|
200
|
+
}, _callee2);
|
|
145
201
|
}));
|
|
146
|
-
return function fetchURLfromARI(
|
|
202
|
+
return function fetchURLfromARI(_x2, _x3) {
|
|
147
203
|
return _ref.apply(this, arguments);
|
|
148
204
|
};
|
|
149
205
|
}();
|