@webex/plugin-meetings 3.4.0 → 3.5.0-next.2

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 (63) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/interpretation/index.js +1 -1
  4. package/dist/interpretation/siLanguage.js +1 -1
  5. package/dist/media/index.js +6 -9
  6. package/dist/media/index.js.map +1 -1
  7. package/dist/meeting/index.js +151 -50
  8. package/dist/meeting/index.js.map +1 -1
  9. package/dist/meeting/util.js +1 -0
  10. package/dist/meeting/util.js.map +1 -1
  11. package/dist/meetings/index.js +11 -2
  12. package/dist/meetings/index.js.map +1 -1
  13. package/dist/reachability/index.js +175 -103
  14. package/dist/reachability/index.js.map +1 -1
  15. package/dist/reconnection-manager/index.js +1 -1
  16. package/dist/reconnection-manager/index.js.map +1 -1
  17. package/dist/rtcMetrics/index.js +26 -6
  18. package/dist/rtcMetrics/index.js.map +1 -1
  19. package/dist/types/meeting/index.d.ts +22 -2
  20. package/dist/types/meetings/index.d.ts +4 -2
  21. package/dist/types/reachability/index.d.ts +14 -2
  22. package/dist/types/rtcMetrics/index.d.ts +11 -1
  23. package/dist/webinar/index.js +1 -1
  24. package/package.json +22 -22
  25. package/src/media/index.ts +5 -9
  26. package/src/meeting/index.ts +88 -10
  27. package/src/meeting/util.ts +2 -0
  28. package/src/meetings/index.ts +11 -4
  29. package/src/reachability/index.ts +49 -4
  30. package/src/reconnection-manager/index.ts +1 -1
  31. package/src/rtcMetrics/index.ts +25 -5
  32. package/test/integration/spec/converged-space-meetings.js +1 -1
  33. package/test/unit/spec/breakouts/index.ts +1 -0
  34. package/test/unit/spec/interceptors/locusRetry.ts +11 -10
  35. package/test/unit/spec/media/MediaConnectionAwaiter.ts +1 -0
  36. package/test/unit/spec/media/index.ts +34 -7
  37. package/test/unit/spec/media/properties.ts +1 -1
  38. package/test/unit/spec/meeting/connectionStateHandler.ts +1 -0
  39. package/test/unit/spec/meeting/index.js +116 -12
  40. package/test/unit/spec/meeting/locusMediaRequest.ts +3 -2
  41. package/test/unit/spec/meeting/request.js +1 -0
  42. package/test/unit/spec/meeting/utils.js +4 -0
  43. package/test/unit/spec/meeting-info/meetinginfov2.js +10 -11
  44. package/test/unit/spec/meeting-info/request.js +1 -1
  45. package/test/unit/spec/meetings/index.js +40 -5
  46. package/test/unit/spec/members/request.js +2 -1
  47. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  48. package/test/unit/spec/multistream/receiveSlot.ts +1 -0
  49. package/test/unit/spec/multistream/receiveSlotManager.ts +1 -0
  50. package/test/unit/spec/multistream/remoteMedia.ts +1 -0
  51. package/test/unit/spec/multistream/remoteMediaGroup.ts +1 -0
  52. package/test/unit/spec/multistream/remoteMediaManager.ts +1 -0
  53. package/test/unit/spec/multistream/sendSlotManager.ts +1 -0
  54. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +0 -1
  55. package/test/unit/spec/reachability/index.ts +211 -13
  56. package/test/unit/spec/reachability/request.js +1 -0
  57. package/test/unit/spec/roap/request.ts +1 -0
  58. package/test/unit/spec/rtcMetrics/index.ts +31 -0
  59. package/dist/networkQualityMonitor/index.js +0 -227
  60. package/dist/networkQualityMonitor/index.js.map +0 -1
  61. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  62. package/src/networkQualityMonitor/index.ts +0 -211
  63. package/test/unit/spec/networkQualityMonitor/index.js +0 -99
@@ -22,6 +22,7 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/pr
22
22
  var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
23
23
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
24
24
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
25
+ var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
25
26
  var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
26
27
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
27
28
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
@@ -31,6 +32,8 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
31
32
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
32
33
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
33
34
  var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
35
+ var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classPrivateFieldGet"));
36
+ var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classPrivateFieldSet"));
34
37
  var _uuid = _interopRequireDefault(require("uuid"));
35
38
  var _lodash = require("lodash");
36
39
  var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
@@ -42,7 +45,6 @@ var _mediaHelpers = require("@webex/media-helpers");
42
45
  var _internalPluginVoicea = require("@webex/internal-plugin-voicea");
43
46
  var _voiceaMeeting = require("./voicea-meeting");
44
47
  var _webexErrors = require("../common/errors/webex-errors");
45
- var _networkQualityMonitor = _interopRequireDefault(require("../networkQualityMonitor"));
46
48
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
47
49
  var _util = _interopRequireDefault(require("../common/events/util"));
48
50
  var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
@@ -84,13 +86,16 @@ var _controlsOptionsManager = _interopRequireDefault(require("../controls-option
84
86
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
85
87
  var _locusMediaRequest = require("./locusMediaRequest");
86
88
  var _connectionStateHandler = require("./connectionStateHandler");
89
+ var _rtcMetrics = _interopRequireDefault(require("../rtcMetrics"));
87
90
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(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; } } }; }
88
91
  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); }
89
92
  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; }
90
93
  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; }
91
94
  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, _defineProperty3.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; }
92
95
  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); }; }
93
- 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; } } // @ts-ignore - Fix this
96
+ 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; } }
97
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
98
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } // @ts-ignore - Fix this
94
99
  // @ts-ignore - Types not available for @webex/common
95
100
  // default callback so we don't call an undefined function, but in practice it should never be used
96
101
  var DEFAULT_ICE_PHASE_CALLBACK = function DEFAULT_ICE_PHASE_CALLBACK() {
@@ -119,6 +124,7 @@ var ScreenShareFloorStatus = exports.ScreenShareFloorStatus = /*#__PURE__*/funct
119
124
  ScreenShareFloorStatus["RELEASED"] = "floor_released";
120
125
  return ScreenShareFloorStatus;
121
126
  }({});
127
+ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
122
128
  /**
123
129
  * MediaDirection
124
130
  * @typedef {Object} MediaDirection
@@ -375,7 +381,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
375
381
  * @memberof Meeting
376
382
  */
377
383
  function Meeting(attrs, _options) {
378
- var _attrs$callStateForMe, _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
384
+ var _attrs$callStateForMe, _attrs$callStateForMe2, _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
379
385
  var _this;
380
386
  (0, _classCallCheck2.default)(this, Meeting);
381
387
  _this = _super.call(this, {}, _options);
@@ -401,6 +407,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
401
407
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "id", void 0);
402
408
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "isMultistream", void 0);
403
409
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "locusUrl", void 0);
410
+ _classPrivateFieldInitSpec((0, _assertThisInitialized2.default)(_this), _isoLocalClientMeetingJoinTime, {
411
+ writable: true,
412
+ value: void 0
413
+ });
404
414
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "mediaConnections", void 0);
405
415
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "mediaId", void 0);
406
416
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "meetingFiniteStateMachine", void 0);
@@ -541,6 +551,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
541
551
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "connectionStateHandler", void 0);
542
552
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidateErrors", void 0);
543
553
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidatesCount", void 0);
554
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "rtcMetrics", void 0);
544
555
  /**
545
556
  * Callback called when a relay event is received from meeting LLM Connection
546
557
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -1399,10 +1410,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1399
1410
  */
1400
1411
  _this.callStateForMetrics = attrs.callStateForMetrics || {};
1401
1412
  var _correlationId = attrs.correlationId || ((_attrs$callStateForMe = attrs.callStateForMetrics) === null || _attrs$callStateForMe === void 0 ? void 0 : _attrs$callStateForMe.correlationId);
1413
+ var sessionCorrelationId = attrs.sessionCorrelationId || ((_attrs$callStateForMe2 = attrs.callStateForMetrics) === null || _attrs$callStateForMe2 === void 0 ? void 0 : _attrs$callStateForMe2.sessionCorrelationId);
1414
+ if (sessionCorrelationId) {
1415
+ _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with session correlation id from app ".concat(_correlationId));
1416
+ _this.callStateForMetrics.sessionCorrelationId = sessionCorrelationId;
1417
+ } else {
1418
+ _loggerProxy.default.logger.log("Meetings:index#constructor --> No session correlation id supplied. None will be generated and this field will remain blank");
1419
+ // TODO: supply a session from the meetings instance
1420
+ _this.callStateForMetrics.sessionCorrelationId = '';
1421
+ }
1402
1422
  if (_correlationId) {
1403
1423
  _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with correlation id from app ".concat(_correlationId));
1404
1424
  _this.callStateForMetrics.correlationId = _correlationId;
1405
1425
  } else {
1426
+ _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with generated correlation id from sdk ".concat(_this.id));
1406
1427
  _this.callStateForMetrics.correlationId = _this.id;
1407
1428
  }
1408
1429
  /**
@@ -2156,6 +2177,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2156
2177
  * @memberof Meeting
2157
2178
  */
2158
2179
  _this.iceCandidatesCount = 0;
2180
+
2181
+ /**
2182
+ * Start time of meeting as an ISO string
2183
+ * based on browser time, so can only be used to compute durations client side
2184
+ * undefined if meeting has not been joined, set once on meeting join, and not updated again
2185
+ * @instance
2186
+ * @type {string}
2187
+ * @private
2188
+ * @memberof Meeting
2189
+ */
2190
+ (0, _classPrivateFieldSet2.default)((0, _assertThisInitialized2.default)(_this), _isoLocalClientMeetingJoinTime, undefined);
2159
2191
  return _this;
2160
2192
  }
2161
2193
 
@@ -2214,6 +2246,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2214
2246
  this.callStateForMetrics.correlationId = correlationId;
2215
2247
  }
2216
2248
 
2249
+ /**
2250
+ * Getter - Returns callStateForMetrics.sessionCorrelationId
2251
+ * @returns {string}
2252
+ */
2253
+ }, {
2254
+ key: "sessionCorrelationId",
2255
+ get: function get() {
2256
+ return this.callStateForMetrics.correlationId;
2257
+ }
2258
+
2259
+ /**
2260
+ * Setter - sets callStateForMetrics.sessionCorrelationId
2261
+ * @param {string} sessionCorrelationId
2262
+ */,
2263
+ set: function set(sessionCorrelationId) {
2264
+ this.callStateForMetrics.sessionCorrelationId = sessionCorrelationId;
2265
+ }
2266
+
2267
+ /**
2268
+ * Getter - Returns isoLocalClientMeetingJoinTime
2269
+ * This will be set once on meeting join, and not updated again
2270
+ * @returns {string | undefined}
2271
+ */
2272
+ }, {
2273
+ key: "isoLocalClientMeetingJoinTime",
2274
+ get: function get() {
2275
+ return (0, _classPrivateFieldGet2.default)(this, _isoLocalClientMeetingJoinTime);
2276
+ }
2277
+
2217
2278
  /**
2218
2279
  * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
2219
2280
  * @param {any} info
@@ -3611,6 +3672,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3611
3672
  });
3612
3673
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
3613
3674
  var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3675
+ var _this19$rtcMetrics;
3614
3676
  return _regenerator.default.wrap(function _callee9$(_context9) {
3615
3677
  while (1) switch (_context9.prev = _context9.next) {
3616
3678
  case 0:
@@ -3631,8 +3693,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3631
3693
  }
3632
3694
  });
3633
3695
  }
3696
+ (_this19$rtcMetrics = _this19.rtcMetrics) === null || _this19$rtcMetrics === void 0 ? void 0 : _this19$rtcMetrics.sendNextMetrics();
3634
3697
  _this19.updateLLMConnection();
3635
- case 3:
3698
+ case 4:
3636
3699
  case "end":
3637
3700
  return _context9.stop();
3638
3701
  }
@@ -5606,6 +5669,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5606
5669
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5607
5670
  _this32.meetingFiniteStateMachine.join();
5608
5671
  _this32.setupLocusMediaRequest();
5672
+
5673
+ // @ts-ignore
5674
+ _this32.webex.internal.device.meetingStarted();
5675
+ (0, _classPrivateFieldSet2.default)(_this32, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5609
5676
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5610
5677
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5611
5678
  correlation_id: _this32.correlationId
@@ -6069,9 +6136,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6069
6136
  return _regenerator.default.wrap(function _callee21$(_context21) {
6070
6137
  while (1) switch (_context21.prev = _context21.next) {
6071
6138
  case 0:
6072
- mc = _media.default.createMediaConnection(this.isMultistream, this.getMediaConnectionDebugId(),
6139
+ this.rtcMetrics = this.isMultistream ?
6073
6140
  // @ts-ignore
6074
- this.webex, this.id, this.correlationId, {
6141
+ new _rtcMetrics.default(this.webex, this.id, this.correlationId) : undefined;
6142
+ mc = _media.default.createMediaConnection(this.isMultistream, this.getMediaConnectionDebugId(), this.id, {
6143
+ rtcMetrics: this.rtcMetrics,
6075
6144
  mediaProperties: this.mediaProperties,
6076
6145
  remoteQualityLevel: this.mediaProperties.remoteQualityLevel,
6077
6146
  // @ts-ignore - config coming from registerPlugin
@@ -6093,36 +6162,36 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6093
6162
 
6094
6163
  // publish the streams
6095
6164
  if (!this.mediaProperties.audioStream) {
6096
- _context21.next = 8;
6165
+ _context21.next = 9;
6097
6166
  break;
6098
6167
  }
6099
6168
  this.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
6100
- _context21.next = 8;
6169
+ _context21.next = 9;
6101
6170
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
6102
- case 8:
6171
+ case 9:
6103
6172
  if (!this.mediaProperties.videoStream) {
6104
- _context21.next = 11;
6173
+ _context21.next = 12;
6105
6174
  break;
6106
6175
  }
6107
- _context21.next = 11;
6176
+ _context21.next = 12;
6108
6177
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
6109
- case 11:
6178
+ case 12:
6110
6179
  if (!this.mediaProperties.shareVideoStream) {
6111
- _context21.next = 14;
6180
+ _context21.next = 15;
6112
6181
  break;
6113
6182
  }
6114
- _context21.next = 14;
6183
+ _context21.next = 15;
6115
6184
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
6116
- case 14:
6185
+ case 15:
6117
6186
  if (!(this.isMultistream && this.mediaProperties.shareAudioStream)) {
6118
- _context21.next = 17;
6187
+ _context21.next = 18;
6119
6188
  break;
6120
6189
  }
6121
- _context21.next = 17;
6190
+ _context21.next = 18;
6122
6191
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
6123
- case 17:
6124
- return _context21.abrupt("return", mc);
6125
6192
  case 18:
6193
+ return _context21.abrupt("return", mc);
6194
+ case 19:
6126
6195
  case "end":
6127
6196
  return _context21.stop();
6128
6197
  }
@@ -6302,7 +6371,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6302
6371
  // @ts-ignore - config coming from registerPlugin
6303
6372
  if (this.config.stats.enableStatsAnalyzer) {
6304
6373
  // @ts-ignore - config coming from registerPlugin
6305
- this.networkQualityMonitor = new _networkQualityMonitor.default(this.config.stats);
6374
+ this.networkQualityMonitor = new _internalMediaCore.NetworkQualityMonitor(this.config.stats);
6306
6375
  this.statsAnalyzer = new _internalMediaCore.StatsAnalyzer({
6307
6376
  // @ts-ignore - config coming from registerPlugin
6308
6377
  config: this.config.stats,
@@ -6310,7 +6379,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6310
6379
  isMultistream: this.isMultistream
6311
6380
  });
6312
6381
  this.setupStatsAnalyzerEventHandlers();
6313
- this.networkQualityMonitor.on(_constants.EVENT_TRIGGERS.NETWORK_QUALITY, this.sendNetworkQualityEvent.bind(this));
6382
+ this.networkQualityMonitor.on(_internalMediaCore.NetworkQualityEventNames.NETWORK_QUALITY, this.sendNetworkQualityEvent.bind(this));
6314
6383
  }
6315
6384
  }
6316
6385
 
@@ -6319,6 +6388,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6319
6388
  *
6320
6389
  * @private
6321
6390
  * @static
6391
+ * @param {boolean} isAudioEnabled
6392
+ * @param {boolean} isVideoEnabled
6322
6393
  * @returns {Promise<void>}
6323
6394
  */
6324
6395
  }, {
@@ -6830,6 +6901,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6830
6901
  selectedCandidatePairChanges,
6831
6902
  numTransports,
6832
6903
  reachabilityStats,
6904
+ iceCandidateErrors,
6833
6905
  _this$mediaProperties13,
6834
6906
  _this$mediaProperties14,
6835
6907
  _this$mediaProperties15,
@@ -6855,7 +6927,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6855
6927
  _yield$this$mediaProp2,
6856
6928
  _selectedCandidatePairChanges,
6857
6929
  _numTransports,
6858
- iceCandidateErrors,
6930
+ _iceCandidateErrors,
6859
6931
  _args32 = arguments;
6860
6932
  return _regenerator.default.wrap(function _callee32$(_context32) {
6861
6933
  while (1) switch (_context32.prev = _context32.next) {
@@ -6941,7 +7013,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6941
7013
  break;
6942
7014
  }
6943
7015
  _context32.next = 28;
6944
- return Meeting.handleDeviceLogging();
7016
+ return Meeting.handleDeviceLogging(audioEnabled, videoEnabled);
6945
7017
  case 28:
6946
7018
  _context32.next = 31;
6947
7019
  break;
@@ -6966,7 +7038,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6966
7038
  return this.webex.meetings.reachability.getReachabilityMetrics();
6967
7039
  case 42:
6968
7040
  reachabilityStats = _context32.sent;
6969
- _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread({
7041
+ iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7042
+ _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
6970
7043
  correlation_id: this.correlationId,
6971
7044
  locus_id: this.locusUrl.split('/').pop(),
6972
7045
  connectionType: connectionType,
@@ -6975,7 +7048,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6975
7048
  isMultistream: this.isMultistream,
6976
7049
  retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,
6977
7050
  isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry
6978
- }, reachabilityStats), {}, {
7051
+ }, reachabilityStats), iceCandidateErrors), {}, {
6979
7052
  iceCandidatesCount: this.iceCandidatesCount
6980
7053
  }));
6981
7054
  // @ts-ignore
@@ -6989,25 +7062,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6989
7062
 
6990
7063
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
6991
7064
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
6992
- _context32.next = 67;
7065
+ _context32.next = 68;
6993
7066
  break;
6994
- case 49:
6995
- _context32.prev = 49;
7067
+ case 50:
7068
+ _context32.prev = 50;
6996
7069
  _context32.t0 = _context32["catch"](18);
6997
7070
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context32.t0);
6998
7071
 
6999
7072
  // @ts-ignore
7000
- _context32.next = 54;
7073
+ _context32.next = 55;
7001
7074
  return this.webex.meetings.reachability.getReachabilityMetrics();
7002
- case 54:
7075
+ case 55:
7003
7076
  reachabilityMetrics = _context32.sent;
7004
- _context32.next = 57;
7077
+ _context32.next = 58;
7005
7078
  return this.mediaProperties.getCurrentConnectionInfo();
7006
- case 57:
7079
+ case 58:
7007
7080
  _yield$this$mediaProp2 = _context32.sent;
7008
7081
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7009
7082
  _numTransports = _yield$this$mediaProp2.numTransports;
7010
- iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7083
+ _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7011
7084
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
7012
7085
  correlation_id: this.correlationId,
7013
7086
  locus_id: this.locusUrl.split('/').pop(),
@@ -7024,12 +7097,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7024
7097
  signalingState: ((_this$mediaProperties13 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties13 === void 0 ? void 0 : (_this$mediaProperties14 = _this$mediaProperties13.multistreamConnection) === null || _this$mediaProperties14 === void 0 ? void 0 : (_this$mediaProperties15 = _this$mediaProperties14.pc) === null || _this$mediaProperties15 === void 0 ? void 0 : (_this$mediaProperties16 = _this$mediaProperties15.pc) === null || _this$mediaProperties16 === void 0 ? void 0 : _this$mediaProperties16.signalingState) || ((_this$mediaProperties17 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties17 === void 0 ? void 0 : (_this$mediaProperties18 = _this$mediaProperties17.mediaConnection) === null || _this$mediaProperties18 === void 0 ? void 0 : (_this$mediaProperties19 = _this$mediaProperties18.pc) === null || _this$mediaProperties19 === void 0 ? void 0 : _this$mediaProperties19.signalingState) || 'unknown',
7025
7098
  connectionState: ((_this$mediaProperties20 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties20 === void 0 ? void 0 : (_this$mediaProperties21 = _this$mediaProperties20.multistreamConnection) === null || _this$mediaProperties21 === void 0 ? void 0 : (_this$mediaProperties22 = _this$mediaProperties21.pc) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.pc) === null || _this$mediaProperties23 === void 0 ? void 0 : _this$mediaProperties23.connectionState) || ((_this$mediaProperties24 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties24 === void 0 ? void 0 : (_this$mediaProperties25 = _this$mediaProperties24.mediaConnection) === null || _this$mediaProperties25 === void 0 ? void 0 : (_this$mediaProperties26 = _this$mediaProperties25.pc) === null || _this$mediaProperties26 === void 0 ? void 0 : _this$mediaProperties26.connectionState) || 'unknown',
7026
7099
  iceConnectionState: ((_this$mediaProperties27 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties27 === void 0 ? void 0 : (_this$mediaProperties28 = _this$mediaProperties27.multistreamConnection) === null || _this$mediaProperties28 === void 0 ? void 0 : (_this$mediaProperties29 = _this$mediaProperties28.pc) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.pc) === null || _this$mediaProperties30 === void 0 ? void 0 : _this$mediaProperties30.iceConnectionState) || ((_this$mediaProperties31 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties31 === void 0 ? void 0 : (_this$mediaProperties32 = _this$mediaProperties31.mediaConnection) === null || _this$mediaProperties32 === void 0 ? void 0 : (_this$mediaProperties33 = _this$mediaProperties32.pc) === null || _this$mediaProperties33 === void 0 ? void 0 : _this$mediaProperties33.iceConnectionState) || 'unknown'
7027
- }, reachabilityMetrics), iceCandidateErrors), {}, {
7100
+ }, reachabilityMetrics), _iceCandidateErrors), {}, {
7028
7101
  iceCandidatesCount: this.iceCandidatesCount
7029
7102
  }));
7030
- _context32.next = 64;
7103
+ _context32.next = 65;
7031
7104
  return this.cleanUpOnAddMediaFailure();
7032
- case 64:
7105
+ case 65:
7033
7106
  // Upload logs on error while adding media
7034
7107
  _triggerProxy.default.trigger(this, {
7035
7108
  file: 'meeting/index',
@@ -7041,15 +7114,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7041
7114
  });
7042
7115
  }
7043
7116
  throw _context32.t0;
7044
- case 67:
7045
- _context32.prev = 67;
7117
+ case 68:
7118
+ _context32.prev = 68;
7046
7119
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7047
- return _context32.finish(67);
7048
- case 70:
7120
+ return _context32.finish(68);
7121
+ case 71:
7049
7122
  case "end":
7050
7123
  return _context32.stop();
7051
7124
  }
7052
- }, _callee32, this, [[18, 49, 67, 70]]);
7125
+ }, _callee32, this, [[18, 50, 68, 71]]);
7053
7126
  }));
7054
7127
  function addMediaInternal(_x32, _x33, _x34) {
7055
7128
  return _addMediaInternal.apply(this, arguments);
@@ -8543,29 +8616,57 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8543
8616
  }], [{
8544
8617
  key: "handleDeviceLogging",
8545
8618
  value: (function () {
8546
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39() {
8619
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(isAudioEnabled, isVideoEnabled) {
8547
8620
  var devices;
8548
8621
  return _regenerator.default.wrap(function _callee39$(_context39) {
8549
8622
  while (1) switch (_context39.prev = _context39.next) {
8550
8623
  case 0:
8551
8624
  _context39.prev = 0;
8552
- _context39.next = 3;
8625
+ devices = [];
8626
+ if (!(isVideoEnabled && isAudioEnabled)) {
8627
+ _context39.next = 8;
8628
+ break;
8629
+ }
8630
+ _context39.next = 5;
8553
8631
  return (0, _mediaHelpers.getDevices)();
8554
- case 3:
8632
+ case 5:
8555
8633
  devices = _context39.sent;
8634
+ _context39.next = 18;
8635
+ break;
8636
+ case 8:
8637
+ if (!isVideoEnabled) {
8638
+ _context39.next = 14;
8639
+ break;
8640
+ }
8641
+ _context39.next = 11;
8642
+ return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.VIDEO_INPUT);
8643
+ case 11:
8644
+ devices = _context39.sent;
8645
+ _context39.next = 18;
8646
+ break;
8647
+ case 14:
8648
+ if (!isAudioEnabled) {
8649
+ _context39.next = 18;
8650
+ break;
8651
+ }
8652
+ _context39.next = 17;
8653
+ return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.AUDIO_INPUT);
8654
+ case 17:
8655
+ devices = _context39.sent;
8656
+ case 18:
8556
8657
  _util2.default.handleDeviceLogging(devices);
8557
- _context39.next = 9;
8658
+ _context39.next = 23;
8558
8659
  break;
8559
- case 7:
8560
- _context39.prev = 7;
8660
+ case 21:
8661
+ _context39.prev = 21;
8561
8662
  _context39.t0 = _context39["catch"](0);
8562
- case 9:
8663
+ case 23:
8563
8664
  case "end":
8564
8665
  return _context39.stop();
8565
8666
  }
8566
- }, _callee39, null, [[0, 7]]);
8667
+ }, _callee39, null, [[0, 21]]);
8567
8668
  }));
8568
- function handleDeviceLogging() {
8669
+ function handleDeviceLogging(_x43, _x44) {
8569
8670
  return _handleDeviceLogging.apply(this, arguments);
8570
8671
  }
8571
8672
  return handleDeviceLogging;