@atlaskit/editor-synced-block-provider 3.11.0 → 3.12.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 +17 -0
- package/dist/cjs/clients/block-service/blockService.js +2 -2
- package/dist/cjs/providers/block-service/blockServiceAPI.js +1 -1
- package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +92 -136
- package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +95 -124
- package/dist/cjs/utils/errorHandling.js +79 -19
- package/dist/cjs/utils/experienceTracking.js +119 -0
- package/dist/es2019/clients/block-service/blockService.js +2 -2
- package/dist/es2019/providers/block-service/blockServiceAPI.js +1 -1
- package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +85 -126
- package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +80 -89
- package/dist/es2019/utils/errorHandling.js +61 -10
- package/dist/es2019/utils/experienceTracking.js +113 -0
- package/dist/esm/clients/block-service/blockService.js +2 -2
- package/dist/esm/providers/block-service/blockServiceAPI.js +1 -1
- package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +93 -137
- package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +96 -125
- package/dist/esm/utils/errorHandling.js +77 -18
- package/dist/esm/utils/experienceTracking.js +113 -0
- package/dist/types/clients/block-service/blockService.d.ts +5 -5
- package/dist/types/providers/block-service/blockServiceAPI.d.ts +1 -1
- package/dist/types/providers/types.d.ts +5 -5
- package/dist/types/store-manager/referenceSyncBlockStoreManager.d.ts +0 -1
- package/dist/types/store-manager/sourceSyncBlockStoreManager.d.ts +1 -5
- package/dist/types/utils/errorHandling.d.ts +14 -9
- package/dist/types/utils/experienceTracking.d.ts +51 -0
- package/dist/types-ts4.5/clients/block-service/blockService.d.ts +5 -5
- package/dist/types-ts4.5/providers/block-service/blockServiceAPI.d.ts +1 -1
- package/dist/types-ts4.5/providers/types.d.ts +5 -5
- package/dist/types-ts4.5/store-manager/referenceSyncBlockStoreManager.d.ts +0 -1
- package/dist/types-ts4.5/store-manager/sourceSyncBlockStoreManager.d.ts +1 -5
- package/dist/types-ts4.5/utils/errorHandling.d.ts +14 -9
- package/dist/types-ts4.5/utils/experienceTracking.d.ts +51 -0
- package/package.json +2 -2
|
@@ -8,7 +8,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
8
8
|
import { logException } from '@atlaskit/editor-common/monitoring';
|
|
9
9
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
10
10
|
import { SyncBlockError } from '../common/types';
|
|
11
|
-
import { updateErrorPayload, createErrorPayload, deleteErrorPayload, updateCacheErrorPayload, getSourceInfoErrorPayload } from '../utils/errorHandling';
|
|
11
|
+
import { updateErrorPayload, createErrorPayload, deleteErrorPayload, updateCacheErrorPayload, getSourceInfoErrorPayload, updateSuccessPayload, createSuccessPayload, deleteSuccessPayload } from '../utils/errorHandling';
|
|
12
|
+
import { getCreateSourceExperience, getDeleteSourceExperience, getSaveSourceExperience } from '../utils/experienceTracking';
|
|
12
13
|
import { convertSyncBlockPMNodeToSyncBlockData } from '../utils/utils';
|
|
13
14
|
// A store manager responsible for the lifecycle and state management of source sync blocks in an editor instance.
|
|
14
15
|
// Designed to manage local in-memory state and synchronize with an external data provider.
|
|
@@ -32,21 +33,9 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
32
33
|
key: "setFireAnalyticsEvent",
|
|
33
34
|
value: function setFireAnalyticsEvent(fireAnalyticsEvent) {
|
|
34
35
|
this.fireAnalyticsEvent = fireAnalyticsEvent;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
value: function setCreateExperience(createExperience) {
|
|
39
|
-
this.createExperience = createExperience;
|
|
40
|
-
}
|
|
41
|
-
}, {
|
|
42
|
-
key: "setSaveExperience",
|
|
43
|
-
value: function setSaveExperience(saveExperience) {
|
|
44
|
-
this.saveExperience = saveExperience;
|
|
45
|
-
}
|
|
46
|
-
}, {
|
|
47
|
-
key: "setDeleteExperience",
|
|
48
|
-
value: function setDeleteExperience(deleteExperience) {
|
|
49
|
-
this.deleteExperience = deleteExperience;
|
|
36
|
+
this.createExperience = getCreateSourceExperience(fireAnalyticsEvent);
|
|
37
|
+
this.saveExperience = getSaveSourceExperience(fireAnalyticsEvent);
|
|
38
|
+
this.deleteExperience = getDeleteSourceExperience(fireAnalyticsEvent);
|
|
50
39
|
}
|
|
51
40
|
}, {
|
|
52
41
|
key: "isSourceBlock",
|
|
@@ -96,7 +85,7 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
96
85
|
value: (function () {
|
|
97
86
|
var _flush = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
98
87
|
var _this2 = this;
|
|
99
|
-
var bodiedSyncBlockNodes, bodiedSyncBlockData, _this$saveExperience, writeResults,
|
|
88
|
+
var bodiedSyncBlockNodes, bodiedSyncBlockData, _this$saveExperience, writeResults, _this$saveExperience2, _this$saveExperience3, _this$fireAnalyticsEv2;
|
|
100
89
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
101
90
|
while (1) switch (_context.prev = _context.next) {
|
|
102
91
|
case 0:
|
|
@@ -130,17 +119,16 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
130
119
|
}
|
|
131
120
|
return _context.abrupt("return", Promise.resolve(true));
|
|
132
121
|
case 6:
|
|
133
|
-
// only start the save experience if we have sync blocks to save
|
|
134
|
-
if (fg('platform_synced_block_dogfooding')) {
|
|
135
|
-
(_this$saveExperience = this.saveExperience) === null || _this$saveExperience === void 0 || _this$saveExperience.start({});
|
|
136
|
-
}
|
|
137
|
-
;
|
|
138
122
|
if (this.dataProvider) {
|
|
139
|
-
_context.next =
|
|
123
|
+
_context.next = 8;
|
|
140
124
|
break;
|
|
141
125
|
}
|
|
142
126
|
throw new Error('Data provider not set');
|
|
143
|
-
case
|
|
127
|
+
case 8:
|
|
128
|
+
if (fg('platform_synced_block_dogfooding')) {
|
|
129
|
+
(_this$saveExperience = this.saveExperience) === null || _this$saveExperience === void 0 || _this$saveExperience.start({});
|
|
130
|
+
}
|
|
131
|
+
;
|
|
144
132
|
_context.next = 12;
|
|
145
133
|
return this.dataProvider.writeNodesData(bodiedSyncBlockNodes, bodiedSyncBlockData);
|
|
146
134
|
case 12:
|
|
@@ -154,75 +142,50 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
154
142
|
}
|
|
155
143
|
}
|
|
156
144
|
});
|
|
157
|
-
successfulSaved = writeResults.filter(function (result) {
|
|
158
|
-
return result.resourceId && !result.error;
|
|
159
|
-
}).map(function (result) {
|
|
160
|
-
return {
|
|
161
|
-
resourceId: result.resourceId
|
|
162
|
-
};
|
|
163
|
-
});
|
|
164
|
-
failedSave = writeResults.filter(function (result) {
|
|
165
|
-
return !result.resourceId || result.error;
|
|
166
|
-
}).map(function (result) {
|
|
167
|
-
return {
|
|
168
|
-
resourceId: result.resourceId || 'unknown',
|
|
169
|
-
failReason: result.error || 'Failed to save sync blocks'
|
|
170
|
-
};
|
|
171
|
-
});
|
|
172
145
|
if (!writeResults.every(function (result) {
|
|
173
146
|
return result.resourceId && !result.error;
|
|
174
147
|
})) {
|
|
175
|
-
_context.next =
|
|
148
|
+
_context.next = 20;
|
|
176
149
|
break;
|
|
177
150
|
}
|
|
178
151
|
if (fg('platform_synced_block_dogfooding')) {
|
|
179
|
-
(_this$saveExperience2 = this.saveExperience) === null || _this$saveExperience2 === void 0 || _this$saveExperience2.success(
|
|
180
|
-
|
|
181
|
-
|
|
152
|
+
(_this$saveExperience2 = this.saveExperience) === null || _this$saveExperience2 === void 0 || _this$saveExperience2.success();
|
|
153
|
+
writeResults.forEach(function (result) {
|
|
154
|
+
if (result.resourceId && !result.error) {
|
|
155
|
+
var _this2$fireAnalyticsE;
|
|
156
|
+
(_this2$fireAnalyticsE = _this2.fireAnalyticsEvent) === null || _this2$fireAnalyticsE === void 0 || _this2$fireAnalyticsE.call(_this2, updateSuccessPayload(result.resourceId, false));
|
|
182
157
|
}
|
|
183
158
|
});
|
|
184
159
|
}
|
|
185
160
|
;
|
|
186
161
|
return _context.abrupt("return", true);
|
|
187
|
-
case
|
|
162
|
+
case 20:
|
|
188
163
|
if (fg('platform_synced_block_dogfooding')) {
|
|
189
|
-
(_this$saveExperience3 = this.saveExperience) === null || _this$saveExperience3 === void 0 || _this$saveExperience3.failure(
|
|
190
|
-
metadata: {
|
|
191
|
-
successfulSaved: successfulSaved,
|
|
192
|
-
failedSave: failedSave
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
} else {
|
|
196
|
-
writeResults.filter(function (result) {
|
|
197
|
-
return !result.resourceId || result.error;
|
|
198
|
-
}).forEach(function (result) {
|
|
199
|
-
var _this2$fireAnalyticsE;
|
|
200
|
-
(_this2$fireAnalyticsE = _this2.fireAnalyticsEvent) === null || _this2$fireAnalyticsE === void 0 || _this2$fireAnalyticsE.call(_this2, updateErrorPayload(result.error || 'Failed to write data'));
|
|
201
|
-
});
|
|
164
|
+
(_this$saveExperience3 = this.saveExperience) === null || _this$saveExperience3 === void 0 || _this$saveExperience3.failure();
|
|
202
165
|
}
|
|
166
|
+
writeResults.filter(function (result) {
|
|
167
|
+
return !result.resourceId || result.error;
|
|
168
|
+
}).forEach(function (result) {
|
|
169
|
+
var _this2$fireAnalyticsE2;
|
|
170
|
+
(_this2$fireAnalyticsE2 = _this2.fireAnalyticsEvent) === null || _this2$fireAnalyticsE2 === void 0 || _this2$fireAnalyticsE2.call(_this2, updateErrorPayload(result.error || 'Failed to write data', result.resourceId));
|
|
171
|
+
});
|
|
203
172
|
return _context.abrupt("return", false);
|
|
204
|
-
case
|
|
205
|
-
_context.next =
|
|
173
|
+
case 23:
|
|
174
|
+
_context.next = 30;
|
|
206
175
|
break;
|
|
207
|
-
case
|
|
208
|
-
_context.prev =
|
|
176
|
+
case 25:
|
|
177
|
+
_context.prev = 25;
|
|
209
178
|
_context.t0 = _context["catch"](0);
|
|
210
179
|
logException(_context.t0, {
|
|
211
180
|
location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
|
|
212
181
|
});
|
|
213
|
-
|
|
214
|
-
(_this$saveExperience4 = this.saveExperience) === null || _this$saveExperience4 === void 0 || _this$saveExperience4.failure({
|
|
215
|
-
reason: _context.t0.message
|
|
216
|
-
});
|
|
217
|
-
} else {
|
|
218
|
-
(_this$fireAnalyticsEv2 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv2 === void 0 || _this$fireAnalyticsEv2.call(this, updateErrorPayload(_context.t0.message));
|
|
219
|
-
}
|
|
182
|
+
(_this$fireAnalyticsEv2 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv2 === void 0 || _this$fireAnalyticsEv2.call(this, updateErrorPayload(_context.t0.message));
|
|
220
183
|
return _context.abrupt("return", false);
|
|
221
|
-
case
|
|
184
|
+
case 30:
|
|
222
185
|
case "end":
|
|
223
186
|
return _context.stop();
|
|
224
187
|
}
|
|
225
|
-
}, _callee, this, [[0,
|
|
188
|
+
}, _callee, this, [[0, 25]]);
|
|
226
189
|
}));
|
|
227
190
|
function flush() {
|
|
228
191
|
return _flush.apply(this, arguments);
|
|
@@ -253,6 +216,13 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
253
216
|
value: function commitPendingCreation(success) {
|
|
254
217
|
if (success && this.creationCallback) {
|
|
255
218
|
this.creationCallback();
|
|
219
|
+
if (fg('platform_synced_block_dogfooding')) {
|
|
220
|
+
var _this$fireAnalyticsEv3;
|
|
221
|
+
(_this$fireAnalyticsEv3 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv3 === void 0 || _this$fireAnalyticsEv3.call(this, createSuccessPayload(this.pendingResourceId || ''));
|
|
222
|
+
}
|
|
223
|
+
} else if (success && !this.creationCallback && fg('platform_synced_block_dogfooding')) {
|
|
224
|
+
var _this$fireAnalyticsEv4;
|
|
225
|
+
(_this$fireAnalyticsEv4 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv4 === void 0 || _this$fireAnalyticsEv4.call(this, createErrorPayload('creation callback missing', this.pendingResourceId));
|
|
256
226
|
}
|
|
257
227
|
this.pendingResourceId = undefined;
|
|
258
228
|
this.creationCallback = undefined;
|
|
@@ -309,11 +279,13 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
309
279
|
value: function createBodiedSyncBlockNode(attrs) {
|
|
310
280
|
var _this4 = this;
|
|
311
281
|
try {
|
|
282
|
+
var _this$createExperienc;
|
|
312
283
|
if (!this.dataProvider) {
|
|
313
284
|
throw new Error('Data provider not set');
|
|
314
285
|
}
|
|
315
286
|
var resourceId = attrs.resourceId,
|
|
316
287
|
blockInstanceId = attrs.localId;
|
|
288
|
+
(_this$createExperienc = this.createExperience) === null || _this$createExperienc === void 0 || _this$createExperienc.start({});
|
|
317
289
|
this.dataProvider.createNodeData({
|
|
318
290
|
content: [],
|
|
319
291
|
blockInstanceId: blockInstanceId,
|
|
@@ -322,50 +294,45 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
322
294
|
var resourceId = result.resourceId;
|
|
323
295
|
if (resourceId) {
|
|
324
296
|
_this4.commitPendingCreation(true);
|
|
297
|
+
if (fg('platform_synced_block_dogfooding')) {
|
|
298
|
+
var _this4$createExperien;
|
|
299
|
+
(_this4$createExperien = _this4.createExperience) === null || _this4$createExperien === void 0 || _this4$createExperien.success();
|
|
300
|
+
}
|
|
325
301
|
} else {
|
|
302
|
+
var _this4$fireAnalyticsE;
|
|
326
303
|
_this4.commitPendingCreation(false);
|
|
327
304
|
if (fg('platform_synced_block_dogfooding')) {
|
|
328
|
-
var _this4$
|
|
329
|
-
(_this4$
|
|
305
|
+
var _this4$createExperien2;
|
|
306
|
+
(_this4$createExperien2 = _this4.createExperience) === null || _this4$createExperien2 === void 0 || _this4$createExperien2.failure({
|
|
330
307
|
reason: result.error || 'Failed to create bodied sync block'
|
|
331
308
|
});
|
|
332
|
-
} else {
|
|
333
|
-
var _this4$fireAnalyticsE;
|
|
334
|
-
(_this4$fireAnalyticsE = _this4.fireAnalyticsEvent) === null || _this4$fireAnalyticsE === void 0 || _this4$fireAnalyticsE.call(_this4, createErrorPayload(result.error || 'Failed to create bodied sync block'));
|
|
335
309
|
}
|
|
310
|
+
(_this4$fireAnalyticsE = _this4.fireAnalyticsEvent) === null || _this4$fireAnalyticsE === void 0 || _this4$fireAnalyticsE.call(_this4, createErrorPayload(result.error || 'Failed to create bodied sync block', resourceId));
|
|
336
311
|
}
|
|
337
312
|
}).catch(function (error) {
|
|
313
|
+
var _this4$fireAnalyticsE2;
|
|
338
314
|
_this4.commitPendingCreation(false);
|
|
339
315
|
logException(error, {
|
|
340
316
|
location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
|
|
341
317
|
});
|
|
342
318
|
if (fg('platform_synced_block_dogfooding')) {
|
|
343
|
-
var _this4$
|
|
344
|
-
(_this4$
|
|
319
|
+
var _this4$createExperien3;
|
|
320
|
+
(_this4$createExperien3 = _this4.createExperience) === null || _this4$createExperien3 === void 0 || _this4$createExperien3.failure({
|
|
345
321
|
reason: error.message
|
|
346
322
|
});
|
|
347
|
-
} else {
|
|
348
|
-
var _this4$fireAnalyticsE2;
|
|
349
|
-
(_this4$fireAnalyticsE2 = _this4.fireAnalyticsEvent) === null || _this4$fireAnalyticsE2 === void 0 || _this4$fireAnalyticsE2.call(_this4, createErrorPayload(error.message));
|
|
350
323
|
}
|
|
324
|
+
(_this4$fireAnalyticsE2 = _this4.fireAnalyticsEvent) === null || _this4$fireAnalyticsE2 === void 0 || _this4$fireAnalyticsE2.call(_this4, createErrorPayload(error.message, resourceId));
|
|
351
325
|
});
|
|
352
326
|
this.registerPendingCreation(resourceId);
|
|
353
327
|
} catch (error) {
|
|
328
|
+
var _this$fireAnalyticsEv5;
|
|
354
329
|
if (this.hasPendingCreation()) {
|
|
355
330
|
this.commitPendingCreation(false);
|
|
356
331
|
}
|
|
357
332
|
logException(error, {
|
|
358
333
|
location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
|
|
359
334
|
});
|
|
360
|
-
|
|
361
|
-
var _this$createExperienc;
|
|
362
|
-
(_this$createExperienc = this.createExperience) === null || _this$createExperienc === void 0 || _this$createExperienc.failure({
|
|
363
|
-
reason: error.message
|
|
364
|
-
});
|
|
365
|
-
} else {
|
|
366
|
-
var _this$fireAnalyticsEv3;
|
|
367
|
-
(_this$fireAnalyticsEv3 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv3 === void 0 || _this$fireAnalyticsEv3.call(this, createErrorPayload(error.message));
|
|
368
|
-
}
|
|
335
|
+
(_this$fireAnalyticsEv5 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv5 === void 0 || _this$fireAnalyticsEv5.call(this, createErrorPayload(error.message));
|
|
369
336
|
}
|
|
370
337
|
}
|
|
371
338
|
}, {
|
|
@@ -373,7 +340,7 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
373
340
|
value: function () {
|
|
374
341
|
var _delete2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(syncBlockIds, onDelete, onDeleteCompleted) {
|
|
375
342
|
var _this5 = this;
|
|
376
|
-
var results, callback, isDeleteSuccessful, _this$
|
|
343
|
+
var _this$deleteExperienc, results, callback, isDeleteSuccessful, _this$deleteExperienc2, _this$deleteExperienc3;
|
|
377
344
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
378
345
|
while (1) switch (_context2.prev = _context2.next) {
|
|
379
346
|
case 0:
|
|
@@ -387,11 +354,14 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
387
354
|
syncBlockIds.forEach(function (Ids) {
|
|
388
355
|
_this5.setPendingDeletion(Ids, true);
|
|
389
356
|
});
|
|
390
|
-
|
|
357
|
+
if (fg('platform_synced_block_dogfooding')) {
|
|
358
|
+
(_this$deleteExperienc = this.deleteExperience) === null || _this$deleteExperienc === void 0 || _this$deleteExperienc.start({});
|
|
359
|
+
}
|
|
360
|
+
_context2.next = 7;
|
|
391
361
|
return this.dataProvider.deleteNodesData(syncBlockIds.map(function (attrs) {
|
|
392
362
|
return attrs.resourceId;
|
|
393
363
|
}));
|
|
394
|
-
case
|
|
364
|
+
case 7:
|
|
395
365
|
results = _context2.sent;
|
|
396
366
|
isDeleteSuccessful = results.every(function (result) {
|
|
397
367
|
return result.success;
|
|
@@ -403,66 +373,57 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
403
373
|
return _this5.syncBlockCache.delete(Ids.resourceId);
|
|
404
374
|
};
|
|
405
375
|
this.clearPendingDeletion();
|
|
376
|
+
if (fg('platform_synced_block_dogfooding')) {
|
|
377
|
+
(_this$deleteExperienc2 = this.deleteExperience) === null || _this$deleteExperienc2 === void 0 || _this$deleteExperienc2.success();
|
|
378
|
+
results.forEach(function (result) {
|
|
379
|
+
var _this5$fireAnalyticsE;
|
|
380
|
+
(_this5$fireAnalyticsE = _this5.fireAnalyticsEvent) === null || _this5$fireAnalyticsE === void 0 || _this5$fireAnalyticsE.call(_this5, deleteSuccessPayload(result.resourceId));
|
|
381
|
+
});
|
|
382
|
+
}
|
|
406
383
|
} else {
|
|
407
384
|
callback = function callback(Ids) {
|
|
408
385
|
_this5.setPendingDeletion(Ids, false);
|
|
409
386
|
};
|
|
410
387
|
if (fg('platform_synced_block_dogfooding')) {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
return !result.success;
|
|
420
|
-
}).map(function (result) {
|
|
421
|
-
return {
|
|
422
|
-
resourceId: result.resourceId || 'unknown',
|
|
423
|
-
failReason: result.error || 'Failed to delete sync block'
|
|
424
|
-
};
|
|
425
|
-
});
|
|
426
|
-
(_this$deleteExperienc = this.deleteExperience) === null || _this$deleteExperienc === void 0 || _this$deleteExperienc.failure({
|
|
427
|
-
metadata: {
|
|
428
|
-
successfulDeleted: successfulDeleted,
|
|
429
|
-
failedDelete: failedDelete
|
|
388
|
+
(_this$deleteExperienc3 = this.deleteExperience) === null || _this$deleteExperienc3 === void 0 || _this$deleteExperienc3.failure();
|
|
389
|
+
results.forEach(function (result) {
|
|
390
|
+
if (result.success) {
|
|
391
|
+
var _this5$fireAnalyticsE2;
|
|
392
|
+
(_this5$fireAnalyticsE2 = _this5.fireAnalyticsEvent) === null || _this5$fireAnalyticsE2 === void 0 || _this5$fireAnalyticsE2.call(_this5, deleteSuccessPayload(result.resourceId));
|
|
393
|
+
} else {
|
|
394
|
+
var _this5$fireAnalyticsE3;
|
|
395
|
+
(_this5$fireAnalyticsE3 = _this5.fireAnalyticsEvent) === null || _this5$fireAnalyticsE3 === void 0 || _this5$fireAnalyticsE3.call(_this5, deleteErrorPayload(result.error || 'Failed to delete synced block', result.resourceId));
|
|
430
396
|
}
|
|
431
397
|
});
|
|
432
398
|
} else {
|
|
433
399
|
results.filter(function (result) {
|
|
434
400
|
return result.resourceId === undefined;
|
|
435
401
|
}).forEach(function (result) {
|
|
436
|
-
var _this5$
|
|
437
|
-
(_this5$
|
|
402
|
+
var _this5$fireAnalyticsE4;
|
|
403
|
+
(_this5$fireAnalyticsE4 = _this5.fireAnalyticsEvent) === null || _this5$fireAnalyticsE4 === void 0 || _this5$fireAnalyticsE4.call(_this5, deleteErrorPayload(result.error || 'Failed to delete synced block'));
|
|
438
404
|
});
|
|
439
405
|
}
|
|
440
406
|
}
|
|
441
407
|
syncBlockIds.forEach(callback);
|
|
442
408
|
return _context2.abrupt("return", isDeleteSuccessful);
|
|
443
|
-
case
|
|
444
|
-
_context2.prev =
|
|
409
|
+
case 15:
|
|
410
|
+
_context2.prev = 15;
|
|
445
411
|
_context2.t0 = _context2["catch"](0);
|
|
446
412
|
syncBlockIds.forEach(function (Ids) {
|
|
413
|
+
var _this5$fireAnalyticsE5;
|
|
447
414
|
_this5.setPendingDeletion(Ids, false);
|
|
415
|
+
(_this5$fireAnalyticsE5 = _this5.fireAnalyticsEvent) === null || _this5$fireAnalyticsE5 === void 0 || _this5$fireAnalyticsE5.call(_this5, deleteErrorPayload(_context2.t0.message, Ids.resourceId));
|
|
448
416
|
});
|
|
449
417
|
logException(_context2.t0, {
|
|
450
418
|
location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
|
|
451
419
|
});
|
|
452
|
-
if (fg('platform_synced_block_dogfooding')) {
|
|
453
|
-
(_this$deleteExperienc2 = this.deleteExperience) === null || _this$deleteExperienc2 === void 0 || _this$deleteExperienc2.failure({
|
|
454
|
-
reason: _context2.t0.message
|
|
455
|
-
});
|
|
456
|
-
} else {
|
|
457
|
-
(_this$fireAnalyticsEv4 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv4 === void 0 || _this$fireAnalyticsEv4.call(this, deleteErrorPayload(_context2.t0.message));
|
|
458
|
-
}
|
|
459
420
|
onDeleteCompleted(false);
|
|
460
421
|
return _context2.abrupt("return", false);
|
|
461
422
|
case 21:
|
|
462
423
|
case "end":
|
|
463
424
|
return _context2.stop();
|
|
464
425
|
}
|
|
465
|
-
}, _callee2, this, [[0,
|
|
426
|
+
}, _callee2, this, [[0, 15]]);
|
|
466
427
|
}));
|
|
467
428
|
function _delete(_x, _x2, _x3) {
|
|
468
429
|
return _delete2.apply(this, arguments);
|
|
@@ -580,22 +541,32 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
580
541
|
}
|
|
581
542
|
return this.dataProvider.fetchSyncBlockSourceInfo(localId, undefined, undefined, this.fireAnalyticsEvent);
|
|
582
543
|
} catch (error) {
|
|
583
|
-
var _this$
|
|
544
|
+
var _this$fireAnalyticsEv6;
|
|
584
545
|
logException(error, {
|
|
585
546
|
location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
|
|
586
547
|
});
|
|
587
|
-
(_this$
|
|
548
|
+
(_this$fireAnalyticsEv6 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv6 === void 0 || _this$fireAnalyticsEv6.call(this, getSourceInfoErrorPayload(error.message));
|
|
588
549
|
return Promise.resolve(undefined);
|
|
589
550
|
}
|
|
590
551
|
}
|
|
591
552
|
}, {
|
|
592
553
|
key: "destroy",
|
|
593
554
|
value: function destroy() {
|
|
555
|
+
var _this$saveExperience4, _this$createExperienc2, _this$deleteExperienc4;
|
|
594
556
|
this.syncBlockCache.clear();
|
|
595
557
|
this.confirmationCallback = undefined;
|
|
596
558
|
this.pendingResourceId = undefined;
|
|
597
559
|
this.creationCallback = undefined;
|
|
598
560
|
this.dataProvider = undefined;
|
|
561
|
+
(_this$saveExperience4 = this.saveExperience) === null || _this$saveExperience4 === void 0 || _this$saveExperience4.abort({
|
|
562
|
+
reason: 'editor-destroyed'
|
|
563
|
+
});
|
|
564
|
+
(_this$createExperienc2 = this.createExperience) === null || _this$createExperienc2 === void 0 || _this$createExperienc2.abort({
|
|
565
|
+
reason: 'editor-destroyed'
|
|
566
|
+
});
|
|
567
|
+
(_this$deleteExperienc4 = this.deleteExperience) === null || _this$deleteExperienc4 === void 0 || _this$deleteExperienc4.abort({
|
|
568
|
+
reason: 'editor-destroyed'
|
|
569
|
+
});
|
|
599
570
|
this.clearPendingDeletion();
|
|
600
571
|
}
|
|
601
572
|
}]);
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
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; }
|
|
3
|
+
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) { _defineProperty(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; }
|
|
1
4
|
import { ACTION, ACTION_SUBJECT, EVENT_TYPE, ACTION_SUBJECT_ID } from '@atlaskit/editor-common/analytics';
|
|
5
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
2
6
|
export var stringifyError = function stringifyError(error) {
|
|
3
7
|
try {
|
|
4
8
|
return JSON.stringify(error);
|
|
@@ -6,38 +10,93 @@ export var stringifyError = function stringifyError(error) {
|
|
|
6
10
|
return undefined;
|
|
7
11
|
}
|
|
8
12
|
};
|
|
9
|
-
export var getErrorPayload = function getErrorPayload(actionSubjectId, error) {
|
|
13
|
+
export var getErrorPayload = function getErrorPayload(actionSubjectId, error, resourceId) {
|
|
10
14
|
return {
|
|
11
15
|
action: ACTION.ERROR,
|
|
12
16
|
actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
|
|
13
17
|
actionSubjectId: actionSubjectId,
|
|
14
18
|
eventType: EVENT_TYPE.OPERATIONAL,
|
|
15
|
-
attributes: {
|
|
19
|
+
attributes: fg('platform_synced_block_dogfooding') ? _objectSpread({
|
|
20
|
+
error: error
|
|
21
|
+
}, resourceId && {
|
|
22
|
+
resourceId: resourceId
|
|
23
|
+
}) : {
|
|
16
24
|
error: error
|
|
17
25
|
}
|
|
18
26
|
};
|
|
19
27
|
};
|
|
20
|
-
export var fetchErrorPayload = function fetchErrorPayload(error) {
|
|
21
|
-
return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_FETCH, error);
|
|
28
|
+
export var fetchErrorPayload = function fetchErrorPayload(error, resourceId) {
|
|
29
|
+
return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_FETCH, error, resourceId);
|
|
30
|
+
};
|
|
31
|
+
export var getSourceInfoErrorPayload = function getSourceInfoErrorPayload(error, resourceId) {
|
|
32
|
+
return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_GET_SOURCE_INFO, error, resourceId);
|
|
33
|
+
};
|
|
34
|
+
export var updateErrorPayload = function updateErrorPayload(error, resourceId) {
|
|
35
|
+
return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_UPDATE, error, resourceId);
|
|
22
36
|
};
|
|
23
|
-
export var
|
|
24
|
-
return getErrorPayload(ACTION_SUBJECT_ID.
|
|
37
|
+
export var updateReferenceErrorPayload = function updateReferenceErrorPayload(error, resourceId) {
|
|
38
|
+
return getErrorPayload(ACTION_SUBJECT_ID.REFERENCE_SYNCED_BLOCK_UPDATE, error, resourceId);
|
|
25
39
|
};
|
|
26
|
-
export var
|
|
27
|
-
return getErrorPayload(ACTION_SUBJECT_ID.
|
|
40
|
+
export var createErrorPayload = function createErrorPayload(error, resourceId) {
|
|
41
|
+
return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_CREATE, error, resourceId);
|
|
28
42
|
};
|
|
29
|
-
export var
|
|
30
|
-
return getErrorPayload(ACTION_SUBJECT_ID.
|
|
43
|
+
export var deleteErrorPayload = function deleteErrorPayload(error, resourceId) {
|
|
44
|
+
return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_DELETE, error, resourceId);
|
|
31
45
|
};
|
|
32
|
-
export var
|
|
33
|
-
return getErrorPayload(ACTION_SUBJECT_ID.
|
|
46
|
+
export var updateCacheErrorPayload = function updateCacheErrorPayload(error, resourceId) {
|
|
47
|
+
return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_UPDATE_CACHE, error, resourceId);
|
|
34
48
|
};
|
|
35
|
-
export var
|
|
36
|
-
return getErrorPayload(ACTION_SUBJECT_ID.
|
|
49
|
+
export var fetchReferencesErrorPayload = function fetchReferencesErrorPayload(error, resourceId) {
|
|
50
|
+
return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_FETCH_REFERENCES, error, resourceId);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// Success payloads
|
|
54
|
+
export var fetchSuccessPayload = function fetchSuccessPayload(resourceId, blockInstanceId, sourceProduct) {
|
|
55
|
+
return {
|
|
56
|
+
action: ACTION.FETCHED,
|
|
57
|
+
actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
|
|
58
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_FETCH,
|
|
59
|
+
eventType: EVENT_TYPE.OPERATIONAL,
|
|
60
|
+
attributes: _objectSpread({
|
|
61
|
+
resourceId: resourceId,
|
|
62
|
+
blockInstanceId: blockInstanceId
|
|
63
|
+
}, sourceProduct && {
|
|
64
|
+
sourceProduct: sourceProduct
|
|
65
|
+
})
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
export var createSuccessPayload = function createSuccessPayload(resourceId) {
|
|
69
|
+
return {
|
|
70
|
+
action: ACTION.INSERTED,
|
|
71
|
+
actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
|
|
72
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_CREATE,
|
|
73
|
+
eventType: EVENT_TYPE.OPERATIONAL,
|
|
74
|
+
attributes: {
|
|
75
|
+
resourceId: resourceId
|
|
76
|
+
}
|
|
77
|
+
};
|
|
37
78
|
};
|
|
38
|
-
export var
|
|
39
|
-
return
|
|
79
|
+
export var updateSuccessPayload = function updateSuccessPayload(resourceId, hasReference) {
|
|
80
|
+
return {
|
|
81
|
+
action: ACTION.UPDATED,
|
|
82
|
+
actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
|
|
83
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_UPDATE,
|
|
84
|
+
eventType: EVENT_TYPE.OPERATIONAL,
|
|
85
|
+
attributes: _objectSpread({
|
|
86
|
+
resourceId: resourceId
|
|
87
|
+
}, hasReference !== undefined && {
|
|
88
|
+
hasReference: hasReference
|
|
89
|
+
})
|
|
90
|
+
};
|
|
40
91
|
};
|
|
41
|
-
export var
|
|
42
|
-
return
|
|
92
|
+
export var deleteSuccessPayload = function deleteSuccessPayload(resourceId) {
|
|
93
|
+
return {
|
|
94
|
+
action: ACTION.DELETED,
|
|
95
|
+
actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
|
|
96
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_DELETE,
|
|
97
|
+
eventType: EVENT_TYPE.OPERATIONAL,
|
|
98
|
+
attributes: {
|
|
99
|
+
resourceId: resourceId
|
|
100
|
+
}
|
|
101
|
+
};
|
|
43
102
|
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ACTION } from '@atlaskit/editor-common/analytics';
|
|
2
|
+
import { Experience, EXPERIENCE_ID, ExperienceCheckTimeout } from '@atlaskit/editor-common/experiences';
|
|
3
|
+
var TIMEOUT_DURATION = 30000;
|
|
4
|
+
export var createExperienceDispatcher = function createExperienceDispatcher(fireAnalyticsEvent) {
|
|
5
|
+
return function (payload) {
|
|
6
|
+
// Runtime type guard - only forward experience events
|
|
7
|
+
if (payload.action === ACTION.EXPERIENCE_MEASURED || payload.action === ACTION.EXPERIENCE_SAMPLED) {
|
|
8
|
+
fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent(payload);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* This experience tracks when a source sync block is saved to the BE.
|
|
15
|
+
*
|
|
16
|
+
* Start: When the flush source sync block function is called.
|
|
17
|
+
* Success: When the sync block save is successful within the timeout duration of start.
|
|
18
|
+
* Failure: When the timeout duration passes without the sync block being successfully saved
|
|
19
|
+
*/
|
|
20
|
+
export var getSaveSourceExperience = function getSaveSourceExperience(fireAnalyticsEvent) {
|
|
21
|
+
return new Experience(EXPERIENCE_ID.ASYNC_OPERATION, {
|
|
22
|
+
action: ACTION.SYNCED_BLOCK_UPDATE,
|
|
23
|
+
dispatchAnalyticsEvent: createExperienceDispatcher(fireAnalyticsEvent),
|
|
24
|
+
checks: [new ExperienceCheckTimeout({
|
|
25
|
+
durationMs: TIMEOUT_DURATION
|
|
26
|
+
})]
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* This experience tracks when a reference sync block is saved to the BE.
|
|
32
|
+
*
|
|
33
|
+
* Start: When the flush sync block function is called.
|
|
34
|
+
* Success: When the sync block save is successful within the timeout duration of start.
|
|
35
|
+
* Failure: When the timeout duration passes without the sync block being successfully saved
|
|
36
|
+
*/
|
|
37
|
+
export var getSaveReferenceExperience = function getSaveReferenceExperience(fireAnalyticsEvent) {
|
|
38
|
+
return new Experience(EXPERIENCE_ID.ASYNC_OPERATION, {
|
|
39
|
+
action: ACTION.REFERENCE_SYNCED_BLOCK_UPDATE,
|
|
40
|
+
dispatchAnalyticsEvent: createExperienceDispatcher(fireAnalyticsEvent),
|
|
41
|
+
checks: [new ExperienceCheckTimeout({
|
|
42
|
+
durationMs: TIMEOUT_DURATION
|
|
43
|
+
})]
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* This experience tracks when a reference sync block data is fetched from the BE.
|
|
49
|
+
*
|
|
50
|
+
* Start: When the fetchNodesData function is called.
|
|
51
|
+
* Success: When the fetching the data is successful within the timeout duration of start.
|
|
52
|
+
* Failure: When the timeout duration passes without the data being successfully fetched, or the fetch fails
|
|
53
|
+
*/
|
|
54
|
+
export var getFetchExperience = function getFetchExperience(fireAnalyticsEvent) {
|
|
55
|
+
return new Experience(EXPERIENCE_ID.ASYNC_OPERATION, {
|
|
56
|
+
action: ACTION.SYNCED_BLOCK_FETCH,
|
|
57
|
+
dispatchAnalyticsEvent: createExperienceDispatcher(fireAnalyticsEvent),
|
|
58
|
+
checks: [new ExperienceCheckTimeout({
|
|
59
|
+
durationMs: TIMEOUT_DURATION
|
|
60
|
+
})]
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* This experience tracks when a reference sync block source info data (title, url) is fetched from the BE.
|
|
66
|
+
*
|
|
67
|
+
* Start: When the fetchSourceInfo function is called.
|
|
68
|
+
* Success: When the fetching the data is successful within the timeout duration of start.
|
|
69
|
+
* Failure: When the timeout duration passes without the data being successfully fetched, or the fetch fails
|
|
70
|
+
*/
|
|
71
|
+
export var getFetchSourceInfoExperience = function getFetchSourceInfoExperience(fireAnalyticsEvent) {
|
|
72
|
+
return new Experience(EXPERIENCE_ID.ASYNC_OPERATION, {
|
|
73
|
+
action: ACTION.SYNCED_BLOCK_GET_SOURCE_INFO,
|
|
74
|
+
dispatchAnalyticsEvent: createExperienceDispatcher(fireAnalyticsEvent),
|
|
75
|
+
checks: [new ExperienceCheckTimeout({
|
|
76
|
+
durationMs: TIMEOUT_DURATION
|
|
77
|
+
})]
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* This experience tracks when a source sync block is deleted from the BE.
|
|
83
|
+
*
|
|
84
|
+
* Start: When the fetchSourceInfo function is called.
|
|
85
|
+
* Success: When the fetching the data is successful within the timeout duration of start.
|
|
86
|
+
* Failure: When the timeout duration passes without the data being successfully fetched, or the fetch fails
|
|
87
|
+
*/
|
|
88
|
+
export var getDeleteSourceExperience = function getDeleteSourceExperience(fireAnalyticsEvent) {
|
|
89
|
+
return new Experience(EXPERIENCE_ID.ASYNC_OPERATION, {
|
|
90
|
+
action: ACTION.SYNCED_BLOCK_DELETE,
|
|
91
|
+
dispatchAnalyticsEvent: createExperienceDispatcher(fireAnalyticsEvent),
|
|
92
|
+
checks: [new ExperienceCheckTimeout({
|
|
93
|
+
durationMs: TIMEOUT_DURATION
|
|
94
|
+
})]
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* This experience tracks when a source sync block is created and registered to the BE.
|
|
100
|
+
*
|
|
101
|
+
* Start: When the fetchSourceInfo function is called.
|
|
102
|
+
* Success: When the fetching the data is successful within the timeout duration of start.
|
|
103
|
+
* Failure: When the timeout duration passes without the data being successfully fetched, or the fetch fails
|
|
104
|
+
*/
|
|
105
|
+
export var getCreateSourceExperience = function getCreateSourceExperience(fireAnalyticsEvent) {
|
|
106
|
+
return new Experience(EXPERIENCE_ID.ASYNC_OPERATION, {
|
|
107
|
+
action: ACTION.SYNCED_BLOCK_CREATE,
|
|
108
|
+
dispatchAnalyticsEvent: createExperienceDispatcher(fireAnalyticsEvent),
|
|
109
|
+
checks: [new ExperienceCheckTimeout({
|
|
110
|
+
durationMs: TIMEOUT_DURATION
|
|
111
|
+
})]
|
|
112
|
+
});
|
|
113
|
+
};
|