@webex/plugin-meetings 3.9.0-webinar5k.1 → 3.10.0-next.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 (138) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +24 -0
  4. package/dist/constants.js.map +1 -1
  5. package/dist/controls-options-manager/index.js +22 -5
  6. package/dist/controls-options-manager/index.js.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/interceptors/index.js +7 -0
  10. package/dist/interceptors/index.js.map +1 -1
  11. package/dist/interceptors/locusRouteToken.js +116 -0
  12. package/dist/interceptors/locusRouteToken.js.map +1 -0
  13. package/dist/interpretation/index.js +1 -1
  14. package/dist/interpretation/siLanguage.js +1 -1
  15. package/dist/locus-info/controlsUtils.js +11 -2
  16. package/dist/locus-info/controlsUtils.js.map +1 -1
  17. package/dist/locus-info/index.js +76 -322
  18. package/dist/locus-info/index.js.map +1 -1
  19. package/dist/locus-info/parser.js +4 -1
  20. package/dist/locus-info/parser.js.map +1 -1
  21. package/dist/media/properties.js +53 -5
  22. package/dist/media/properties.js.map +1 -1
  23. package/dist/meeting/in-meeting-actions.js +14 -0
  24. package/dist/meeting/in-meeting-actions.js.map +1 -1
  25. package/dist/meeting/index.js +467 -277
  26. package/dist/meeting/index.js.map +1 -1
  27. package/dist/meeting/request.js +177 -14
  28. package/dist/meeting/request.js.map +1 -1
  29. package/dist/meeting/type.js +7 -0
  30. package/dist/meeting/type.js.map +1 -0
  31. package/dist/meeting/util.js +100 -3
  32. package/dist/meeting/util.js.map +1 -1
  33. package/dist/meeting-info/meeting-info-v2.js +29 -21
  34. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  35. package/dist/meetings/index.js +20 -16
  36. package/dist/meetings/index.js.map +1 -1
  37. package/dist/member/index.js +9 -0
  38. package/dist/member/index.js.map +1 -1
  39. package/dist/member/util.js +10 -0
  40. package/dist/member/util.js.map +1 -1
  41. package/dist/members/index.js +10 -7
  42. package/dist/members/index.js.map +1 -1
  43. package/dist/members/util.js +7 -2
  44. package/dist/members/util.js.map +1 -1
  45. package/dist/metrics/constants.js +2 -1
  46. package/dist/metrics/constants.js.map +1 -1
  47. package/dist/multistream/mediaRequestManager.js +1 -1
  48. package/dist/multistream/mediaRequestManager.js.map +1 -1
  49. package/dist/multistream/remoteMedia.js +34 -5
  50. package/dist/multistream/remoteMedia.js.map +1 -1
  51. package/dist/multistream/remoteMediaGroup.js +42 -2
  52. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  53. package/dist/reachability/index.js +3 -3
  54. package/dist/reachability/index.js.map +1 -1
  55. package/dist/types/constants.d.ts +23 -0
  56. package/dist/types/controls-options-manager/index.d.ts +9 -1
  57. package/dist/types/interceptors/index.d.ts +2 -1
  58. package/dist/types/interceptors/locusRouteToken.d.ts +38 -0
  59. package/dist/types/locus-info/index.d.ts +9 -54
  60. package/dist/types/media/properties.d.ts +21 -0
  61. package/dist/types/meeting/in-meeting-actions.d.ts +14 -0
  62. package/dist/types/meeting/index.d.ts +64 -29
  63. package/dist/types/meeting/request.d.ts +42 -0
  64. package/dist/types/meeting/type.d.ts +9 -0
  65. package/dist/types/meeting/util.d.ts +13 -0
  66. package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
  67. package/dist/types/meetings/index.d.ts +3 -1
  68. package/dist/types/member/index.d.ts +1 -0
  69. package/dist/types/member/util.d.ts +5 -0
  70. package/dist/types/members/index.d.ts +12 -11
  71. package/dist/types/members/util.d.ts +8 -4
  72. package/dist/types/metrics/constants.d.ts +1 -0
  73. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  74. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  75. package/dist/webinar/index.js +1 -1
  76. package/package.json +25 -27
  77. package/src/constants.ts +26 -2
  78. package/src/controls-options-manager/index.ts +26 -5
  79. package/src/index.ts +2 -1
  80. package/src/interceptors/index.ts +2 -1
  81. package/src/interceptors/locusRouteToken.ts +80 -0
  82. package/src/locus-info/controlsUtils.ts +18 -0
  83. package/src/locus-info/index.ts +69 -357
  84. package/src/locus-info/parser.ts +5 -1
  85. package/src/media/properties.ts +43 -0
  86. package/src/meeting/in-meeting-actions.ts +29 -0
  87. package/src/meeting/index.ts +296 -87
  88. package/src/meeting/request.ts +141 -0
  89. package/src/meeting/type.ts +9 -0
  90. package/src/meeting/util.ts +107 -3
  91. package/src/meeting-info/meeting-info-v2.ts +24 -5
  92. package/src/meetings/index.ts +15 -22
  93. package/src/member/index.ts +10 -0
  94. package/src/member/util.ts +14 -0
  95. package/src/members/index.ts +20 -10
  96. package/src/members/util.ts +20 -3
  97. package/src/metrics/constants.ts +1 -0
  98. package/src/multistream/mediaRequestManager.ts +7 -7
  99. package/src/multistream/remoteMedia.ts +34 -4
  100. package/src/multistream/remoteMediaGroup.ts +37 -2
  101. package/src/reachability/index.ts +3 -3
  102. package/test/unit/spec/common/browser-detection.js +0 -24
  103. package/test/unit/spec/controls-options-manager/index.js +47 -0
  104. package/test/unit/spec/fixture/locus.js +1 -0
  105. package/test/unit/spec/interceptors/locusRouteToken.ts +87 -0
  106. package/test/unit/spec/locus-info/index.js +80 -361
  107. package/test/unit/spec/locus-info/parser.js +3 -2
  108. package/test/unit/spec/media/properties.ts +137 -0
  109. package/test/unit/spec/meeting/in-meeting-actions.ts +14 -0
  110. package/test/unit/spec/meeting/index.js +637 -53
  111. package/test/unit/spec/meeting/muteState.js +32 -6
  112. package/test/unit/spec/meeting/request.js +21 -0
  113. package/test/unit/spec/meeting/utils.js +170 -17
  114. package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
  115. package/test/unit/spec/meetings/index.js +12 -5
  116. package/test/unit/spec/member/util.js +24 -0
  117. package/test/unit/spec/members/collection.js +120 -0
  118. package/test/unit/spec/members/index.js +107 -2
  119. package/test/unit/spec/members/request.js +55 -0
  120. package/test/unit/spec/members/utils.js +116 -14
  121. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  122. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  123. package/test/unit/spec/reachability/index.ts +158 -3
  124. package/test/unit/spec/roap/turnDiscovery.ts +3 -3
  125. package/dist/hashTree/constants.js +0 -23
  126. package/dist/hashTree/constants.js.map +0 -1
  127. package/dist/hashTree/hashTree.js +0 -516
  128. package/dist/hashTree/hashTree.js.map +0 -1
  129. package/dist/hashTree/hashTreeParser.js +0 -521
  130. package/dist/hashTree/hashTreeParser.js.map +0 -1
  131. package/dist/types/hashTree/constants.d.ts +0 -8
  132. package/dist/types/hashTree/hashTree.d.ts +0 -128
  133. package/dist/types/hashTree/hashTreeParser.d.ts +0 -152
  134. package/src/hashTree/constants.ts +0 -12
  135. package/src/hashTree/hashTree.ts +0 -460
  136. package/src/hashTree/hashTreeParser.ts +0 -556
  137. package/test/unit/spec/hashTree/hashTree.ts +0 -394
  138. package/test/unit/spec/hashTree/hashTreeParser.ts +0 -156
@@ -1,25 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
4
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
5
- var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
6
- var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
7
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
- var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
9
- var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
10
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
11
4
  var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
12
5
  var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
13
6
  var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
14
7
  var _Array$isArray2 = require("@babel/runtime-corejs2/core-js/array/is-array");
15
- var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
8
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
16
9
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
17
10
  _Object$defineProperty(exports, "__esModule", {
18
11
  value: true
19
12
  });
20
13
  exports.default = void 0;
21
- var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
22
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
23
14
  var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
24
15
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
25
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
@@ -42,18 +33,11 @@ var _mediaSharesUtils = _interopRequireDefault(require("./mediaSharesUtils"));
42
33
  var _parser = _interopRequireDefault(require("./parser"));
43
34
  var _metrics = _interopRequireDefault(require("../metrics"));
44
35
  var _constants2 = _interopRequireDefault(require("../metrics/constants"));
45
- var _hashTreeParser = _interopRequireWildcard(require("../hashTree/hashTreeParser"));
46
- function _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
47
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
48
36
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray2(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
49
37
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
50
38
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
51
- 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; }
52
- 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; }
53
39
  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); }; }
54
- 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; } } /* eslint-disable class-methods-use-this */
55
- var LocusDtoTopLevelKeys = ['controls', 'fullState', 'host', 'info', 'links', 'mediaShares', 'meetings', 'participants', 'replaces', 'self', 'sequence', 'syncUrl', 'url'];
56
-
40
+ 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; } }
57
41
  /**
58
42
  * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
59
43
  * @export
@@ -63,8 +47,6 @@ var LocusDtoTopLevelKeys = ['controls', 'fullState', 'host', 'info', 'links', 'm
63
47
  var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
64
48
  (0, _inherits2.default)(LocusInfo, _EventsScope);
65
49
  var _super = _createSuper(LocusInfo);
66
- // mapping of hash tree object ids to participant ids
67
-
68
50
  /**
69
51
  * Constructor
70
52
  * @param {function} updateMeeting callback to update the meeting object from an object
@@ -86,7 +68,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
86
68
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "aclUrl", void 0);
87
69
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "baseSequence", void 0);
88
70
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "created", void 0);
89
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "deltaParticipants", void 0);
90
71
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "identities", void 0);
91
72
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "membership", void 0);
92
73
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "participants", void 0);
@@ -108,8 +89,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
108
89
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "resources", void 0);
109
90
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mainSessionLocusCache", void 0);
110
91
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "self", void 0);
111
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hashTreeParser", void 0);
112
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hashTreeObjectId2ParticipantId", void 0);
113
92
  _this.parsedLocus = {
114
93
  states: []
115
94
  };
@@ -119,7 +98,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
119
98
  _this.meetingId = meetingId;
120
99
  _this.updateMeeting = updateMeeting;
121
100
  _this.locusParser = new _parser.default();
122
- _this.hashTreeObjectId2ParticipantId = new _map.default();
123
101
  return _this;
124
102
  }
125
103
 
@@ -127,21 +105,29 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
127
105
  * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.
128
106
  *
129
107
  * @param {Meeting} meeting
108
+ * @param {boolean} isLocusUrlChanged
109
+ * @param {Locus} locus
130
110
  * @returns {undefined}
131
111
  */
132
112
  (0, _createClass2.default)(LocusInfo, [{
133
113
  key: "doLocusSync",
134
- value: function doLocusSync(meeting) {
135
- var _this2 = this;
136
- var isDelta;
114
+ value: function doLocusSync(meeting, isLocusUrlChanged, locus) {
115
+ var _this$locusParser$wor,
116
+ _this2 = this;
137
117
  var url;
118
+ var isDelta = false;
138
119
  var meetingDestroyed = false;
139
- if (this.locusParser.workingCopy.syncUrl) {
120
+ if (isLocusUrlChanged) {
121
+ // for the locus url changed case from breakout to main session, we should always do a full sync, in this case, the url from locus is always on main session,
122
+ // so use the main session locus url to get the full locus(full participants list in the response).
123
+ // for the locus url changed case from main session to breakout, we don't need to care about it here,
124
+ // because it is a USE_INCOMING case, it will not be executed here.
125
+ url = locus.url;
126
+ } else if ((_this$locusParser$wor = this.locusParser.workingCopy) !== null && _this$locusParser$wor !== void 0 && _this$locusParser$wor.syncUrl) {
140
127
  url = this.locusParser.workingCopy.syncUrl;
141
128
  isDelta = true;
142
129
  } else {
143
130
  url = meeting.locusUrl;
144
- isDelta = false;
145
131
  }
146
132
  _loggerProxy.default.logger.info("Locus-info:index#doLocusSync --> doing Locus sync (getting ".concat(isDelta ? 'delta' : 'full', " DTO)"));
147
133
 
@@ -190,8 +176,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
190
176
  }
191
177
  if (isDelta) {
192
178
  if (res.body.baseSequence) {
193
- meeting.locusInfo.handleLocusDelta(res.body, meeting); // todo: check if this is safe, is isDelta=true always only for non-hash tree locus
194
-
179
+ meeting.locusInfo.handleLocusDelta(res.body, meeting);
195
180
  return;
196
181
  }
197
182
  // in some cases Locus might return us full DTO even when we asked for a delta
@@ -233,6 +218,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
233
218
  USE_INCOMING = _LocusDeltaParser$loc.USE_INCOMING,
234
219
  WAIT = _LocusDeltaParser$loc.WAIT,
235
220
  LOCUS_URL_CHANGED = _LocusDeltaParser$loc.LOCUS_URL_CHANGED;
221
+ var isLocusUrlChanged = action === LOCUS_URL_CHANGED;
236
222
  switch (action) {
237
223
  case USE_INCOMING:
238
224
  meeting.locusInfo.onDeltaLocus(locus);
@@ -243,7 +229,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
243
229
  break;
244
230
  case DESYNC:
245
231
  case LOCUS_URL_CHANGED:
246
- this.doLocusSync(meeting);
232
+ this.doLocusSync(meeting, isLocusUrlChanged, locus);
247
233
  break;
248
234
  default:
249
235
  _loggerProxy.default.logger.info("Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ".concat(action));
@@ -303,16 +289,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
303
289
  * @property {Object} person - Contains person data.
304
290
  */
305
291
 
306
- /**
307
- * Stored participant changes between the last event and the current event.
308
- * All previously stored events are overwritten between events.
309
- *
310
- * @instance
311
- * @type {Array<DeltaParticipant>}
312
- * @private
313
- * @member LocusInfo
314
- */
315
- this.deltaParticipants = [];
316
292
  this.updateLocusCache(locus);
317
293
  // above section only updates the locusInfo object
318
294
  // The below section makes sure it updates the locusInfo as well as updates the meeting object
@@ -320,7 +296,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
320
296
  // For 1:1 space meeting the conversation Url does not exist in locus.conversation
321
297
  this.updateConversationUrl(locus.conversationUrl, locus.info);
322
298
  this.updateControls(locus.controls, locus.self);
323
- this.updateLocusUrl(locus.url);
299
+ this.updateLocusUrl(locus.url, _controlsUtils.default.isMainSessionDTO(locus));
324
300
  this.updateFullState(locus.fullState);
325
301
  this.updateMeetingInfo(locus.info);
326
302
  this.updateEmbeddedApps(locus.embeddedApps);
@@ -334,176 +310,29 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
334
310
 
335
311
  /**
336
312
  * @param {Object} locus
337
- * @param {DataSet[]} [dataSets=[]] - Array of data sets
338
313
  * @returns {undefined}
339
314
  * @memberof LocusInfo
340
315
  */
341
316
  }, {
342
317
  key: "initialSetup",
343
318
  value: function initialSetup(locus) {
344
- var dataSets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
345
319
  this.updateLocusCache(locus);
346
- this.onFullLocus(locus, undefined, dataSets);
320
+ this.onFullLocus(locus);
347
321
 
348
322
  // Change it to true after it receives it first locus object
349
323
  this.emitChange = true;
350
324
  }
351
325
 
352
326
  /**
353
- *
354
- * @param {HashTreeObject} object data set object
355
- * @param {any} locus
356
- * @returns {void}
357
- */
358
- }, {
359
- key: "updateHashTreeObjectInLocus",
360
- value: function updateHashTreeObjectInLocus(object, locus) {
361
- var type = object.htMeta.elementId.type.toLowerCase();
362
- switch (type) {
363
- case _hashTreeParser.ObjectType.locus:
364
- {
365
- if (!object.data) {
366
- _loggerProxy.default.logger.warn("Locus-info:index#updateHashTreeObjectInLocus --> received LOCUS object without data, this is not supported!");
367
- return locus;
368
- }
369
- // replace the main locus
370
-
371
- // The Locus object from MAIN dataset has empty participants, so removing them to avoid it overriding the ones in our current locus object
372
- // Also, it doesn't have "self". That's OK as it won't override existing locus.self and also existing SDK code can handle that missing self in Locus updates
373
- var locusObjectFromData = object.data;
374
- delete locusObjectFromData.participants;
375
- locus = _objectSpread(_objectSpread({}, locus), locusObjectFromData);
376
- locus.htMeta = object.htMeta;
377
- break;
378
- }
379
- case _hashTreeParser.ObjectType.participant:
380
- _loggerProxy.default.logger.info("Locus-info:index#updateHashTreeObjectInLocus --> participant id=".concat(object.htMeta.elementId.id, " ").concat(object.data ? 'updated' : 'removed'));
381
- console.log('marcin: hashTreeObjectId2ParticipantId=', (0, _lodash.cloneDeep)(this.hashTreeObjectId2ParticipantId));
382
- if (object.data) {
383
- if (!locus.participants) {
384
- locus.participants = [];
385
- }
386
- var participantObject = object.data;
387
- participantObject.htMeta = object.htMeta;
388
- locus.participants.push(participantObject);
389
- this.hashTreeObjectId2ParticipantId.set(object.htMeta.elementId.id, participantObject.id);
390
- } else {
391
- var participantId = this.hashTreeObjectId2ParticipantId.get(object.htMeta.elementId.id);
392
- if (!locus.jsSdkMeta) {
393
- locus.jsSdkMeta = {
394
- removedParticipantIds: []
395
- };
396
- }
397
- locus.jsSdkMeta.removedParticipantIds.push(participantId);
398
- this.hashTreeObjectId2ParticipantId.delete(object.htMeta.elementId.id);
399
- }
400
- break;
401
- case _hashTreeParser.ObjectType.self:
402
- if (!object.data) {
403
- _loggerProxy.default.logger.warn("Locus-info:index#updateHashTreeObjectInLocus --> received SELF object without data, this is not supported!");
404
- return locus;
405
- }
406
- locus.self = object.data;
407
- break;
408
- }
409
- return locus;
410
- }
411
-
412
- /**
413
- * Handles HTTP response from Locus API call when hash tree update.
327
+ * Handles HTTP response from Locus API call.
414
328
  * @param {Meeting} meeting meeting object
415
- * @param {LocusApiResponseBody} responseBody body of the http reponse from Locus API call
329
+ * @param {LocusApiResponseBody} responseBody body of the http response from Locus API call
416
330
  * @returns {void}
417
331
  */
418
332
  }, {
419
333
  key: "handleLocusAPIResponse",
420
334
  value: function handleLocusAPIResponse(meeting, responseBody) {
421
- console.log('marcin: locus response from API call:', responseBody);
422
- if (responseBody.dataSets) {
423
- if (!this.hashTreeParser) {
424
- _loggerProxy.default.logger.warn("Locus-info:index#handleLocusAPIResponse --> received response with hash tree info from Locus API, but we don't have the hashTreeParser created");
425
- return;
426
- }
427
- // Locus is using the new hash tree mechanism
428
- // so update our data in the hash tree parser
429
- this.hashTreeParser.handleLocusUpdate(responseBody);
430
-
431
- // but the Locus object we receive in this case looks same like classic delta, so we can use existing delta method to process it
432
- this.onDeltaLocus(responseBody.locus);
433
- } else {
434
- // classic Locus delta
435
- this.handleLocusDelta(responseBody.locus, meeting);
436
- }
437
- }
438
-
439
- /**
440
- * Handles a hash tree message received from Locus.
441
- *
442
- * @param {Meeting} meeting - The meeting object
443
- * @param {HashTreeMessage} message incoming hash tree message
444
- * @returns {void}
445
- */
446
- }, {
447
- key: "handleHashTreeMessage",
448
- value: function handleHashTreeMessage(meeting, message) {
449
- if (!this.hashTreeParser) {
450
- _loggerProxy.default.logger.warn("Locus-info:index#handleHashTreeMessage --> received hash tree message, but we don't have the hashTreeParser");
451
- return;
452
- }
453
- if (message.locusStateElements === undefined) {
454
- // todo: need to see in practice how exactly the heartbeat messages look like
455
- this.hashTreeParser.handleRootHashHeartBeatMessage(message);
456
- } else {
457
- this.hashTreeParser.handleMessage(message);
458
- }
459
- }
460
-
461
- /**
462
- * Updates our locus info based on the data parsed by the hash tree parser.
463
- *
464
- * @param {LocusInfoUpdateType} updateType - The type of update received.
465
- * @param {Object} [data] - Additional data for the update, if applicable.
466
- * @returns {void}
467
- */
468
- }, {
469
- key: "updateFromHashTree",
470
- value: function updateFromHashTree(updateType, data) {
471
- var _this4 = this;
472
- switch (updateType) {
473
- case _hashTreeParser.LocusInfoUpdateType.OBJECTS_UPDATED:
474
- {
475
- // initialize the main locus with what we currently have
476
- // but with empty participants array
477
- var locus = {
478
- participants: [],
479
- jsSdkMeta: {
480
- removedParticipantIds: []
481
- }
482
- };
483
- LocusDtoTopLevelKeys.forEach(function (key) {
484
- if (key === 'participants') {
485
- locus[key] = [];
486
- } else {
487
- locus[key] = (0, _lodash.cloneDeep)(_this4[key]);
488
- }
489
- });
490
-
491
- // apply the updates from the hash tree onto the locus
492
- data.updatedObjects.forEach(function (object) {
493
- locus = _this4.updateHashTreeObjectInLocus(object, locus);
494
- });
495
-
496
- // update our locus info with the new locus
497
- this.onDeltaLocus(locus);
498
- break;
499
- }
500
- case _hashTreeParser.LocusInfoUpdateType.MEETING_ENDED:
501
- {
502
- _loggerProxy.default.logger.info("Locus-info:index#updateFromHashTree --> received signal that meeting ended, destroying meeting ".concat(this.meetingId));
503
- var meeting = this.webex.meetings.meetingCollection.get(this.meetingId);
504
- this.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
505
- }
506
- }
335
+ this.handleLocusDelta(responseBody.locus, meeting);
507
336
  }
508
337
 
509
338
  /**
@@ -515,42 +344,37 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
515
344
  }, {
516
345
  key: "parse",
517
346
  value: function parse(meeting, data) {
518
- if (data.eventType === 'locus.state_message') {
519
- // this is the new hashmap Locus message format (only applicable to webinars for now)
520
- this.handleHashTreeMessage(meeting, data.stateElementsMessage);
521
- } else {
522
- // eslint-disable-next-line @typescript-eslint/no-shadow
523
- var eventType = data.eventType;
524
- var locus = this.getTheLocusToUpdate(data.locus);
525
- _loggerProxy.default.logger.info("Locus-info:index#parse --> received locus data: ".concat(eventType));
526
- locus.jsSdkMeta = {
527
- removedParticipantIds: []
528
- };
529
- switch (eventType) {
530
- case _constants.LOCUSEVENT.PARTICIPANT_JOIN:
531
- case _constants.LOCUSEVENT.PARTICIPANT_LEFT:
532
- case _constants.LOCUSEVENT.CONTROLS_UPDATED:
533
- case _constants.LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:
534
- case _constants.LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:
535
- case _constants.LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:
536
- case _constants.LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:
537
- case _constants.LOCUSEVENT.SELF_CHANGED:
538
- case _constants.LOCUSEVENT.PARTICIPANT_UPDATED:
539
- case _constants.LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:
540
- case _constants.LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:
541
- case _constants.LOCUSEVENT.PARTICIPANT_DECLINED:
542
- case _constants.LOCUSEVENT.FLOOR_GRANTED:
543
- case _constants.LOCUSEVENT.FLOOR_RELEASED:
544
- this.onFullLocus(locus, eventType);
545
- break;
546
- case _constants.LOCUSEVENT.DIFFERENCE:
547
- this.handleLocusDelta(locus, meeting);
548
- break;
549
- default:
550
- // Why will there be a event with no eventType ????
551
- // we may not need this, we can get full locus
552
- this.handleLocusDelta(locus, meeting);
553
- }
347
+ // eslint-disable-next-line @typescript-eslint/no-shadow
348
+ var eventType = data.eventType;
349
+ var locus = this.getTheLocusToUpdate(data.locus);
350
+ _loggerProxy.default.logger.info("Locus-info:index#parse --> received locus data: ".concat(eventType));
351
+ locus.jsSdkMeta = {
352
+ removedParticipantIds: []
353
+ };
354
+ switch (eventType) {
355
+ case _constants.LOCUSEVENT.PARTICIPANT_JOIN:
356
+ case _constants.LOCUSEVENT.PARTICIPANT_LEFT:
357
+ case _constants.LOCUSEVENT.CONTROLS_UPDATED:
358
+ case _constants.LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:
359
+ case _constants.LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:
360
+ case _constants.LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:
361
+ case _constants.LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:
362
+ case _constants.LOCUSEVENT.SELF_CHANGED:
363
+ case _constants.LOCUSEVENT.PARTICIPANT_UPDATED:
364
+ case _constants.LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:
365
+ case _constants.LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:
366
+ case _constants.LOCUSEVENT.PARTICIPANT_DECLINED:
367
+ case _constants.LOCUSEVENT.FLOOR_GRANTED:
368
+ case _constants.LOCUSEVENT.FLOOR_RELEASED:
369
+ this.onFullLocus(locus, eventType);
370
+ break;
371
+ case _constants.LOCUSEVENT.DIFFERENCE:
372
+ this.handleLocusDelta(locus, meeting);
373
+ break;
374
+ default:
375
+ // Why will there be a event with no eventType ????
376
+ // we may not need this, we can get full locus
377
+ this.handleLocusDelta(locus, meeting);
554
378
  }
555
379
  }
556
380
 
@@ -571,54 +395,22 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
571
395
  * updates the locus with full locus object
572
396
  * @param {object} locus locus object
573
397
  * @param {string} eventType particulat locus event
574
- * @param {DataSet[]} dataSets
575
398
  * @returns {object} null
576
399
  * @memberof LocusInfo
577
400
  */
578
401
  }, {
579
402
  key: "onFullLocus",
580
- value: function onFullLocus(locus, eventType, dataSets) {
581
- var _this$participants,
582
- _this5 = this,
583
- _locus$jsSdkMeta;
403
+ value: function onFullLocus(locus, eventType) {
404
+ var _locus$jsSdkMeta;
584
405
  if (!locus) {
585
406
  _loggerProxy.default.logger.error('Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.');
586
407
  }
587
- if (dataSets) {
588
- // this is the new hashmap Locus DTO format (only applicable to webinars for now)
589
- if (!this.hashTreeParser) {
590
- _loggerProxy.default.logger.info("Locus-info:index#onFullLocus --> creating hash tree parser");
591
- _loggerProxy.default.logger.info('Locus-info:index#onFullLocus --> dataSets:', dataSets, ' and locus:', locus);
592
- this.hashTreeParser = new _hashTreeParser.default({
593
- initialLocus: {
594
- locus: locus,
595
- dataSets: dataSets
596
- },
597
- webexRequest: this.webex.request.bind(this.webex),
598
- locusInfoUpdateCallback: this.updateFromHashTree.bind(this),
599
- debugId: "HT-".concat(this.meetingId.substring(0, 4))
600
- });
601
- } else {
602
- // in this case the Locus we're getting is not necessarily the full one
603
- // so treat it like if we just got it in a message
604
- console.log('marcin: !!!!!!!! full DTO - this is not fully implemented/tested yet');
605
- _loggerProxy.default.logger.warn('Locus-info:index#onFullLocus --> full DTO - this is not fully implemented/tested yet!!!!!!!!');
606
- this.handleLocusAPIResponse(undefined, {
607
- dataSets: dataSets,
608
- locus: locus
609
- });
610
- return;
611
- }
612
- } else if (!this.locusParser.isNewFullLocus(locus)) {
408
+ if (!this.locusParser.isNewFullLocus(locus)) {
613
409
  _loggerProxy.default.logger.info("Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=".concat(eventType));
614
410
  return;
615
411
  }
616
- this.updateParticipantDeltas(locus.participants);
617
412
  this.scheduledMeeting = locus.meeting || null;
618
413
  this.participants = locus.participants;
619
- (_this$participants = this.participants) === null || _this$participants === void 0 ? void 0 : _this$participants.forEach(function (participant) {
620
- _this5.hashTreeObjectId2ParticipantId.set(participant.htMeta.elementId.id, participant.id);
621
- });
622
414
  var isReplaceMembers = _controlsUtils.default.isNeedReplaceMembers(this.controls, locus.controls);
623
415
  this.updateLocusInfo(locus);
624
416
  this.updateParticipants(locus.participants, (_locus$jsSdkMeta = locus.jsSdkMeta) === null || _locus$jsSdkMeta === void 0 ? void 0 : _locus$jsSdkMeta.removedParticipantIds, isReplaceMembers);
@@ -701,7 +493,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
701
493
  this.updateCreated(locus.created);
702
494
  this.updateFullState(locus.fullState);
703
495
  this.updateHostInfo(locus.host);
704
- this.updateLocusUrl(locus.url);
496
+ this.updateLocusUrl(locus.url, _controlsUtils.default.isMainSessionDTO(locus));
705
497
  this.updateMeetingInfo(locus.info, locus.self);
706
498
  this.updateMediaShares(locus.mediaShares);
707
499
  this.updateParticipantsUrl(locus.participantsUrl);
@@ -908,58 +700,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
908
700
  }
909
701
  }
910
702
 
911
- /**
912
- * Update the deltaParticipants property of this object based on a list of
913
- * provided participants.
914
- *
915
- * @param {Array} [participants] - The participants to update against.
916
- * @returns {void}
917
- */
918
- }, {
919
- key: "updateParticipantDeltas",
920
- value: function updateParticipantDeltas() {
921
- var _this6 = this;
922
- var participants = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
923
- // Used to find a participant within a participants collection.
924
- var findParticipant = function findParticipant(participant, collection) {
925
- return collection.find(function (item) {
926
- return item.person.id === participant.person.id;
927
- });
928
- };
929
-
930
- // Generates an object that indicates which state properties have changed.
931
- var generateDelta = function generateDelta() {
932
- var prevState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
933
- var newState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
934
- // Setup deltas.
935
- var deltas = {
936
- audioStatus: prevState.audioStatus !== newState.audioStatus,
937
- videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,
938
- videoStatus: prevState.videoStatus !== newState.videoStatus
939
- };
940
-
941
- // Clean the object
942
- (0, _keys.default)(deltas).forEach(function (key) {
943
- if (deltas[key] !== true) {
944
- delete deltas[key];
945
- }
946
- });
947
- return deltas;
948
- };
949
- this.deltaParticipants = participants.reduce(function (collection, participant) {
950
- var existingParticipant = findParticipant(participant, _this6.participants || []) || {};
951
- var delta = generateDelta(existingParticipant.status, participant.status);
952
- var changed = (0, _keys.default)(delta).length > 0;
953
- if (changed) {
954
- collection.push({
955
- person: participant.person,
956
- delta: delta
957
- });
958
- }
959
- return collection;
960
- }, []);
961
- }
962
-
963
703
  /**
964
704
  * update meeting's members
965
705
  * @param {Object} participants new participants object
@@ -1046,6 +786,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1046
786
  hasAnnotationControlChanged = _ControlsUtils$getCon2.hasAnnotationControlChanged,
1047
787
  hasRemoteDesktopControlChanged = _ControlsUtils$getCon2.hasRemoteDesktopControlChanged,
1048
788
  hasPollingQAControlChanged = _ControlsUtils$getCon2.hasPollingQAControlChanged,
789
+ hasAutoEndMeetingChanged = _ControlsUtils$getCon2.hasAutoEndMeetingChanged,
1049
790
  current = _ControlsUtils$getCon.current;
1050
791
  if (hasMuteOnEntryChanged) {
1051
792
  this.emitScoped({
@@ -1266,6 +1007,14 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1266
1007
  state: current.pollingQAControl
1267
1008
  });
1268
1009
  }
1010
+ if (hasAutoEndMeetingChanged) {
1011
+ this.emitScoped({
1012
+ file: 'locus-info',
1013
+ function: 'updateControls'
1014
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, {
1015
+ state: current.autoEndMeetingWarning
1016
+ });
1017
+ }
1269
1018
  this.controls = controls;
1270
1019
  }
1271
1020
  }
@@ -1417,7 +1166,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1417
1166
  value: function updateMeetingInfo(info, self) {
1418
1167
  var _this$parsedLocus$sel;
1419
1168
  var roles = self ? _selfUtils.default.getRoles(self) : ((_this$parsedLocus$sel = this.parsedLocus.self) === null || _this$parsedLocus$sel === void 0 ? void 0 : _this$parsedLocus$sel.roles) || [];
1420
- if (info && !(0, _lodash.isEqual)(this.info, info) || roles.length && !(0, _lodash.isEqual)(this.roles, roles) && info) {
1169
+ if (info && !(0, _lodash.isEqual)(this.info, info) || !(0, _lodash.isEqual)(this.roles, roles) && info) {
1421
1170
  var isJoined = _selfUtils.default.isJoined(self || this.parsedLocus.self);
1422
1171
  var parsedInfo = _infoUtils.default.getInfos(this.parsedLocus.info, info, roles, isJoined);
1423
1172
  if (parsedInfo.updates.isLocked) {
@@ -1719,12 +1468,14 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1719
1468
  /**
1720
1469
  * handles when the locus.url is updated
1721
1470
  * @param {String} url
1471
+ * @param {Boolean} isMainLocus
1722
1472
  * @returns {undefined}
1723
1473
  * emits internal event locus_info_update_url
1724
1474
  */
1725
1475
  }, {
1726
1476
  key: "updateLocusUrl",
1727
1477
  value: function updateLocusUrl(url) {
1478
+ var isMainLocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1728
1479
  if (url && this.url !== url) {
1729
1480
  this.url = url;
1730
1481
  this.updateMeeting({
@@ -1733,7 +1484,10 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1733
1484
  this.emitScoped({
1734
1485
  file: 'locus-info',
1735
1486
  function: 'updateLocusUrl'
1736
- }, _constants.EVENTS.LOCUS_INFO_UPDATE_URL, url);
1487
+ }, _constants.EVENTS.LOCUS_INFO_UPDATE_URL, {
1488
+ url: url,
1489
+ isMainLocus: isMainLocus
1490
+ });
1737
1491
  }
1738
1492
  }
1739
1493
 
@@ -1879,7 +1633,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1879
1633
  }, {
1880
1634
  key: "updateMainSessionLocusCache",
1881
1635
  value: function updateMainSessionLocusCache(mainLocus) {
1882
- var _this7 = this;
1636
+ var _this4 = this;
1883
1637
  if (!mainLocus) {
1884
1638
  return;
1885
1639
  }
@@ -1888,7 +1642,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1888
1642
  // shallow merge and do special merge for participants
1889
1643
  (0, _lodash.assignWith)(this.mainSessionLocusCache, locusClone, function (objValue, srcValue, key) {
1890
1644
  if (key === 'participants') {
1891
- return _this7.mergeParticipants(objValue, srcValue);
1645
+ return _this4.mergeParticipants(objValue, srcValue);
1892
1646
  }
1893
1647
  return srcValue || objValue;
1894
1648
  });