@webex/plugin-meetings 3.10.0-next.9 → 3.10.0-webex-services-ready.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.
Files changed (73) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +11 -3
  4. package/dist/constants.js.map +1 -1
  5. package/dist/hashTree/constants.js +20 -0
  6. package/dist/hashTree/constants.js.map +1 -0
  7. package/dist/hashTree/hashTree.js +515 -0
  8. package/dist/hashTree/hashTree.js.map +1 -0
  9. package/dist/hashTree/hashTreeParser.js +1266 -0
  10. package/dist/hashTree/hashTreeParser.js.map +1 -0
  11. package/dist/hashTree/types.js +21 -0
  12. package/dist/hashTree/types.js.map +1 -0
  13. package/dist/hashTree/utils.js +48 -0
  14. package/dist/hashTree/utils.js.map +1 -0
  15. package/dist/interpretation/index.js +1 -1
  16. package/dist/interpretation/siLanguage.js +1 -1
  17. package/dist/locus-info/index.js +511 -48
  18. package/dist/locus-info/index.js.map +1 -1
  19. package/dist/locus-info/types.js +7 -0
  20. package/dist/locus-info/types.js.map +1 -0
  21. package/dist/meeting/index.js +41 -15
  22. package/dist/meeting/index.js.map +1 -1
  23. package/dist/meeting/util.js +1 -0
  24. package/dist/meeting/util.js.map +1 -1
  25. package/dist/meetings/index.js +112 -70
  26. package/dist/meetings/index.js.map +1 -1
  27. package/dist/metrics/constants.js +3 -1
  28. package/dist/metrics/constants.js.map +1 -1
  29. package/dist/reachability/clusterReachability.js +44 -358
  30. package/dist/reachability/clusterReachability.js.map +1 -1
  31. package/dist/reachability/reachability.types.js +14 -1
  32. package/dist/reachability/reachability.types.js.map +1 -1
  33. package/dist/reachability/reachabilityPeerConnection.js +445 -0
  34. package/dist/reachability/reachabilityPeerConnection.js.map +1 -0
  35. package/dist/types/constants.d.ts +26 -21
  36. package/dist/types/hashTree/constants.d.ts +8 -0
  37. package/dist/types/hashTree/hashTree.d.ts +129 -0
  38. package/dist/types/hashTree/hashTreeParser.d.ts +260 -0
  39. package/dist/types/hashTree/types.d.ts +25 -0
  40. package/dist/types/hashTree/utils.d.ts +9 -0
  41. package/dist/types/locus-info/index.d.ts +91 -42
  42. package/dist/types/locus-info/types.d.ts +46 -0
  43. package/dist/types/meeting/index.d.ts +22 -9
  44. package/dist/types/meetings/index.d.ts +9 -2
  45. package/dist/types/metrics/constants.d.ts +2 -0
  46. package/dist/types/reachability/clusterReachability.d.ts +10 -88
  47. package/dist/types/reachability/reachability.types.d.ts +12 -1
  48. package/dist/types/reachability/reachabilityPeerConnection.d.ts +111 -0
  49. package/dist/webinar/index.js +1 -1
  50. package/package.json +22 -21
  51. package/src/constants.ts +13 -1
  52. package/src/hashTree/constants.ts +9 -0
  53. package/src/hashTree/hashTree.ts +463 -0
  54. package/src/hashTree/hashTreeParser.ts +1161 -0
  55. package/src/hashTree/types.ts +30 -0
  56. package/src/hashTree/utils.ts +42 -0
  57. package/src/locus-info/index.ts +556 -85
  58. package/src/locus-info/types.ts +48 -0
  59. package/src/meeting/index.ts +58 -26
  60. package/src/meeting/util.ts +1 -0
  61. package/src/meetings/index.ts +104 -51
  62. package/src/metrics/constants.ts +2 -0
  63. package/src/reachability/clusterReachability.ts +50 -347
  64. package/src/reachability/reachability.types.ts +15 -1
  65. package/src/reachability/reachabilityPeerConnection.ts +416 -0
  66. package/test/unit/spec/hashTree/hashTree.ts +655 -0
  67. package/test/unit/spec/hashTree/hashTreeParser.ts +1532 -0
  68. package/test/unit/spec/hashTree/utils.ts +103 -0
  69. package/test/unit/spec/locus-info/index.js +667 -1
  70. package/test/unit/spec/meeting/index.js +91 -20
  71. package/test/unit/spec/meeting/utils.js +77 -0
  72. package/test/unit/spec/meetings/index.js +71 -26
  73. package/test/unit/spec/reachability/clusterReachability.ts +281 -138
@@ -62,7 +62,7 @@ var _joinWebinarError = _interopRequireDefault(require("../common/errors/join-we
62
62
  var _webexErrors = require("../common/errors/webex-errors");
63
63
  var _noMeetingInfo = _interopRequireDefault(require("../common/errors/no-meeting-info"));
64
64
  var _joinForbiddenError = _interopRequireDefault(require("../common/errors/join-forbidden-error"));
65
- function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
65
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
66
66
  function ownKeys(e, r) { var t = _Object$keys2(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; }
67
67
  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) { (0, _defineProperty2.default)(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; }
68
68
  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)); }
@@ -435,7 +435,11 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
435
435
  }, {
436
436
  key: "getCorrespondingMeetingByLocus",
437
437
  value: function getCorrespondingMeetingByLocus(data) {
438
- var _data$locus$info, _data$locus, _data$locus$info2;
438
+ var _data$stateElementsMe, _data$locus, _data$locus$self, _data$locus$self$call, _data$locus2, _data$locus2$info, _data$locus3, _data$locus4, _data$locus4$info;
439
+ if (data.eventType === _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED && (_data$stateElementsMe = data.stateElementsMessage) !== null && _data$stateElementsMe !== void 0 && _data$stateElementsMe.locusUrl) {
440
+ return this.meetingCollection.getByKey(_meetings.MEETING_KEY.LOCUS_URL, data.stateElementsMessage.locusUrl);
441
+ }
442
+
439
443
  // getting meeting by correlationId. This will happen for the new event
440
444
  // Either the locus
441
445
  // TODO : Add check for the callBack Address
@@ -443,7 +447,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
443
447
  // @ts-ignore
444
448
  this.meetingCollection.getByKey(_meetings.MEETING_KEY.CORRELATION_ID,
445
449
  // @ts-ignore
446
- _util2.default.checkForCorrelationId(this.webex.internal.device.url, data.locus)) || this.meetingCollection.getByKey(_meetings.MEETING_KEY.SIP_URI, data.locus.self && data.locus.self.callbackInfo && data.locus.self.callbackInfo.callbackAddress) || ((_data$locus$info = data.locus.info) !== null && _data$locus$info !== void 0 && _data$locus$info.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(_meetings.MEETING_KEY.CONVERSATION_URL, data.locus.conversationUrl)) || this.meetingCollection.getByKey(_meetings.MEETING_KEY.MEETINGNUMBER, (_data$locus = data.locus) === null || _data$locus === void 0 ? void 0 : (_data$locus$info2 = _data$locus.info) === null || _data$locus$info2 === void 0 ? void 0 : _data$locus$info2.webExMeetingId);
450
+ _util2.default.checkForCorrelationId(this.webex.internal.device.url, data.locus)) || this.meetingCollection.getByKey(_meetings.MEETING_KEY.SIP_URI, (_data$locus = data.locus) === null || _data$locus === void 0 ? void 0 : (_data$locus$self = _data$locus.self) === null || _data$locus$self === void 0 ? void 0 : (_data$locus$self$call = _data$locus$self.callbackInfo) === null || _data$locus$self$call === void 0 ? void 0 : _data$locus$self$call.callbackAddress) || ((_data$locus2 = data.locus) !== null && _data$locus2 !== void 0 && (_data$locus2$info = _data$locus2.info) !== null && _data$locus2$info !== void 0 && _data$locus2$info.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(_meetings.MEETING_KEY.CONVERSATION_URL, (_data$locus3 = data.locus) === null || _data$locus3 === void 0 ? void 0 : _data$locus3.conversationUrl)) || this.meetingCollection.getByKey(_meetings.MEETING_KEY.MEETINGNUMBER, (_data$locus4 = data.locus) === null || _data$locus4 === void 0 ? void 0 : (_data$locus4$info = _data$locus4.info) === null || _data$locus4$info === void 0 ? void 0 : _data$locus4$info.webExMeetingId);
447
451
  }
448
452
 
449
453
  /**
@@ -460,25 +464,26 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
460
464
  }, {
461
465
  key: "handleLocusEvent",
462
466
  value: function handleLocusEvent(data) {
463
- var _data$locus2,
464
- _data$locus2$replaces,
465
- _this2 = this;
467
+ var _this2 = this;
466
468
  var useRandomDelayForInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
467
469
  var meeting = this.getCorrespondingMeetingByLocus(data);
468
470
 
469
471
  // Special case when locus has got replaced, This only happend once if a replace locus exists
470
472
  // https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-changing-mid-call
471
473
 
472
- if (!meeting && ((_data$locus2 = data.locus) === null || _data$locus2 === void 0 ? void 0 : (_data$locus2$replaces = _data$locus2.replaces) === null || _data$locus2$replaces === void 0 ? void 0 : _data$locus2$replaces.length) > 0) {
473
- // Always the last element in the replace is the active one
474
- meeting = this.meetingCollection.getByKey(_meetings.MEETING_KEY.LOCUS_URL, data.locus.replaces[data.locus.replaces.length - 1].locusUrl);
475
- }
476
- if (meeting && !_util2.default.isBreakoutLocusDTO(data.locus)) {
477
- meeting.locusInfo.updateMainSessionLocusCache(data.locus);
478
- }
479
- if (!this.isNeedHandleLocusDTO(meeting, data.locus)) {
480
- _loggerProxy.default.logger.log("Meetings:index#handleLocusEvent --> doesn't need to process locus event");
481
- return;
474
+ if (data.eventType !== _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
475
+ var _data$locus5, _data$locus5$replaces;
476
+ if (!meeting && ((_data$locus5 = data.locus) === null || _data$locus5 === void 0 ? void 0 : (_data$locus5$replaces = _data$locus5.replaces) === null || _data$locus5$replaces === void 0 ? void 0 : _data$locus5$replaces.length) > 0) {
477
+ // Always the last element in the replace is the active one
478
+ meeting = this.meetingCollection.getByKey(_meetings.MEETING_KEY.LOCUS_URL, data.locus.replaces[data.locus.replaces.length - 1].locusUrl);
479
+ }
480
+ if (meeting && !_util2.default.isBreakoutLocusDTO(data.locus)) {
481
+ meeting.locusInfo.updateMainSessionLocusCache(data.locus);
482
+ }
483
+ if (!this.isNeedHandleLocusDTO(meeting, data.locus)) {
484
+ _loggerProxy.default.logger.log("Meetings:index#handleLocusEvent --> doesn't need to process locus event");
485
+ return;
486
+ }
482
487
  }
483
488
  if (!meeting) {
484
489
  // TODO: create meeting when we get a meeting object
@@ -500,27 +505,61 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
500
505
  // };
501
506
  // rather then locus object change to locus url
502
507
 
503
- if (data.locus && data.locus.fullState && data.locus.fullState.state === _constants.LOCUS.STATE.INACTIVE) {
504
- // just ignore the event as its already ended and not active
505
- _loggerProxy.default.logger.warn('Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.');
506
- return;
507
- }
508
+ if (data.eventType !== _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
509
+ if (data.locus && data.locus.fullState && data.locus.fullState.state === _constants.LOCUS.STATE.INACTIVE) {
510
+ // just ignore the event as its already ended and not active
511
+ _loggerProxy.default.logger.warn('Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.');
512
+ return;
513
+ }
508
514
 
509
- // When its wireless share or guest and user leaves the meeting we dont have to keep the meeting object
510
- // Any future events will be neglected
515
+ // When its wireless share or guest and user leaves the meeting we dont have to keep the meeting object
516
+ // Any future events will be neglected
511
517
 
512
- if (data.locus && data.locus.self && data.locus.self.state === _constants._LEFT_ && data.locus.self.removed === true) {
513
- // just ignore the event as its already ended and not active
514
- _loggerProxy.default.logger.warn('Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.');
515
- return;
518
+ if (data.locus && data.locus.self && data.locus.self.state === _constants._LEFT_ && data.locus.self.removed === true) {
519
+ // just ignore the event as its already ended and not active
520
+ _loggerProxy.default.logger.warn('Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.');
521
+ return;
522
+ }
516
523
  }
517
- this.create(data.locus, _constants.DESTINATION_TYPE.LOCUS_ID, useRandomDelayForInfo).then(function (newMeeting) {
518
- meeting = newMeeting;
519
-
520
- // It's a new meeting so initialize the locus data
521
- meeting.locusInfo.initialSetup(data.locus);
522
- _this2.checkHandleBreakoutLocus(data.locus);
523
- }).catch(function (e) {
524
+ if (data.eventType === _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
525
+ // in hash tree messages we don't ge the locus object, but the meeting constructor needs at least locus.url
526
+ (0, _lodash.set)(data, 'locus.url', data.stateElementsMessage.locusUrl);
527
+ }
528
+ this.create(data.locus, _constants.DESTINATION_TYPE.LOCUS_ID, useRandomDelayForInfo).then(/*#__PURE__*/function () {
529
+ var _ref3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(newMeeting) {
530
+ var _t;
531
+ return _regenerator.default.wrap(function (_context3) {
532
+ while (1) switch (_context3.prev = _context3.next) {
533
+ case 0:
534
+ meeting = newMeeting;
535
+ _context3.prev = 1;
536
+ _context3.next = 2;
537
+ return meeting.locusInfo.initialSetup({
538
+ trigger: data.eventType === _constants.LOCUSEVENT.SDK_LOCUS_FROM_SYNC_MEETINGS ? 'get-loci-response' : 'locus-message',
539
+ locus: data.locus,
540
+ hashTreeMessage: data.stateElementsMessage
541
+ });
542
+ case 2:
543
+ _context3.next = 4;
544
+ break;
545
+ case 3:
546
+ _context3.prev = 3;
547
+ _t = _context3["catch"](1);
548
+ _loggerProxy.default.logger.warn("Meetings:index#handleLocusEvent --> Error initializing locus data: ".concat(_t.message));
549
+ // @ts-ignore
550
+ _this2.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
551
+ case 4:
552
+ _this2.checkHandleBreakoutLocus(data.locus);
553
+ case 5:
554
+ case "end":
555
+ return _context3.stop();
556
+ }
557
+ }, _callee3, null, [[1, 3]]);
558
+ }));
559
+ return function (_x3) {
560
+ return _ref3.apply(this, arguments);
561
+ };
562
+ }()).catch(function (e) {
524
563
  _loggerProxy.default.logger.error(e);
525
564
  }).finally(function () {
526
565
  // There will be cases where locus event comes in gets created and deleted because its a 1:1 and meeting gets deleted
@@ -1424,7 +1463,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1424
1463
  }, {
1425
1464
  key: "createMeeting",
1426
1465
  value: (function () {
1427
- var _createMeeting = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(destination) {
1466
+ var _createMeeting = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(destination) {
1428
1467
  var _this10 = this;
1429
1468
  var type,
1430
1469
  useRandomDelayForInfo,
@@ -1446,19 +1485,19 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1446
1485
  enableUnifiedMeetings,
1447
1486
  meetingInfoOptions,
1448
1487
  meetingAddedType,
1449
- _args3 = arguments,
1450
- _t;
1451
- return _regenerator.default.wrap(function (_context3) {
1452
- while (1) switch (_context3.prev = _context3.next) {
1488
+ _args4 = arguments,
1489
+ _t2;
1490
+ return _regenerator.default.wrap(function (_context4) {
1491
+ while (1) switch (_context4.prev = _context4.next) {
1453
1492
  case 0:
1454
- type = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : null;
1455
- useRandomDelayForInfo = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : false;
1456
- infoExtraParams = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {};
1457
- callStateForMetrics = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : undefined;
1458
- failOnMissingMeetingInfo = _args3.length > 5 && _args3[5] !== undefined ? _args3[5] : false;
1459
- meetingInfo = _args3.length > 6 && _args3[6] !== undefined ? _args3[6] : undefined;
1460
- meetingLookupUrl = _args3.length > 7 && _args3[7] !== undefined ? _args3[7] : undefined;
1461
- classificationId = _args3.length > 8 && _args3[8] !== undefined ? _args3[8] : undefined;
1493
+ type = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : null;
1494
+ useRandomDelayForInfo = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : false;
1495
+ infoExtraParams = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : {};
1496
+ callStateForMetrics = _args4.length > 4 && _args4[4] !== undefined ? _args4[4] : undefined;
1497
+ failOnMissingMeetingInfo = _args4.length > 5 && _args4[5] !== undefined ? _args4[5] : false;
1498
+ meetingInfo = _args4.length > 6 && _args4[6] !== undefined ? _args4[6] : undefined;
1499
+ meetingLookupUrl = _args4.length > 7 && _args4[7] !== undefined ? _args4[7] : undefined;
1500
+ classificationId = _args4.length > 8 && _args4[8] !== undefined ? _args4[8] : undefined;
1462
1501
  meeting = new _meeting.default({
1463
1502
  // @ts-ignore
1464
1503
  userId: this.webex.internal.device.userId,
@@ -1478,7 +1517,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1478
1517
  }, function (newMeeting) {
1479
1518
  _this10.meetingCollection.set(newMeeting);
1480
1519
  });
1481
- _context3.prev = 1;
1520
+ _context4.prev = 1;
1482
1521
  // if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,
1483
1522
  // it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo
1484
1523
  // between 5 and 2 min (random between 3 minutes) before the meeting starts
@@ -1500,43 +1539,43 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1500
1539
  sendCAevents: !!(callStateForMetrics !== null && callStateForMetrics !== void 0 && callStateForMetrics.correlationId) // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
1501
1540
  };
1502
1541
  if (!meetingInfo) {
1503
- _context3.next = 2;
1542
+ _context4.next = 2;
1504
1543
  break;
1505
1544
  }
1506
1545
  meeting.injectMeetingInfo(meetingInfo, meetingInfoOptions, meetingLookupUrl);
1507
- _context3.next = 4;
1546
+ _context4.next = 4;
1508
1547
  break;
1509
1548
  case 2:
1510
1549
  if (!(type !== _constants.DESTINATION_TYPE.ONE_ON_ONE_CALL)) {
1511
- _context3.next = 4;
1550
+ _context4.next = 4;
1512
1551
  break;
1513
1552
  }
1514
1553
  if (!(enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0)) {
1515
- _context3.next = 3;
1554
+ _context4.next = 3;
1516
1555
  break;
1517
1556
  }
1518
1557
  meeting.fetchMeetingInfoTimeoutId = setTimeout(function () {
1519
1558
  return meeting.fetchMeetingInfo(meetingInfoOptions);
1520
1559
  }, waitingTime);
1521
1560
  meeting.parseMeetingInfo(undefined, destination);
1522
- _context3.next = 4;
1561
+ _context4.next = 4;
1523
1562
  break;
1524
1563
  case 3:
1525
- _context3.next = 4;
1564
+ _context4.next = 4;
1526
1565
  return meeting.fetchMeetingInfo(meetingInfoOptions);
1527
1566
  case 4:
1528
- _context3.next = 8;
1567
+ _context4.next = 8;
1529
1568
  break;
1530
1569
  case 5:
1531
- _context3.prev = 5;
1532
- _t = _context3["catch"](1);
1533
- if (!(!(_t instanceof _captchaError.default) && !(_t instanceof _passwordError.default) && !(_t instanceof _permission.default) && !(_t instanceof _joinWebinarError.default) && !(_t instanceof _joinForbiddenError.default))) {
1534
- _context3.next = 7;
1570
+ _context4.prev = 5;
1571
+ _t2 = _context4["catch"](1);
1572
+ if (!(!(_t2 instanceof _captchaError.default) && !(_t2 instanceof _passwordError.default) && !(_t2 instanceof _permission.default) && !(_t2 instanceof _joinWebinarError.default) && !(_t2 instanceof _joinForbiddenError.default))) {
1573
+ _context4.next = 7;
1535
1574
  break;
1536
1575
  }
1537
1576
  _loggerProxy.default.logger.info("Meetings:index#createMeeting --> Info Unable to fetch meeting info for ".concat(destination, "."));
1538
1577
  if (!failOnMissingMeetingInfo) {
1539
- _context3.next = 6;
1578
+ _context4.next = 6;
1540
1579
  break;
1541
1580
  }
1542
1581
  _loggerProxy.default.logger.info("Meetings:index#createMeeting --> Destroying meeting due to missing meeting info.");
@@ -1547,9 +1586,9 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1547
1586
  // if there is no meeting info and no error should be thrown then we assume its a 1:1 call or wireless share
1548
1587
  _loggerProxy.default.logger.info('Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share');
1549
1588
  case 7:
1550
- _loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_t, " fetching /meetingInfo for creation."));
1589
+ _loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_t2, " fetching /meetingInfo for creation."));
1551
1590
  case 8:
1552
- _context3.prev = 8;
1591
+ _context4.prev = 8;
1553
1592
  // For type LOCUS_ID we need to parse the locus object to get the information
1554
1593
  // about the caller and callee
1555
1594
  // Meeting Added event will be created in `handleLocusEvent`
@@ -1569,16 +1608,16 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1569
1608
  type: meetingAddedType
1570
1609
  });
1571
1610
  }
1572
- return _context3.finish(8);
1611
+ return _context4.finish(8);
1573
1612
  case 9:
1574
- return _context3.abrupt("return", meeting);
1613
+ return _context4.abrupt("return", meeting);
1575
1614
  case 10:
1576
1615
  case "end":
1577
- return _context3.stop();
1616
+ return _context4.stop();
1578
1617
  }
1579
- }, _callee3, this, [[1, 5, 8, 9]]);
1618
+ }, _callee4, this, [[1, 5, 8, 9]]);
1580
1619
  }));
1581
- function createMeeting(_x3) {
1620
+ function createMeeting(_x4) {
1582
1621
  return _createMeeting.apply(this, arguments);
1583
1622
  }
1584
1623
  return createMeeting;
@@ -1621,9 +1660,9 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1621
1660
  key: "syncMeetings",
1622
1661
  value: function syncMeetings() {
1623
1662
  var _this11 = this;
1624
- var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1625
- _ref3$keepOnlyLocusMe = _ref3.keepOnlyLocusMeetings,
1626
- keepOnlyLocusMeetings = _ref3$keepOnlyLocusMe === void 0 ? true : _ref3$keepOnlyLocusMe;
1663
+ var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1664
+ _ref4$keepOnlyLocusMe = _ref4.keepOnlyLocusMeetings,
1665
+ keepOnlyLocusMeetings = _ref4$keepOnlyLocusMe === void 0 ? true : _ref4$keepOnlyLocusMe;
1627
1666
  // @ts-ignore
1628
1667
  if (this.webex.credentials.isUnverifiedGuest) {
1629
1668
  _loggerProxy.default.logger.info('Meetings:index#syncMeetings --> skipping meeting sync as unverified guest');
@@ -1636,6 +1675,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1636
1675
  lociToUpdate.forEach(function (locus) {
1637
1676
  activeLocusUrl.push(locus.url);
1638
1677
  _this11.handleLocusEvent({
1678
+ eventType: _constants.LOCUSEVENT.SDK_LOCUS_FROM_SYNC_MEETINGS,
1639
1679
  locus: locus,
1640
1680
  locusUrl: locus.url
1641
1681
  });
@@ -1688,6 +1728,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1688
1728
  return ((_mainLocus$controls = mainLocus.controls) === null || _mainLocus$controls === void 0 ? void 0 : (_mainLocus$controls$b = _mainLocus$controls.breakout) === null || _mainLocus$controls$b === void 0 ? void 0 : _mainLocus$controls$b.url) === ((_breakoutLocus$contro = breakoutLocus.controls) === null || _breakoutLocus$contro === void 0 ? void 0 : (_breakoutLocus$contro2 = _breakoutLocus$contro.breakout) === null || _breakoutLocus$contro2 === void 0 ? void 0 : _breakoutLocus$contro2.url);
1689
1729
  });
1690
1730
  var existCorrespondingMeeting = _this12.getCorrespondingMeetingByLocus({
1731
+ eventType: _constants.LOCUSEVENT.SDK_NO_EVENT,
1691
1732
  locus: breakoutLocus,
1692
1733
  locusUrl: breakoutLocus.url
1693
1734
  });
@@ -1728,6 +1769,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1728
1769
  }
1729
1770
  var associateBreakoutLocus = this.breakoutLocusForHandleLater[existIndex];
1730
1771
  this.handleLocusEvent({
1772
+ eventType: _constants.LOCUSEVENT.SDK_NO_EVENT,
1731
1773
  locus: associateBreakoutLocus,
1732
1774
  locusUrl: associateBreakoutLocus.url
1733
1775
  });