@atlaskit/collab-provider 7.1.0 → 7.1.4

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 CHANGED
@@ -1,5 +1,39 @@
1
1
  # @atlaskit/collab-provider
2
2
 
3
+ ## 7.1.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - ED-13912 refactor editor collab-provider and make sure that initializeChannel is only called once
8
+ - Updated dependencies
9
+
10
+ ## 7.1.3
11
+
12
+ ### Patch Changes
13
+
14
+ - [`c55c736ecea`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c55c736ecea) - Patch VULN AFP-3486 AFP-3487 AFP-3488 AFP-3489
15
+
16
+ ## 7.1.2
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies
21
+
22
+ ## 7.1.1
23
+
24
+ ### Patch Changes
25
+
26
+ - [`c6feed82071`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c6feed82071) - ED-11632: Bump prosemirror packages;
27
+
28
+ - prosmirror-commands 1.1.4 -> 1.1.11,
29
+ - prosemirror-model 1.11.0 -> 1.14.3,
30
+ - prosemirror-state 1.3.3 -> 1.3.4,
31
+ - prosemirror-transform 1.2.8 -> 1.3.2,
32
+ - prosemirror-view 1.15.4 + 1.18.8 -> 1.20.2.
33
+
34
+ - [`b670f0469c4`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b670f0469c4) - COLLAB-990: fixing duplciated avatar
35
+ - Updated dependencies
36
+
3
37
  ## 7.1.0
4
38
 
5
39
  ### Minor Changes
@@ -5,15 +5,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.triggerAnalyticsForCatchupSuccessfulWithLatency = exports.triggerAnalyticsForCatchupFailed = exports.triggerAnalyticsForStepsRejected = exports.triggerAnalyticsForStepsAddedSuccessfully = exports.fireAnalyticsEvent = exports.buildAnalyticsPayload = void 0;
8
+ exports.triggerAnalyticsForStepsRejected = exports.triggerAnalyticsForStepsAddedSuccessfully = exports.triggerAnalyticsForCatchupSuccessfulWithLatency = exports.triggerAnalyticsForCatchupFailed = exports.fireAnalyticsEvent = exports.buildAnalyticsPayload = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
12
  var _const = require("../helpers/const");
13
13
 
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
15
 
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
17
 
18
18
  var buildAnalyticsPayload = function buildAnalyticsPayload(subject, payload) {
19
19
  return {
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.clearMeasure = clearMeasure;
6
7
  exports.startMeasure = startMeasure;
7
8
  exports.stopMeasure = stopMeasure;
8
- exports.clearMeasure = clearMeasure;
9
9
 
10
10
  var isPerformanceAPIAvailable = function isPerformanceAPIAvailable() {
11
11
  return typeof window !== 'undefined' && 'performance' in window && ['measure', 'clearMeasures', 'clearMarks', 'getEntriesByName', 'getEntriesByType'].every(function (api) {
@@ -37,9 +37,9 @@ var _performance = require("./analytics/performance");
37
37
 
38
38
  var _analytics = require("./analytics");
39
39
 
40
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
41
41
 
42
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
43
43
 
44
44
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
45
45
 
@@ -163,8 +163,11 @@ var Channel = /*#__PURE__*/function (_Emitter) {
163
163
  this.socket.on('participant:telepointer', function (payload) {
164
164
  _this2.emit('participant:telepointer', payload.data);
165
165
  });
166
- this.socket.on('participant:joined', function (data) {
167
- _this2.emit('participant:joined', data);
166
+ this.socket.on('presence:joined', function (data) {
167
+ _this2.emit('presence:joined', data);
168
+ });
169
+ this.socket.on('presence', function (data) {
170
+ _this2.emit('presence', data);
168
171
  });
169
172
  this.socket.on('participant:left', function (data) {
170
173
  _this2.emit('participant:left', data);
@@ -364,6 +367,15 @@ var Channel = /*#__PURE__*/function (_Emitter) {
364
367
 
365
368
  this.socket.emit('metadata', metadata);
366
369
  }
370
+ }, {
371
+ key: "sendPresenceJoined",
372
+ value: function sendPresenceJoined() {
373
+ if (!this.connected || !this.socket) {
374
+ return;
375
+ }
376
+
377
+ this.socket.emit('presence:joined');
378
+ }
367
379
  }, {
368
380
  key: "disconnect",
369
381
  value: function disconnect() {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.DisconnectReason = exports.socketIOReasons = void 0;
6
+ exports.socketIOReasons = exports.DisconnectReason = void 0;
7
7
  // See https://socket.io/docs/v3/client-socket-instance#disconnect for emitted reasons
8
8
  var socketIOReasons = {
9
9
  IO_CLIENT_DISCONNECT: 'io client disconnect',
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ACK_MAX_TRY = exports.CATCHUP_FAILURE = exports.CATCHUP_SUCCESS = exports.ATTRIBUTES_PACKAGE = exports.STEPS_REJECTED = exports.STEPS_ADDED = void 0;
6
+ exports.STEPS_REJECTED = exports.STEPS_ADDED = exports.CATCHUP_SUCCESS = exports.CATCHUP_FAILURE = exports.ATTRIBUTES_PACKAGE = exports.ACK_MAX_TRY = void 0;
7
7
  var STEPS_ADDED = 'collabStepsAddedSuccess';
8
8
  exports.STEPS_ADDED = STEPS_ADDED;
9
9
  var STEPS_REJECTED = 'collabStepsAddedRejected';
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.sleep = sleep;
7
6
  exports.getParticipant = exports.createLogger = void 0;
7
+ exports.sleep = sleep;
8
8
 
9
9
  var createLogger = function createLogger(prefix) {
10
10
  var color = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'blue';
@@ -13,27 +13,22 @@ var createLogger = function createLogger(prefix) {
13
13
 
14
14
  if (window.COLLAB_PROVIDER_LOGGER) {
15
15
  // eslint-disable-next-line no-console
16
- console.log("%cCollab-".concat(prefix, ": ").concat(msg), "color: ".concat(color, "; font-weight: bold"));
17
-
18
- if (data) {
19
- // eslint-disable-next-line no-console
20
- console.log(data);
21
- }
16
+ console.log("%cCollab-".concat(prefix, ": ").concat(msg), "color: ".concat(color, "; font-weight: bold"), data);
22
17
  }
23
18
  };
24
19
  };
25
20
 
26
21
  exports.createLogger = createLogger;
22
+ var logger = createLogger('Helper:util', 'black');
27
23
 
28
24
  var getParticipant = function getParticipant(userId) {
29
- // eslint-disable-next-line no-bitwise
30
- var name = 'Demo User';
31
- return Promise.resolve({
25
+ logger('getParticipant: ', userId);
26
+ return {
32
27
  userId: userId,
33
- name: name,
34
- avatar: "https://api.adorable.io/avatars/80/".concat(name.replace(/\s/g, ''), ".png"),
35
- email: "".concat(name.replace(/\s/g, '').toLocaleLowerCase(), "@atlassian.com")
36
- });
28
+ name: userId,
29
+ avatar: '',
30
+ email: "".concat(userId.replace(/\s/g, '').toLocaleLowerCase(), "@atlassian.com")
31
+ };
37
32
  };
38
33
 
39
34
  exports.getParticipant = getParticipant;
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.rebaseSteps = rebaseSteps;
9
8
  exports.catchup = void 0;
9
+ exports.rebaseSteps = rebaseSteps;
10
10
 
11
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
12
 
@@ -55,13 +55,15 @@ var _errorCodeMapper = require("../error-code-mapper");
55
55
 
56
56
  var _disconnectedReasonMapper = require("../disconnected-reason-mapper");
57
57
 
58
+ var _excluded = ["type"];
59
+
58
60
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
59
61
 
60
62
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
61
63
 
62
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
64
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
63
65
 
64
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
66
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
65
67
 
66
68
  var logger = (0, _utils.createLogger)('Provider', 'black');
67
69
  var PARTICIPANT_UPDATE_INTERVAL = 300 * 1000; // 300 seconds
@@ -115,6 +117,37 @@ var Provider = /*#__PURE__*/function (_Emitter) {
115
117
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "participants", new Map());
116
118
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "metadata", {});
117
119
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "stepRejectCounter", 0);
120
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isChannelInitialized", false);
121
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "initializeChannel", function () {
122
+ _this.channel.on('connected', function (_ref2) {
123
+ var sid = _ref2.sid,
124
+ initialized = _ref2.initialized;
125
+ _this.sessionId = sid;
126
+
127
+ _this.emit('connected', {
128
+ sid: sid
129
+ }); // If already initialized, `connected` means reconnected
130
+
131
+
132
+ if (initialized && _this.disconnectedAt && // Offline longer than `OUT_OF_SYNC_PERIOD`
133
+ Date.now() - _this.disconnectedAt >= OUT_OF_SYNC_PERIOD) {
134
+ _this.throttledCatchup();
135
+ }
136
+
137
+ _this.disconnectedAt = undefined;
138
+ }).on('init', function (_ref3) {
139
+ var doc = _ref3.doc,
140
+ version = _ref3.version,
141
+ metadata = _ref3.metadata;
142
+
143
+ // Initial document and version
144
+ _this.updateDocumentWithMetadata({
145
+ doc: doc,
146
+ version: version,
147
+ metadata: metadata
148
+ });
149
+ }).on('steps:added', _this.onStepsAdded).on('participant:telepointer', _this.onParticipantTelepointer).on('presence:joined', _this.onPresenceJoined).on('presence', _this.onPresence).on('participant:left', _this.onParticipantLeft).on('participant:updated', _this.onParticipantUpdated).on('metadata:changed', _this.onMetadataChanged).on('disconnect', _this.onDisconnected).on('error', _this.onErrorHandled).connect();
150
+ });
118
151
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onStepsAdded", function (data) {
119
152
  logger("Received steps", {
120
153
  steps: data.steps,
@@ -142,8 +175,8 @@ var Provider = /*#__PURE__*/function (_Emitter) {
142
175
  _this.throttledCatchup();
143
176
  }
144
177
 
145
- _this.updateParticipants([], data.steps.map(function (_ref2) {
146
- var userId = _ref2.userId;
178
+ _this.updateParticipants([], data.steps.map(function (_ref4) {
179
+ var userId = _ref4.userId;
147
180
  return userId;
148
181
  }));
149
182
  });
@@ -156,11 +189,11 @@ var Provider = /*#__PURE__*/function (_Emitter) {
156
189
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fitlerQueue", function (condition) {
157
190
  _this.queue = _this.queue.filter(condition);
158
191
  });
159
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateDocumentWithMetadata", function (_ref3) {
160
- var doc = _ref3.doc,
161
- version = _ref3.version,
162
- metadata = _ref3.metadata,
163
- reserveCursor = _ref3.reserveCursor;
192
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateDocumentWithMetadata", function (_ref5) {
193
+ var doc = _ref5.doc,
194
+ version = _ref5.version,
195
+ metadata = _ref5.metadata,
196
+ reserveCursor = _ref5.reserveCursor;
164
197
 
165
198
  _this.emit('init', _objectSpread({
166
199
  doc: doc,
@@ -282,19 +315,28 @@ var Provider = /*#__PURE__*/function (_Emitter) {
282
315
  return _this.sendPresence();
283
316
  }, SEND_PRESENCE_INTERVAL);
284
317
  });
285
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantJoined", function (_ref5) {
286
- var sessionId = _ref5.sessionId;
318
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onPresenceJoined", function (_ref7) {
319
+ var sessionId = _ref7.sessionId;
287
320
  logger('Participant joined with session: ', sessionId); // This expose existing users to the newly joined user
288
321
 
289
322
  _this.sendPresence();
290
323
  });
324
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onPresence", function (_ref8) {
325
+ var userId = _ref8.userId;
326
+ logger('onPresence userId: ', userId);
327
+ _this.userId = userId;
328
+
329
+ _this.sendPresence();
330
+
331
+ _this.channel.sendPresenceJoined();
332
+ });
291
333
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMetadataChanged", function (metadata) {
292
334
  if (metadata !== undefined && !(0, _isEqual.default)(_this.metadata, metadata)) {
293
335
  _this.emit('metadata:changed', metadata);
294
336
  }
295
337
  });
296
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantLeft", function (_ref6) {
297
- var sessionId = _ref6.sessionId;
338
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantLeft", function (_ref9) {
339
+ var sessionId = _ref9.sessionId;
298
340
  logger("Participant left");
299
341
 
300
342
  _this.participants.delete(sessionId);
@@ -305,11 +347,11 @@ var Provider = /*#__PURE__*/function (_Emitter) {
305
347
  }]
306
348
  });
307
349
  });
308
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantUpdated", function (_ref7) {
309
- var sessionId = _ref7.sessionId,
310
- timestamp = _ref7.timestamp,
311
- userId = _ref7.userId,
312
- clientId = _ref7.clientId;
350
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantUpdated", function (_ref10) {
351
+ var sessionId = _ref10.sessionId,
352
+ timestamp = _ref10.timestamp,
353
+ userId = _ref10.userId,
354
+ clientId = _ref10.clientId;
313
355
 
314
356
  _this.updateParticipant({
315
357
  sessionId: sessionId,
@@ -318,12 +360,12 @@ var Provider = /*#__PURE__*/function (_Emitter) {
318
360
  clientId: clientId
319
361
  });
320
362
  });
321
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantTelepointer", function (_ref8) {
322
- var sessionId = _ref8.sessionId,
323
- timestamp = _ref8.timestamp,
324
- selection = _ref8.selection,
325
- userId = _ref8.userId,
326
- clientId = _ref8.clientId;
363
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantTelepointer", function (_ref11) {
364
+ var sessionId = _ref11.sessionId,
365
+ timestamp = _ref11.timestamp,
366
+ selection = _ref11.selection,
367
+ userId = _ref11.userId,
368
+ clientId = _ref11.clientId;
327
369
 
328
370
  if (sessionId === _this.sessionId) {
329
371
  return;
@@ -351,19 +393,28 @@ var Provider = /*#__PURE__*/function (_Emitter) {
351
393
  });
352
394
  });
353
395
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateParticipant", /*#__PURE__*/function () {
354
- var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref9) {
396
+ var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref12) {
355
397
  var sessionId, timestamp, userId, clientId, getUser, _yield, _yield$name, name, _yield$email, email, _yield$avatar, avatar, isNewParticipant;
356
398
 
357
399
  return _regenerator.default.wrap(function _callee2$(_context2) {
358
400
  while (1) {
359
401
  switch (_context2.prev = _context2.next) {
360
402
  case 0:
361
- sessionId = _ref9.sessionId, timestamp = _ref9.timestamp, userId = _ref9.userId, clientId = _ref9.clientId;
403
+ sessionId = _ref12.sessionId, timestamp = _ref12.timestamp, userId = _ref12.userId, clientId = _ref12.clientId;
404
+
405
+ if (userId) {
406
+ _context2.next = 3;
407
+ break;
408
+ }
409
+
410
+ return _context2.abrupt("return");
411
+
412
+ case 3:
362
413
  getUser = _this.config.getUser;
363
- _context2.next = 4;
414
+ _context2.next = 6;
364
415
  return getUser ? getUser(userId) : (0, _utils.getParticipant)(userId);
365
416
 
366
- case 4:
417
+ case 6:
367
418
  _yield = _context2.sent;
368
419
  _yield$name = _yield.name;
369
420
  name = _yield$name === void 0 ? '' : _yield$name;
@@ -393,7 +444,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
393
444
 
394
445
  _this.updateParticipants(isNewParticipant ? [_this.participants.get(sessionId)] : []);
395
446
 
396
- case 15:
447
+ case 17:
397
448
  case "end":
398
449
  return _context2.stop();
399
450
  }
@@ -402,7 +453,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
402
453
  }));
403
454
 
404
455
  return function (_x) {
405
- return _ref10.apply(this, arguments);
456
+ return _ref13.apply(this, arguments);
406
457
  };
407
458
  }());
408
459
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateParticipants", function () {
@@ -462,8 +513,8 @@ var Provider = /*#__PURE__*/function (_Emitter) {
462
513
  return _disconnectedReasonMapper.DisconnectReason.UNKNOWN_DISCONNECT;
463
514
  }
464
515
  });
465
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onDisconnected", function (_ref11) {
466
- var reason = _ref11.reason;
516
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onDisconnected", function (_ref14) {
517
+ var reason = _ref14.reason;
467
518
  _this.disconnectedAt = Date.now();
468
519
  var left = Array.from(_this.participants.values());
469
520
 
@@ -482,6 +533,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
482
533
  });
483
534
  _this.config = config;
484
535
  _this.channel = new _channel.Channel(config);
536
+ _this.isChannelInitialized = false;
485
537
 
486
538
  if (config.analyticsClient) {
487
539
  _this.analyticsClient = config.analyticsClient;
@@ -489,56 +541,22 @@ var Provider = /*#__PURE__*/function (_Emitter) {
489
541
 
490
542
  return _this;
491
543
  }
492
- /**
493
- * Called by collab plugin in editor when it's ready to
494
- * initialize a collab session.
495
- */
496
-
497
544
 
498
545
  (0, _createClass2.default)(Provider, [{
499
546
  key: "initialize",
500
547
  value: function initialize(optionsOrGetState) {
501
- var _this2 = this;
502
-
548
+ // move this
503
549
  this.getState = typeof optionsOrGetState === 'function' ? optionsOrGetState : optionsOrGetState.getState;
504
550
  this.clientId = typeof optionsOrGetState === 'function' ? // Quick-hack to get clientID from native collab-plugin.
505
551
  this.getState().plugins.find(function (p) {
506
552
  return p.key === 'collab$';
507
553
  }).spec.config.clientID : optionsOrGetState.clientId;
508
- this.channel.on('connected', function (_ref12) {
509
- var sid = _ref12.sid,
510
- initialized = _ref12.initialized;
511
- _this2.sessionId = sid;
512
-
513
- _this2.emit('connected', {
514
- sid: sid
515
- });
516
-
517
- _this2.sendPresence(); // If already initialized, `connected` means reconnected
518
-
519
-
520
- if (initialized && _this2.disconnectedAt && // Offline longer than `OUT_OF_SYNC_PERIOD`
521
- Date.now() - _this2.disconnectedAt >= OUT_OF_SYNC_PERIOD) {
522
- _this2.throttledCatchup();
523
- }
524
-
525
- _this2.disconnectedAt = undefined;
526
- }).on('init', function (_ref13) {
527
- var doc = _ref13.doc,
528
- version = _ref13.version,
529
- userId = _ref13.userId,
530
- metadata = _ref13.metadata;
531
- _this2.userId = userId;
532
-
533
- _this2.sendPresence(); // Initial document and version
534
554
 
555
+ if (!this.isChannelInitialized) {
556
+ this.initializeChannel();
557
+ this.isChannelInitialized = true;
558
+ }
535
559
 
536
- _this2.updateDocumentWithMetadata({
537
- doc: doc,
538
- version: version,
539
- metadata: metadata
540
- });
541
- }).on('steps:added', this.onStepsAdded).on('participant:telepointer', this.onParticipantTelepointer).on('participant:joined', this.onParticipantJoined).on('participant:left', this.onParticipantLeft).on('participant:updated', this.onParticipantUpdated).on('metadata:changed', this.onMetadataChanged).on('disconnect', this.onDisconnected).on('error', this.onErrorHandled).connect();
542
560
  return this;
543
561
  }
544
562
  /**
@@ -630,15 +648,15 @@ var Provider = /*#__PURE__*/function (_Emitter) {
630
648
  }, {
631
649
  key: "processSteps",
632
650
  value: function processSteps(data) {
633
- var _this3 = this;
651
+ var _this2 = this;
634
652
 
635
653
  var version = data.version,
636
654
  steps = data.steps;
637
655
  logger("Processing data. Version \"".concat(version, "\"."));
638
656
 
639
657
  if (steps && steps.length) {
640
- var clientIds = steps.map(function (_ref14) {
641
- var clientId = _ref14.clientId;
658
+ var clientIds = steps.map(function (_ref15) {
659
+ var clientId = _ref15.clientId;
642
660
  return clientId;
643
661
  });
644
662
  this.emit('data', {
@@ -653,7 +671,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
653
671
 
654
672
  if (clientIds.indexOf(this.clientId) === -1) {
655
673
  setTimeout(function () {
656
- return _this3.sendStepsFromCurrentState();
674
+ return _this2.sendStepsFromCurrentState();
657
675
  }, 100);
658
676
  }
659
677
  }
@@ -670,7 +688,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
670
688
  }
671
689
 
672
690
  var type = data.type,
673
- rest = (0, _objectWithoutProperties2.default)(data, ["type"]);
691
+ rest = (0, _objectWithoutProperties2.default)(data, _excluded);
674
692
  var userId = this.userId,
675
693
  sessionId = this.sessionId,
676
694
  clientId = this.clientId;
@@ -690,30 +708,30 @@ var Provider = /*#__PURE__*/function (_Emitter) {
690
708
  }, {
691
709
  key: "emitTelepointersFromSteps",
692
710
  value: function emitTelepointersFromSteps(steps) {
693
- var _this4 = this;
711
+ var _this3 = this;
694
712
 
695
713
  steps.forEach(function (step) {
696
- var _Array$from$filter = Array.from(_this4.participants.values()).filter(function (p) {
714
+ var _Array$from$filter = Array.from(_this3.participants.values()).filter(function (p) {
697
715
  return p.clientId === step.clientId;
698
716
  }),
699
717
  _Array$from$filter2 = (0, _slicedToArray2.default)(_Array$from$filter, 1),
700
718
  participant = _Array$from$filter2[0];
701
719
 
702
720
  if (participant) {
703
- var _ref15 = step,
704
- stepType = _ref15.stepType,
705
- to = _ref15.to,
706
- from = _ref15.from,
707
- _ref15$slice = _ref15.slice,
708
- slice = _ref15$slice === void 0 ? {
721
+ var _ref16 = step,
722
+ stepType = _ref16.stepType,
723
+ to = _ref16.to,
724
+ from = _ref16.from,
725
+ _ref16$slice = _ref16.slice,
726
+ slice = _ref16$slice === void 0 ? {
709
727
  content: []
710
- } : _ref15$slice;
728
+ } : _ref16$slice;
711
729
 
712
730
  var _slice$content = (0, _slicedToArray2.default)(slice.content, 1),
713
731
  node = _slice$content[0];
714
732
 
715
733
  if (stepType === 'replace' && to === from && slice.content.length === 1 && node.type === 'text' && node.text.length === 1) {
716
- _this4.emit('telepointer', {
734
+ _this3.emit('telepointer', {
717
735
  sessionId: participant.sessionId,
718
736
  selection: {
719
737
  type: 'textSelection',
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createSocketIOSocket = createSocketIOSocket;
9
8
  exports.createSocketIOCollabProvider = createSocketIOCollabProvider;
9
+ exports.createSocketIOSocket = createSocketIOSocket;
10
10
 
11
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
12
 
@@ -16,9 +16,9 @@ var _socket = require("socket.io-client");
16
16
 
17
17
  var _urlParse2 = _interopRequireDefault(require("url-parse"));
18
18
 
19
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
20
 
21
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
22
 
23
23
  function createSocketIOSocket(url, auth) {
24
24
  var _urlParse = (0, _urlParse2.default)(url),
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/collab-provider",
3
- "version": "7.1.0",
3
+ "version": "7.1.4",
4
4
  "sideEffects": false
5
5
  }
@@ -116,8 +116,11 @@ export class Channel extends Emitter {
116
116
  this.socket.on('participant:telepointer', payload => {
117
117
  this.emit('participant:telepointer', payload.data);
118
118
  });
119
- this.socket.on('participant:joined', data => {
120
- this.emit('participant:joined', data);
119
+ this.socket.on('presence:joined', data => {
120
+ this.emit('presence:joined', data);
121
+ });
122
+ this.socket.on('presence', data => {
123
+ this.emit('presence', data);
121
124
  });
122
125
  this.socket.on('participant:left', data => {
123
126
  this.emit('participant:left', data);
@@ -242,6 +245,14 @@ export class Channel extends Emitter {
242
245
  this.socket.emit('metadata', metadata);
243
246
  }
244
247
 
248
+ sendPresenceJoined() {
249
+ if (!this.connected || !this.socket) {
250
+ return;
251
+ }
252
+
253
+ this.socket.emit('presence:joined');
254
+ }
255
+
245
256
  disconnect() {
246
257
  this.unsubscribeAll();
247
258
 
@@ -1,23 +1,18 @@
1
1
  export const createLogger = (prefix, color = 'blue') => (msg, data = null) => {
2
2
  if (window.COLLAB_PROVIDER_LOGGER) {
3
3
  // eslint-disable-next-line no-console
4
- console.log(`%cCollab-${prefix}: ${msg}`, `color: ${color}; font-weight: bold`);
5
-
6
- if (data) {
7
- // eslint-disable-next-line no-console
8
- console.log(data);
9
- }
4
+ console.log(`%cCollab-${prefix}: ${msg}`, `color: ${color}; font-weight: bold`, data);
10
5
  }
11
6
  };
7
+ const logger = createLogger('Helper:util', 'black');
12
8
  export const getParticipant = userId => {
13
- // eslint-disable-next-line no-bitwise
14
- const name = 'Demo User';
15
- return Promise.resolve({
16
- userId,
17
- name,
18
- avatar: `https://api.adorable.io/avatars/80/${name.replace(/\s/g, '')}.png`,
19
- email: `${name.replace(/\s/g, '').toLocaleLowerCase()}@atlassian.com`
20
- });
9
+ logger('getParticipant: ', userId);
10
+ return {
11
+ userId: userId,
12
+ name: userId,
13
+ avatar: '',
14
+ email: `${userId.replace(/\s/g, '').toLocaleLowerCase()}@atlassian.com`
15
+ };
21
16
  };
22
17
  export function sleep(ms) {
23
18
  return new Promise(resolve => {