@webex/plugin-meetings 3.9.0-next.2 → 3.9.0-next.20

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 (85) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +2 -0
  4. package/dist/constants.js.map +1 -1
  5. package/dist/interpretation/index.js +1 -1
  6. package/dist/interpretation/siLanguage.js +1 -1
  7. package/dist/locus-info/index.js +38 -10
  8. package/dist/locus-info/index.js.map +1 -1
  9. package/dist/locus-info/parser.js +4 -1
  10. package/dist/locus-info/parser.js.map +1 -1
  11. package/dist/media/properties.js +53 -5
  12. package/dist/media/properties.js.map +1 -1
  13. package/dist/meeting/in-meeting-actions.js +2 -0
  14. package/dist/meeting/in-meeting-actions.js.map +1 -1
  15. package/dist/meeting/index.js +189 -122
  16. package/dist/meeting/index.js.map +1 -1
  17. package/dist/meeting/muteState.js +2 -5
  18. package/dist/meeting/muteState.js.map +1 -1
  19. package/dist/meeting/request.js +25 -0
  20. package/dist/meeting/request.js.map +1 -1
  21. package/dist/meeting/util.js +30 -11
  22. package/dist/meeting/util.js.map +1 -1
  23. package/dist/meeting-info/meeting-info-v2.js +29 -21
  24. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  25. package/dist/meetings/index.js +31 -25
  26. package/dist/meetings/index.js.map +1 -1
  27. package/dist/member/types.js.map +1 -1
  28. package/dist/members/collection.js +13 -0
  29. package/dist/members/collection.js.map +1 -1
  30. package/dist/members/index.js +42 -20
  31. package/dist/members/index.js.map +1 -1
  32. package/dist/members/util.js +7 -2
  33. package/dist/members/util.js.map +1 -1
  34. package/dist/metrics/constants.js +2 -1
  35. package/dist/metrics/constants.js.map +1 -1
  36. package/dist/reachability/index.js +3 -3
  37. package/dist/reachability/index.js.map +1 -1
  38. package/dist/types/constants.d.ts +2 -0
  39. package/dist/types/locus-info/index.d.ts +54 -1
  40. package/dist/types/media/properties.d.ts +21 -0
  41. package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
  42. package/dist/types/meeting/index.d.ts +11 -1
  43. package/dist/types/meeting/request.d.ts +9 -0
  44. package/dist/types/meeting/util.d.ts +10 -3
  45. package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
  46. package/dist/types/meetings/index.d.ts +3 -1
  47. package/dist/types/member/types.d.ts +1 -0
  48. package/dist/types/members/collection.d.ts +6 -0
  49. package/dist/types/members/index.d.ts +12 -2
  50. package/dist/types/members/util.d.ts +6 -3
  51. package/dist/types/metrics/constants.d.ts +1 -0
  52. package/dist/webinar/index.js +1 -1
  53. package/package.json +16 -16
  54. package/src/constants.ts +2 -0
  55. package/src/locus-info/index.ts +84 -9
  56. package/src/locus-info/parser.ts +5 -1
  57. package/src/media/properties.ts +43 -0
  58. package/src/meeting/in-meeting-actions.ts +4 -0
  59. package/src/meeting/index.ts +91 -4
  60. package/src/meeting/muteState.ts +2 -6
  61. package/src/meeting/request.ts +23 -0
  62. package/src/meeting/util.ts +41 -20
  63. package/src/meeting-info/meeting-info-v2.ts +24 -5
  64. package/src/meetings/index.ts +9 -3
  65. package/src/member/types.ts +1 -0
  66. package/src/members/collection.ts +11 -0
  67. package/src/members/index.ts +38 -5
  68. package/src/members/util.ts +18 -2
  69. package/src/metrics/constants.ts +1 -0
  70. package/src/reachability/index.ts +3 -3
  71. package/test/unit/spec/locus-info/index.js +30 -15
  72. package/test/unit/spec/locus-info/parser.js +3 -2
  73. package/test/unit/spec/media/properties.ts +137 -0
  74. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
  75. package/test/unit/spec/meeting/index.js +255 -27
  76. package/test/unit/spec/meeting/muteState.js +32 -6
  77. package/test/unit/spec/meeting/request.js +21 -0
  78. package/test/unit/spec/meeting/utils.js +45 -16
  79. package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
  80. package/test/unit/spec/meetings/index.js +10 -1
  81. package/test/unit/spec/members/collection.js +120 -0
  82. package/test/unit/spec/members/index.js +72 -3
  83. package/test/unit/spec/members/request.js +55 -0
  84. package/test/unit/spec/members/utils.js +116 -14
  85. package/test/unit/spec/reachability/index.ts +158 -3
@@ -476,6 +476,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
476
476
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "shareStatus", void 0);
477
477
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "screenShareFloorState", void 0);
478
478
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "statsAnalyzer", void 0);
479
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "statsMonitor", void 0);
479
480
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "transcription", void 0);
480
481
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "updateMediaConnections", void 0);
481
482
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "userDisplayHints", void 0);
@@ -948,6 +949,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
948
949
  // @ts-ignore
949
950
  _this.webex.internal.newMetrics.submitClientEvent({
950
951
  name: 'client.ice.start',
952
+ payload: {
953
+ // @ts-ignore
954
+ labels: _util2.default.getCaEventLabelsForIpVersion(_this.webex)
955
+ },
951
956
  options: {
952
957
  meetingId: _this.id
953
958
  }
@@ -1072,10 +1077,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1072
1077
  }
1073
1078
  }
1074
1079
 
1075
- // Count members that are in the meeting.
1080
+ // Count members that are in the meeting or in the lobby.
1076
1081
  var members = _this.getMembers().membersCollection.members;
1077
1082
  event.data.intervalMetadata.meetingUserCount = (0, _values.default)(members).filter(function (member) {
1078
- return member.isInMeeting;
1083
+ return member.isInMeeting || member.isInLobby;
1079
1084
  }).length;
1080
1085
 
1081
1086
  // @ts-ignore
@@ -1966,6 +1971,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1966
1971
  * @memberof Meeting
1967
1972
  */
1968
1973
  _this.networkQualityMonitor = null;
1974
+ /**
1975
+ * @instance
1976
+ * @type {StatsMonitor}
1977
+ * @private
1978
+ * @memberof Meeting
1979
+ */
1980
+ _this.statsMonitor = null;
1969
1981
  /**
1970
1982
  * Indicates network status of the webrtc media connection
1971
1983
  * @instance
@@ -2601,11 +2613,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2601
2613
  key: "fetchMeetingInfoInternal",
2602
2614
  value: (function () {
2603
2615
  var _fetchMeetingInfoInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(_ref8) {
2604
- var destination, destinationType, _ref8$password, password, _ref8$captchaCode, captchaCode, _ref8$extraParams, extraParams, _ref8$sendCAevents, sendCAevents, _ref8$registrationId, registrationId, captchaInfo, info, _err$body, _err$body2;
2616
+ var destination, destinationType, _ref8$password, password, _ref8$captchaCode, captchaCode, _ref8$extraParams, extraParams, _ref8$sendCAevents, sendCAevents, _ref8$registrationId, registrationId, _ref8$classificationI, classificationId, captchaInfo, info, _err$body, _err$body2;
2605
2617
  return _regenerator.default.wrap(function _callee5$(_context5) {
2606
2618
  while (1) switch (_context5.prev = _context5.next) {
2607
2619
  case 0:
2608
- destination = _ref8.destination, destinationType = _ref8.destinationType, _ref8$password = _ref8.password, password = _ref8$password === void 0 ? null : _ref8$password, _ref8$captchaCode = _ref8.captchaCode, captchaCode = _ref8$captchaCode === void 0 ? null : _ref8$captchaCode, _ref8$extraParams = _ref8.extraParams, extraParams = _ref8$extraParams === void 0 ? {} : _ref8$extraParams, _ref8$sendCAevents = _ref8.sendCAevents, sendCAevents = _ref8$sendCAevents === void 0 ? false : _ref8$sendCAevents, _ref8$registrationId = _ref8.registrationId, registrationId = _ref8$registrationId === void 0 ? null : _ref8$registrationId;
2620
+ destination = _ref8.destination, destinationType = _ref8.destinationType, _ref8$password = _ref8.password, password = _ref8$password === void 0 ? null : _ref8$password, _ref8$captchaCode = _ref8.captchaCode, captchaCode = _ref8$captchaCode === void 0 ? null : _ref8$captchaCode, _ref8$extraParams = _ref8.extraParams, extraParams = _ref8$extraParams === void 0 ? {} : _ref8$extraParams, _ref8$sendCAevents = _ref8.sendCAevents, sendCAevents = _ref8$sendCAevents === void 0 ? false : _ref8$sendCAevents, _ref8$registrationId = _ref8.registrationId, registrationId = _ref8$registrationId === void 0 ? null : _ref8$registrationId, _ref8$classificationI = _ref8.classificationId, classificationId = _ref8$classificationI === void 0 ? null : _ref8$classificationI;
2609
2621
  _context5.prev = 1;
2610
2622
  captchaInfo = captchaCode ? {
2611
2623
  code: captchaCode,
@@ -2617,7 +2629,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2617
2629
  this.config.installedOrgID, this.locusId, extraParams, {
2618
2630
  meetingId: this.id,
2619
2631
  sendCAevents: sendCAevents
2620
- }, registrationId);
2632
+ }, registrationId, null, classificationId);
2621
2633
  case 5:
2622
2634
  info = _context5.sent;
2623
2635
  this.parseMeetingInfo(info === null || info === void 0 ? void 0 : info.body, this.destination, info === null || info === void 0 ? void 0 : info.errors);
@@ -3752,14 +3764,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3752
3764
  break;
3753
3765
  case 28:
3754
3766
  sendStartedSharingRemote = function sendStartedSharingRemote() {
3767
+ var _this15$locusInfo2, _this15$locusInfo2$in, _this15$webinar2;
3755
3768
  _this15.remoteShareInstanceId = contentShare.shareInstanceId;
3756
3769
  _this15.shareCAEventSentStatus.receiveStart = false;
3757
3770
  _this15.shareCAEventSentStatus.receiveStop = false;
3771
+ var finalBeneficiaryId = contentShare.beneficiaryId;
3772
+ // In case of attendee in webinar, the whiteboard is shared by other participants
3773
+ if ((_this15$locusInfo2 = _this15.locusInfo) !== null && _this15$locusInfo2 !== void 0 && (_this15$locusInfo2$in = _this15$locusInfo2.info) !== null && _this15$locusInfo2$in !== void 0 && _this15$locusInfo2$in.isWebinar && (_this15$webinar2 = _this15.webinar) !== null && _this15$webinar2 !== void 0 && _this15$webinar2.selfIsAttendee) {
3774
+ if (!finalBeneficiaryId && whiteboardShare.beneficiaryId) {
3775
+ finalBeneficiaryId = whiteboardShare.beneficiaryId;
3776
+ }
3777
+ }
3758
3778
  _triggerProxy.default.trigger(_this15, {
3759
3779
  file: 'meetings/index',
3760
3780
  function: 'remoteShare'
3761
3781
  }, _constants.EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE, {
3762
- memberId: contentShare.beneficiaryId,
3782
+ memberId: finalBeneficiaryId,
3763
3783
  url: contentShare.url,
3764
3784
  shareInstanceId: _this15.remoteShareInstanceId,
3765
3785
  annotationInfo: contentShare.annotation,
@@ -4699,6 +4719,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4699
4719
  isLocalRecordingPaused: _util2.default.isLocalRecordingPaused(this.userDisplayHints),
4700
4720
  isManualCaptionActive: _util2.default.isManualCaptionActive(this.userDisplayHints),
4701
4721
  isSaveTranscriptsEnabled: _util2.default.isSaveTranscriptsEnabled(this.userDisplayHints),
4722
+ isSpokenLanguageAutoDetectionEnabled: _util2.default.isSpokenLanguageAutoDetectionEnabled(this.userDisplayHints),
4702
4723
  isWebexAssistantActive: _util2.default.isWebexAssistantActive(this.userDisplayHints),
4703
4724
  canViewCaptionPanel: _util2.default.canViewCaptionPanel(this.userDisplayHints),
4704
4725
  isRealTimeTranslationEnabled: _util2.default.isRealTimeTranslationEnabled(this.userDisplayHints),
@@ -7079,14 +7100,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7079
7100
  }, {
7080
7101
  key: "createStatsAnalyzer",
7081
7102
  value: function createStatsAnalyzer() {
7103
+ var _this44 = this;
7082
7104
  // @ts-ignore - config coming from registerPlugin
7083
7105
  if (this.config.stats.enableStatsAnalyzer) {
7084
7106
  // @ts-ignore - config coming from registerPlugin
7085
7107
  this.networkQualityMonitor = new _internalMediaCore.NetworkQualityMonitor(this.config.stats);
7108
+ this.statsMonitor = new _internalMediaCore.StatsMonitor();
7086
7109
  this.statsAnalyzer = new _internalMediaCore.StatsAnalyzer({
7087
7110
  // @ts-ignore - config coming from registerPlugin
7088
7111
  config: this.config.stats,
7089
7112
  networkQualityMonitor: this.networkQualityMonitor,
7113
+ statsMonitor: this.statsMonitor,
7090
7114
  isMultistream: this.isMultistream
7091
7115
  });
7092
7116
  this.shareCAEventSentStatus = {
@@ -7097,6 +7121,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7097
7121
  };
7098
7122
  this.setupStatsAnalyzerEventHandlers();
7099
7123
  this.networkQualityMonitor.on(_internalMediaCore.NetworkQualityEventNames.NETWORK_QUALITY, this.sendNetworkQualityEvent.bind(this));
7124
+ this.statsMonitor.on(_internalMediaCore.StatsMonitorEventNames.INBOUND_AUDIO_ISSUE, function (data) {
7125
+ // Before forwarding any inbound audio issues to the app, make sure that we have at least one other
7126
+ // participant in the meeting with unmuted audio.
7127
+ // We don't check this.mediaProperties.mediaDirection here, because that's already handled in statsAnalyzer,
7128
+ // so we won't get this event if we are not setup to receive any audio
7129
+ var atLeastOneUnmutedOtherMember = (0, _values.default)(_this44.members.membersCollection.getAll()).find(function (member) {
7130
+ return !member.isSelf && !member.isPairedWithSelf && !member.isAudioMuted;
7131
+ });
7132
+ if (atLeastOneUnmutedOtherMember) {
7133
+ _this44.mediaProperties.sendMediaIssueMetric('inbound_audio', data.issueSubType, _this44.correlationId);
7134
+ _triggerProxy.default.trigger(_this44, {
7135
+ file: 'meeting/index',
7136
+ function: 'createStatsAnalyzer'
7137
+ }, _constants.EVENT_TRIGGERS.MEDIA_INBOUND_AUDIO_ISSUE_DETECTED, data);
7138
+ }
7139
+ });
7100
7140
  }
7101
7141
  }
7102
7142
 
@@ -7111,7 +7151,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7111
7151
  key: "waitForRemoteSDPAnswer",
7112
7152
  value: (function () {
7113
7153
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25() {
7114
- var _this44 = this;
7154
+ var _this45 = this;
7115
7155
  var LOG_HEADER, deferSDPAnswer;
7116
7156
  return _regenerator.default.wrap(function _callee25$(_context25) {
7117
7157
  while (1) switch (_context25.prev = _context25.next) {
@@ -7130,18 +7170,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7130
7170
  var error = new Error('Timed out waiting for REMOTE SDP ANSWER');
7131
7171
 
7132
7172
  // @ts-ignore
7133
- _this44.webex.internal.newMetrics.submitClientEvent({
7173
+ _this45.webex.internal.newMetrics.submitClientEvent({
7134
7174
  name: 'client.media-engine.remote-sdp-received',
7135
7175
  payload: {
7136
7176
  canProceed: false,
7137
7177
  errors: [
7138
7178
  // @ts-ignore
7139
- _this44.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
7179
+ _this45.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
7140
7180
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
7141
7181
  })]
7142
7182
  },
7143
7183
  options: {
7144
- meetingId: _this44.id,
7184
+ meetingId: _this45.id,
7145
7185
  rawError: error
7146
7186
  }
7147
7187
  });
@@ -7450,6 +7490,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7450
7490
  key: "cleanUpOnAddMediaFailure",
7451
7491
  value: (function () {
7452
7492
  var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31() {
7493
+ var _this$networkQualityM, _this$statsMonitor;
7453
7494
  return _regenerator.default.wrap(function _callee31$(_context31) {
7454
7495
  while (1) switch (_context31.prev = _context31.next) {
7455
7496
  case 0:
@@ -7461,19 +7502,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7461
7502
  return this.statsAnalyzer.stopAnalyzer();
7462
7503
  case 3:
7463
7504
  this.statsAnalyzer = null;
7505
+ (_this$networkQualityM = this.networkQualityMonitor) === null || _this$networkQualityM === void 0 ? void 0 : _this$networkQualityM.removeAllListeners();
7506
+ this.networkQualityMonitor = null;
7507
+ (_this$statsMonitor = this.statsMonitor) === null || _this$statsMonitor === void 0 ? void 0 : _this$statsMonitor.removeAllListeners();
7508
+ this.statsMonitor = null;
7464
7509
 
7465
7510
  // when media fails, we want to upload a webrtc dump to see whats going on
7466
7511
  // this function is async, but returns once the stats have been gathered
7467
- _context31.next = 6;
7512
+ _context31.next = 10;
7468
7513
  return this.forceSendStatsReport({
7469
7514
  callFrom: 'addMedia'
7470
7515
  });
7471
- case 6:
7516
+ case 10:
7472
7517
  if (this.mediaProperties.webrtcMediaConnection) {
7473
7518
  this.closePeerConnections();
7474
7519
  this.unsetPeerConnections();
7475
7520
  }
7476
- case 7:
7521
+ case 11:
7477
7522
  case "end":
7478
7523
  return _context31.stop();
7479
7524
  }
@@ -7496,7 +7541,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7496
7541
  key: "downgradeFromMultistreamToTranscoded",
7497
7542
  value: (function () {
7498
7543
  var _downgradeFromMultistreamToTranscoded = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
7499
- var _this$locusMediaReque2;
7544
+ var _this$networkQualityM2, _this$statsMonitor2, _this$locusMediaReque2;
7500
7545
  return _regenerator.default.wrap(function _callee32$(_context32) {
7501
7546
  while (1) switch (_context32.prev = _context32.next) {
7502
7547
  case 0:
@@ -7508,6 +7553,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7508
7553
  return this.statsAnalyzer.stopAnalyzer();
7509
7554
  case 3:
7510
7555
  this.statsAnalyzer = null;
7556
+ (_this$networkQualityM2 = this.networkQualityMonitor) === null || _this$networkQualityM2 === void 0 ? void 0 : _this$networkQualityM2.removeAllListeners();
7557
+ this.networkQualityMonitor = null;
7558
+ (_this$statsMonitor2 = this.statsMonitor) === null || _this$statsMonitor2 === void 0 ? void 0 : _this$statsMonitor2.removeAllListeners();
7559
+ this.statsMonitor = null;
7511
7560
  this.isMultistream = false;
7512
7561
  if (this.mediaProperties.webrtcMediaConnection) {
7513
7562
  // close peer connection, but don't reset mute state information, because we will want to use it on the retry
@@ -7516,7 +7565,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7516
7565
  }
7517
7566
  (_this$locusMediaReque2 = this.locusMediaRequest) === null || _this$locusMediaReque2 === void 0 ? void 0 : _this$locusMediaReque2.downgradeFromMultistreamToTranscoded();
7518
7567
  this.createStatsAnalyzer();
7519
- case 8:
7568
+ case 12:
7520
7569
  case "end":
7521
7570
  return _context32.stop();
7522
7571
  }
@@ -7648,10 +7697,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7648
7697
  }, {
7649
7698
  key: "addMedia",
7650
7699
  value: function addMedia() {
7651
- var _this45 = this;
7700
+ var _this46 = this;
7652
7701
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7653
7702
  return this.addMediaInternal(function () {
7654
- return _this45.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7703
+ return _this46.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7655
7704
  }, undefined, false, options);
7656
7705
  }
7657
7706
 
@@ -7694,6 +7743,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7694
7743
  receiveVideo,
7695
7744
  sendAudio,
7696
7745
  receiveAudio,
7746
+ ipver,
7697
7747
  _this$remoteMediaMana,
7698
7748
  _yield$this$mediaProp,
7699
7749
  connectionType,
@@ -7758,14 +7808,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7758
7808
  receiveAudio = audioEnabled && (rawReceiveAudio !== null && rawReceiveAudio !== void 0 ? rawReceiveAudio : true);
7759
7809
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
7760
7810
 
7811
+ // @ts-ignore
7812
+ ipver = _util2.default.getIpVersion(this.webex); // used just for metrics
7761
7813
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
7762
7814
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
7763
7815
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
7764
- _context35.next = 19;
7816
+ _context35.next = 20;
7765
7817
  break;
7766
7818
  }
7767
7819
  throw new _webexErrors.UserInLobbyError();
7768
- case 19:
7820
+ case 20:
7769
7821
  // @ts-ignore
7770
7822
  this.webex.internal.newMetrics.submitClientEvent({
7771
7823
  name: 'client.media.capabilities',
@@ -7805,63 +7857,64 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7805
7857
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7806
7858
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7807
7859
  this.brbState = (0, _brbState.createBrbState)(this, false);
7808
- _context35.prev = 24;
7809
- _context35.next = 27;
7860
+ _context35.prev = 25;
7861
+ _context35.next = 28;
7810
7862
  return this.setUpLocalStreamReferences(localStreams);
7811
- case 27:
7863
+ case 28:
7812
7864
  this.setMercuryListener();
7813
7865
  this.createStatsAnalyzer();
7814
- _context35.prev = 29;
7815
- _context35.next = 32;
7866
+ _context35.prev = 30;
7867
+ _context35.next = 33;
7816
7868
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7817
- case 32:
7818
- _context35.next = 45;
7869
+ case 33:
7870
+ _context35.next = 46;
7819
7871
  break;
7820
- case 34:
7821
- _context35.prev = 34;
7822
- _context35.t0 = _context35["catch"](29);
7872
+ case 35:
7873
+ _context35.prev = 35;
7874
+ _context35.t0 = _context35["catch"](30);
7823
7875
  if (!(_context35.t0 instanceof _multistreamNotSupportedError.default)) {
7824
- _context35.next = 44;
7876
+ _context35.next = 45;
7825
7877
  break;
7826
7878
  }
7827
7879
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " we asked for multistream backend (Homer), but got transcoded backend, recreating media connection..."));
7828
- _context35.next = 40;
7880
+ _context35.next = 41;
7829
7881
  return this.downgradeFromMultistreamToTranscoded();
7830
- case 40:
7831
- _context35.next = 42;
7882
+ case 41:
7883
+ _context35.next = 43;
7832
7884
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true, undefined);
7833
- case 42:
7834
- _context35.next = 45;
7885
+ case 43:
7886
+ _context35.next = 46;
7835
7887
  break;
7836
- case 44:
7837
- throw _context35.t0;
7838
7888
  case 45:
7889
+ throw _context35.t0;
7890
+ case 46:
7839
7891
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connected, finalizing..."));
7840
7892
  if (!this.mediaProperties.hasLocalShareStream()) {
7841
- _context35.next = 49;
7893
+ _context35.next = 50;
7842
7894
  break;
7843
7895
  }
7844
- _context35.next = 49;
7896
+ _context35.next = 50;
7845
7897
  return this.enqueueScreenShareFloorRequest();
7846
- case 49:
7847
- _context35.next = 51;
7898
+ case 50:
7899
+ _context35.next = 52;
7848
7900
  return this.mediaProperties.getCurrentConnectionInfo();
7849
- case 51:
7901
+ case 52:
7850
7902
  _yield$this$mediaProp = _context35.sent;
7851
7903
  connectionType = _yield$this$mediaProp.connectionType;
7852
7904
  ipVersion = _yield$this$mediaProp.ipVersion;
7853
7905
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7854
7906
  numTransports = _yield$this$mediaProp.numTransports;
7855
7907
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7856
- _context35.next = 59;
7908
+ _context35.next = 60;
7857
7909
  return this.getMediaReachabilityMetricFields();
7858
- case 59:
7910
+ case 60:
7859
7911
  reachabilityMetrics = _context35.sent;
7860
7912
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7861
7913
  correlation_id: this.correlationId,
7862
7914
  locus_id: this.locusUrl.split('/').pop(),
7863
7915
  connectionType: connectionType,
7864
7916
  ipVersion: ipVersion,
7917
+ ipver: ipver,
7865
7918
  selectedCandidatePairChanges: selectedCandidatePairChanges,
7866
7919
  numTransports: numTransports,
7867
7920
  isMultistream: this.isMultistream,
@@ -7885,21 +7938,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7885
7938
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7886
7939
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7887
7940
  this.startPeriodicLogUpload();
7888
- _context35.next = 85;
7941
+ _context35.next = 86;
7889
7942
  break;
7890
- case 67:
7891
- _context35.prev = 67;
7892
- _context35.t1 = _context35["catch"](24);
7943
+ case 68:
7944
+ _context35.prev = 68;
7945
+ _context35.t1 = _context35["catch"](25);
7893
7946
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context35.t1);
7894
7947
 
7895
7948
  // @ts-ignore
7896
- _context35.next = 72;
7949
+ _context35.next = 73;
7897
7950
  return this.getMediaReachabilityMetricFields();
7898
- case 72:
7951
+ case 73:
7899
7952
  _reachabilityMetrics = _context35.sent;
7900
- _context35.next = 75;
7953
+ _context35.next = 76;
7901
7954
  return this.mediaProperties.getCurrentConnectionInfo();
7902
- case 75:
7955
+ case 76:
7903
7956
  _yield$this$mediaProp2 = _context35.sent;
7904
7957
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7905
7958
  _numTransports = _yield$this$mediaProp2.numTransports;
@@ -7921,11 +7974,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7921
7974
  connectionState: ((_this$mediaProperties22 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.multistreamConnection) === null || _this$mediaProperties23 === void 0 ? void 0 : (_this$mediaProperties24 = _this$mediaProperties23.pc) === null || _this$mediaProperties24 === void 0 ? void 0 : (_this$mediaProperties25 = _this$mediaProperties24.pc) === null || _this$mediaProperties25 === void 0 ? void 0 : _this$mediaProperties25.connectionState) || ((_this$mediaProperties26 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties26 === void 0 ? void 0 : (_this$mediaProperties27 = _this$mediaProperties26.mediaConnection) === null || _this$mediaProperties27 === void 0 ? void 0 : (_this$mediaProperties28 = _this$mediaProperties27.pc) === null || _this$mediaProperties28 === void 0 ? void 0 : _this$mediaProperties28.connectionState) || 'unknown',
7922
7975
  iceConnectionState: ((_this$mediaProperties29 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.multistreamConnection) === null || _this$mediaProperties30 === void 0 ? void 0 : (_this$mediaProperties31 = _this$mediaProperties30.pc) === null || _this$mediaProperties31 === void 0 ? void 0 : (_this$mediaProperties32 = _this$mediaProperties31.pc) === null || _this$mediaProperties32 === void 0 ? void 0 : _this$mediaProperties32.iceConnectionState) || ((_this$mediaProperties33 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties33 === void 0 ? void 0 : (_this$mediaProperties34 = _this$mediaProperties33.mediaConnection) === null || _this$mediaProperties34 === void 0 ? void 0 : (_this$mediaProperties35 = _this$mediaProperties34.pc) === null || _this$mediaProperties35 === void 0 ? void 0 : _this$mediaProperties35.iceConnectionState) || 'unknown'
7923
7976
  }, _reachabilityMetrics), _iceCandidateErrors), {}, {
7924
- iceCandidatesCount: this.iceCandidatesCount
7977
+ iceCandidatesCount: this.iceCandidatesCount,
7978
+ ipver: ipver
7925
7979
  }));
7926
- _context35.next = 82;
7980
+ _context35.next = 83;
7927
7981
  return this.cleanUpOnAddMediaFailure();
7928
- case 82:
7982
+ case 83:
7929
7983
  // Upload logs on error while adding media
7930
7984
  _triggerProxy.default.trigger(this, {
7931
7985
  file: 'meeting/index',
@@ -7937,15 +7991,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7937
7991
  });
7938
7992
  }
7939
7993
  throw _context35.t1;
7940
- case 85:
7941
- _context35.prev = 85;
7994
+ case 86:
7995
+ _context35.prev = 86;
7942
7996
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7943
- return _context35.finish(85);
7944
- case 88:
7997
+ return _context35.finish(86);
7998
+ case 89:
7945
7999
  case "end":
7946
8000
  return _context35.stop();
7947
8001
  }
7948
- }, _callee35, this, [[24, 67, 85, 88], [29, 34]]);
8002
+ }, _callee35, this, [[25, 68, 86, 89], [30, 35]]);
7949
8003
  }));
7950
8004
  function addMediaInternal(_x33, _x34, _x35) {
7951
8005
  return _addMediaInternal.apply(this, arguments);
@@ -7977,7 +8031,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7977
8031
  * @memberof Meeting
7978
8032
  */
7979
8033
  function enqueueMediaUpdate(mediaUpdateType) {
7980
- var _this46 = this;
8034
+ var _this47 = this;
7981
8035
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7982
8036
  var canUpdateMediaNow = this.canUpdateMedia();
7983
8037
  return new _promise.default(function (resolve, reject) {
@@ -7988,9 +8042,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7988
8042
  options: options
7989
8043
  };
7990
8044
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7991
- _this46.queuedMediaUpdates.push(queueItem);
8045
+ _this47.queuedMediaUpdates.push(queueItem);
7992
8046
  if (canUpdateMediaNow) {
7993
- _this46.processNextQueuedMediaUpdate();
8047
+ _this47.processNextQueuedMediaUpdate();
7994
8048
  }
7995
8049
  });
7996
8050
  }
@@ -8095,7 +8149,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8095
8149
  }, {
8096
8150
  key: "acknowledge",
8097
8151
  value: function acknowledge(type) {
8098
- var _this47 = this;
8152
+ var _this48 = this;
8099
8153
  if (!type) {
8100
8154
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
8101
8155
  }
@@ -8107,12 +8161,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8107
8161
  }).then(function (response) {
8108
8162
  return _promise.default.resolve(response);
8109
8163
  }).then(function (response) {
8110
- _this47.meetingFiniteStateMachine.ring(type);
8164
+ _this48.meetingFiniteStateMachine.ring(type);
8111
8165
  // @ts-ignore
8112
- _this47.webex.internal.newMetrics.submitClientEvent({
8166
+ _this48.webex.internal.newMetrics.submitClientEvent({
8113
8167
  name: 'client.alert.displayed',
8114
8168
  options: {
8115
- meetingId: _this47.id
8169
+ meetingId: _this48.id
8116
8170
  }
8117
8171
  });
8118
8172
  return _promise.default.resolve({
@@ -8137,12 +8191,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8137
8191
  }, {
8138
8192
  key: "decline",
8139
8193
  value: function decline(reason) {
8140
- var _this48 = this;
8194
+ var _this49 = this;
8141
8195
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
8142
- _this48.meetingFiniteStateMachine.decline();
8196
+ _this49.meetingFiniteStateMachine.decline();
8143
8197
  return _promise.default.resolve(decline);
8144
8198
  }).catch(function (error) {
8145
- _this48.meetingFiniteStateMachine.fail(error);
8199
+ _this49.meetingFiniteStateMachine.fail(error);
8146
8200
  return _promise.default.reject(error);
8147
8201
  });
8148
8202
  }
@@ -8193,7 +8247,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8193
8247
  }, {
8194
8248
  key: "leave",
8195
8249
  value: function leave() {
8196
- var _this49 = this;
8250
+ var _this50 = this;
8197
8251
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8198
8252
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
8199
8253
 
@@ -8205,7 +8259,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8205
8259
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8206
8260
  return (
8207
8261
  // @ts-ignore
8208
- _this49.webex.internal.newMetrics.submitClientEvent({
8262
+ _this50.webex.internal.newMetrics.submitClientEvent({
8209
8263
  name: 'client.call.leave',
8210
8264
  payload: _objectSpread({
8211
8265
  trigger: 'user-interaction',
@@ -8213,7 +8267,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8213
8267
  leaveReason: options.clientEventLeaveReason
8214
8268
  }, payload),
8215
8269
  options: {
8216
- meetingId: _this49.id
8270
+ meetingId: _this50.id
8217
8271
  }
8218
8272
  })
8219
8273
  );
@@ -8222,24 +8276,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8222
8276
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
8223
8277
  // CA team recommends submitting this *after* locus /leave
8224
8278
  submitLeaveMetric();
8225
- _this49.meetingFiniteStateMachine.leave();
8226
- _this49.clearMeetingData();
8279
+ _this50.meetingFiniteStateMachine.leave();
8280
+ _this50.clearMeetingData();
8227
8281
 
8228
8282
  // upload logs on leave irrespective of meeting delete
8229
- _triggerProxy.default.trigger(_this49, {
8283
+ _triggerProxy.default.trigger(_this50, {
8230
8284
  file: 'meeting/index',
8231
8285
  function: 'leave'
8232
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8286
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this50);
8233
8287
 
8234
8288
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
8235
- if (_this49.wirelessShare || _this49.guest) {
8289
+ if (_this50.wirelessShare || _this50.guest) {
8236
8290
  // If screen sharing clean the meeting object
8237
- _triggerProxy.default.trigger(_this49, {
8291
+ _triggerProxy.default.trigger(_this50, {
8238
8292
  file: 'meeting/index',
8239
8293
  function: 'leave'
8240
8294
  }, _constants.EVENTS.DESTROY_MEETING, {
8241
8295
  reason: options.reason,
8242
- meetingId: _this49.id
8296
+ meetingId: _this50.id
8243
8297
  });
8244
8298
  }
8245
8299
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -8256,16 +8310,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8256
8310
  shownToUser: false
8257
8311
  }]
8258
8312
  });
8259
- _this49.meetingFiniteStateMachine.fail(error);
8313
+ _this50.meetingFiniteStateMachine.fail(error);
8260
8314
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
8261
8315
  // upload logs on leave irrespective of meeting delete
8262
- _triggerProxy.default.trigger(_this49, {
8316
+ _triggerProxy.default.trigger(_this50, {
8263
8317
  file: 'meeting/index',
8264
8318
  function: 'leave'
8265
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8319
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this50);
8266
8320
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
8267
- correlation_id: _this49.correlationId,
8268
- locus_id: _this49.locusUrl.split('/').pop(),
8321
+ correlation_id: _this50.correlationId,
8322
+ locus_id: _this50.locusUrl.split('/').pop(),
8269
8323
  reason: error.message,
8270
8324
  stack: error.stack,
8271
8325
  code: error.code
@@ -8285,7 +8339,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8285
8339
  }, {
8286
8340
  key: "startWhiteboardShare",
8287
8341
  value: function startWhiteboardShare(channelUrl, resourceToken) {
8288
- var _this50 = this;
8342
+ var _this51 = this;
8289
8343
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
8290
8344
  return element.name === 'whiteboard';
8291
8345
  });
@@ -8318,13 +8372,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8318
8372
  body.resourceToken = resourceToken;
8319
8373
  }
8320
8374
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
8321
- _this50.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8375
+ _this51.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8322
8376
  return _promise.default.resolve();
8323
8377
  }).catch(function (error) {
8324
8378
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
8325
8379
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
8326
- correlation_id: _this50.correlationId,
8327
- locus_id: _this50.locusUrl.split('/').pop(),
8380
+ correlation_id: _this51.correlationId,
8381
+ locus_id: _this51.locusUrl.split('/').pop(),
8328
8382
  reason: error.message,
8329
8383
  stack: error.stack,
8330
8384
  board: {
@@ -8347,7 +8401,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8347
8401
  }, {
8348
8402
  key: "stopWhiteboardShare",
8349
8403
  value: function stopWhiteboardShare(channelUrl) {
8350
- var _this51 = this;
8404
+ var _this52 = this;
8351
8405
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
8352
8406
  return element.name === 'whiteboard';
8353
8407
  });
@@ -8376,8 +8430,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8376
8430
  }).catch(function (error) {
8377
8431
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
8378
8432
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
8379
- correlation_id: _this51.correlationId,
8380
- locus_id: _this51.locusUrl.split('/').pop(),
8433
+ correlation_id: _this52.correlationId,
8434
+ locus_id: _this52.locusUrl.split('/').pop(),
8381
8435
  reason: error.message,
8382
8436
  stack: error.stack,
8383
8437
  board: {
@@ -8399,7 +8453,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8399
8453
  }, {
8400
8454
  key: "requestScreenShareFloor",
8401
8455
  value: function requestScreenShareFloor() {
8402
- var _this52 = this;
8456
+ var _this53 = this;
8403
8457
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
8404
8458
  _loggerProxy.default.logger.log("Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=".concat(this.mediaProperties.shareVideoStream ? 'yes' : 'no', ", sendShare=").concat(this.mediaProperties.mediaDirection.sendShare, ")"));
8405
8459
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -8430,34 +8484,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8430
8484
  resourceUrl: this.resourceUrl,
8431
8485
  shareInstanceId: this.localShareInstanceId
8432
8486
  }).then(function () {
8433
- _this52.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
8487
+ _this53.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
8434
8488
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
8435
- correlation_id: _this52.correlationId,
8436
- locus_id: _this52.locusUrl.split('/').pop()
8489
+ correlation_id: _this53.correlationId,
8490
+ locus_id: _this53.locusUrl.split('/').pop()
8437
8491
  });
8438
8492
  return _promise.default.resolve();
8439
8493
  }).catch(function (error) {
8440
8494
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
8441
8495
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
8442
- correlation_id: _this52.correlationId,
8443
- locus_id: _this52.locusUrl.split('/').pop(),
8496
+ correlation_id: _this53.correlationId,
8497
+ locus_id: _this53.locusUrl.split('/').pop(),
8444
8498
  reason: error.message,
8445
8499
  stack: error.stack
8446
8500
  });
8447
8501
 
8448
8502
  // @ts-ignore
8449
- _this52.webex.internal.newMetrics.submitClientEvent({
8503
+ _this53.webex.internal.newMetrics.submitClientEvent({
8450
8504
  name: 'client.share.floor-granted.local',
8451
8505
  payload: {
8452
8506
  mediaType: 'share',
8453
8507
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
8454
- shareInstanceId: _this52.localShareInstanceId
8508
+ shareInstanceId: _this53.localShareInstanceId
8455
8509
  },
8456
8510
  options: {
8457
- meetingId: _this52.id
8511
+ meetingId: _this53.id
8458
8512
  }
8459
8513
  });
8460
- _this52.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8514
+ _this53.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8461
8515
  return _promise.default.reject(error);
8462
8516
  });
8463
8517
  }
@@ -8480,10 +8534,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8480
8534
  }, {
8481
8535
  key: "requestScreenShareFloorIfPending",
8482
8536
  value: function requestScreenShareFloorIfPending() {
8483
- var _this53 = this;
8537
+ var _this54 = this;
8484
8538
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
8485
8539
  this.requestScreenShareFloor().then(function () {
8486
- _this53.floorGrantPending = false;
8540
+ _this54.floorGrantPending = false;
8487
8541
  });
8488
8542
  }
8489
8543
  }
@@ -8497,7 +8551,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8497
8551
  }, {
8498
8552
  key: "releaseScreenShareFloor",
8499
8553
  value: function releaseScreenShareFloor() {
8500
- var _this54 = this;
8554
+ var _this55 = this;
8501
8555
  var content = this.locusInfo.mediaShares.find(function (element) {
8502
8556
  return element.name === _constants.CONTENT;
8503
8557
  });
@@ -8538,8 +8592,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8538
8592
  }).catch(function (error) {
8539
8593
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
8540
8594
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
8541
- correlation_id: _this54.correlationId,
8542
- locus_id: _this54.locusUrl.split('/').pop(),
8595
+ correlation_id: _this55.correlationId,
8596
+ locus_id: _this55.locusUrl.split('/').pop(),
8543
8597
  reason: error.message,
8544
8598
  stack: error.stack
8545
8599
  });
@@ -8719,7 +8773,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8719
8773
  }, {
8720
8774
  key: "changeVideoLayout",
8721
8775
  value: function changeVideoLayout(layoutType) {
8722
- var _this55 = this;
8776
+ var _this56 = this;
8723
8777
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8724
8778
  var main = renderInfo.main,
8725
8779
  content = renderInfo.content;
@@ -8773,7 +8827,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8773
8827
  }
8774
8828
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
8775
8829
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
8776
- _triggerProxy.default.trigger(_this55, {
8830
+ _triggerProxy.default.trigger(_this56, {
8777
8831
  file: 'meeting/index',
8778
8832
  function: 'changeVideoLayout'
8779
8833
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8889,7 +8943,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8889
8943
  }, {
8890
8944
  key: "endMeetingForAll",
8891
8945
  value: function endMeetingForAll() {
8892
- var _this56 = this;
8946
+ var _this57 = this;
8893
8947
  // @ts-ignore
8894
8948
  this.webex.internal.newMetrics.submitClientEvent({
8895
8949
  name: 'client.call.leave',
@@ -8907,25 +8961,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8907
8961
  locus_id: this.locusId
8908
8962
  });
8909
8963
  return _util2.default.endMeetingForAll(this).then(function (end) {
8910
- _this56.meetingFiniteStateMachine.end();
8911
- _this56.clearMeetingData();
8964
+ _this57.meetingFiniteStateMachine.end();
8965
+ _this57.clearMeetingData();
8912
8966
  // upload logs on leave irrespective of meeting delete
8913
- _triggerProxy.default.trigger(_this56, {
8967
+ _triggerProxy.default.trigger(_this57, {
8914
8968
  file: 'meeting/index',
8915
8969
  function: 'endMeetingForAll'
8916
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
8970
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this57);
8917
8971
  return end;
8918
8972
  }).catch(function (error) {
8919
- _this56.meetingFiniteStateMachine.fail(error);
8973
+ _this57.meetingFiniteStateMachine.fail(error);
8920
8974
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8921
8975
  // upload logs on leave irrespective of meeting delete
8922
- _triggerProxy.default.trigger(_this56, {
8976
+ _triggerProxy.default.trigger(_this57, {
8923
8977
  file: 'meeting/index',
8924
8978
  function: 'endMeetingForAll'
8925
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
8979
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this57);
8926
8980
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8927
- correlation_id: _this56.correlationId,
8928
- locus_id: _this56.locusUrl.split('/').pop(),
8981
+ correlation_id: _this57.correlationId,
8982
+ locus_id: _this57.locusUrl.split('/').pop(),
8929
8983
  reason: error.message,
8930
8984
  stack: error.stack,
8931
8985
  code: error.code
@@ -9086,7 +9140,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9086
9140
  _this$mediaProperties43,
9087
9141
  _this$mediaProperties44,
9088
9142
  _this$mediaProperties45,
9089
- _this57 = this;
9143
+ _this58 = this;
9090
9144
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
9091
9145
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
9092
9146
  if (!this.canUpdateMedia()) {
@@ -9111,8 +9165,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9111
9165
  }).catch(function (error) {
9112
9166
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
9113
9167
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
9114
- correlation_id: _this57.correlationId,
9115
- locus_id: _this57.locusUrl.split('/').pop(),
9168
+ correlation_id: _this58.correlationId,
9169
+ locus_id: _this58.locusUrl.split('/').pop(),
9116
9170
  reason: error.message,
9117
9171
  stack: error.stack
9118
9172
  });
@@ -9633,6 +9687,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9633
9687
  };
9634
9688
  return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
9635
9689
  }
9690
+
9691
+ /**
9692
+ * Notifies the host with the given meeting UUID and display names.
9693
+ *
9694
+ * @param {string} meetingUuid - The UUID of the meeting.
9695
+ * @param {string[]} displayName - An array of display names to notify the host with.
9696
+ * @returns {Promise<any>} The result of the notifyHost request.
9697
+ */
9698
+ }, {
9699
+ key: "notifyHost",
9700
+ value: function notifyHost(meetingUuid, displayName) {
9701
+ return this.meetingRequest.notifyHost(this.meetingInfo.siteFullUrl, this.locusId, meetingUuid, displayName);
9702
+ }
9636
9703
  }]);
9637
9704
  return Meeting;
9638
9705
  }(_webexCore.StatelessWebexPlugin);