@webex/plugin-meetings 3.0.0-beta.291 → 3.0.0-beta.293

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 (38) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/common/errors/webex-errors.js +21 -1
  4. package/dist/common/errors/webex-errors.js.map +1 -1
  5. package/dist/config.js +1 -2
  6. package/dist/config.js.map +1 -1
  7. package/dist/interpretation/index.js +1 -1
  8. package/dist/interpretation/siLanguage.js +1 -1
  9. package/dist/meeting/index.js +357 -173
  10. package/dist/meeting/index.js.map +1 -1
  11. package/dist/meetings/index.js +0 -17
  12. package/dist/meetings/index.js.map +1 -1
  13. package/dist/reconnection-manager/index.js +2 -2
  14. package/dist/reconnection-manager/index.js.map +1 -1
  15. package/dist/roap/index.js +3 -2
  16. package/dist/roap/index.js.map +1 -1
  17. package/dist/roap/turnDiscovery.js +15 -16
  18. package/dist/roap/turnDiscovery.js.map +1 -1
  19. package/dist/types/common/errors/webex-errors.d.ts +12 -0
  20. package/dist/types/config.d.ts +0 -1
  21. package/dist/types/meeting/index.d.ts +42 -1
  22. package/dist/types/meetings/index.d.ts +0 -8
  23. package/dist/types/roap/index.d.ts +2 -1
  24. package/dist/types/roap/turnDiscovery.d.ts +3 -2
  25. package/dist/webinar/index.js +1 -1
  26. package/package.json +19 -19
  27. package/src/common/errors/webex-errors.ts +17 -0
  28. package/src/config.ts +0 -1
  29. package/src/meeting/index.ts +150 -9
  30. package/src/meetings/index.ts +0 -15
  31. package/src/reconnection-manager/index.ts +2 -2
  32. package/src/roap/index.ts +3 -2
  33. package/src/roap/turnDiscovery.ts +8 -12
  34. package/test/unit/spec/meeting/index.js +310 -45
  35. package/test/unit/spec/meetings/index.js +0 -28
  36. package/test/unit/spec/reconnection-manager/index.js +1 -0
  37. package/test/unit/spec/roap/index.ts +16 -22
  38. package/test/unit/spec/roap/turnDiscovery.ts +42 -31
@@ -492,6 +492,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
492
492
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "allowMediaInLobby", void 0);
493
493
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "turnDiscoverySkippedReason", void 0);
494
494
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "turnServerUsed", void 0);
495
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "retriedWithTurnServer", void 0);
495
496
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sendSlotManager", new _sendSlotManager.default(_loggerProxy.default));
496
497
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "deferSDPAnswer", void 0);
497
498
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sdpResponseTimer", void 0);
@@ -1807,6 +1808,15 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
1807
1808
  * @memberof Meeting
1808
1809
  */
1809
1810
  _this.turnServerUsed = false;
1811
+
1812
+ /**
1813
+ * Whether retry was done using TURN Discovery.
1814
+ * @instance
1815
+ * @type {boolean}
1816
+ * @private
1817
+ * @memberof Meeting
1818
+ */
1819
+ _this.retriedWithTurnServer = false;
1810
1820
  return _this;
1811
1821
  }
1812
1822
 
@@ -5499,8 +5509,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5499
5509
  this.webex.internal.newMetrics.submitClientEvent({
5500
5510
  name: 'client.ice.end',
5501
5511
  payload: {
5502
- canProceed: false,
5503
- icePhase: 'JOIN_MEETING_FINAL',
5512
+ canProceed: !this.turnServerUsed,
5513
+ // If we haven't done turn tls retry yet we will proceed with join attempt
5514
+ icePhase: this.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY',
5504
5515
  errors: [
5505
5516
  // @ts-ignore
5506
5517
  this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
@@ -5601,7 +5612,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5601
5612
  return waitForRemoteSDPAnswer;
5602
5613
  }()
5603
5614
  /**
5604
- * Does TURN discovery, SDP offer/answer exhange, establishes ICE connection and DTLS handshake
5615
+ * Calls establishMediaConnection with isForced = true to force turn discovery to happen
5605
5616
  *
5606
5617
  * @private
5607
5618
  * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]
@@ -5609,24 +5620,142 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5609
5620
  * @returns {Promise<void>}
5610
5621
  */
5611
5622
  }, {
5612
- key: "establishMediaConnection",
5623
+ key: "retryEstablishMediaConnectionWithForcedTurnDiscovery",
5613
5624
  value: function () {
5614
- var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(remoteMediaManagerConfig, bundlePolicy) {
5615
- var LOG_HEADER, cdl, turnDiscoveryObject, turnServerInfo, mc;
5625
+ var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(remoteMediaManagerConfig, bundlePolicy) {
5626
+ var LOG_HEADER;
5616
5627
  return _regenerator.default.wrap(function _callee21$(_context21) {
5617
5628
  while (1) switch (_context21.prev = _context21.next) {
5629
+ case 0:
5630
+ LOG_HEADER = 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';
5631
+ _context21.prev = 1;
5632
+ _context21.next = 4;
5633
+ return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);
5634
+ case 4:
5635
+ _context21.next = 10;
5636
+ break;
5637
+ case 6:
5638
+ _context21.prev = 6;
5639
+ _context21.t0 = _context21["catch"](1);
5640
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _context21.t0);
5641
+ throw _context21.t0;
5642
+ case 10:
5643
+ case "end":
5644
+ return _context21.stop();
5645
+ }
5646
+ }, _callee21, this, [[1, 6]]);
5647
+ }));
5648
+ function retryEstablishMediaConnectionWithForcedTurnDiscovery(_x14, _x15) {
5649
+ return _retryEstablishMediaConnectionWithForcedTurnDiscovery.apply(this, arguments);
5650
+ }
5651
+ return retryEstablishMediaConnectionWithForcedTurnDiscovery;
5652
+ }()
5653
+ /**
5654
+ * Does relevant clean up before retrying to establish media connection
5655
+ * and performs the retry with forced turn discovery
5656
+ *
5657
+ * @private
5658
+ * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]
5659
+ * @param {BundlePolicy} [bundlePolicy]
5660
+ * @returns {Promise<void>}
5661
+ */
5662
+ }, {
5663
+ key: "retryWithForcedTurnDiscovery",
5664
+ value: function () {
5665
+ var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(remoteMediaManagerConfig, bundlePolicy) {
5666
+ return _regenerator.default.wrap(function _callee22$(_context22) {
5667
+ while (1) switch (_context22.prev = _context22.next) {
5668
+ case 0:
5669
+ this.retriedWithTurnServer = true;
5670
+ _context22.next = 3;
5671
+ return this.cleanUpBeforeRetryWithTurnServer();
5672
+ case 3:
5673
+ _context22.next = 5;
5674
+ return this.retryEstablishMediaConnectionWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
5675
+ case 5:
5676
+ case "end":
5677
+ return _context22.stop();
5678
+ }
5679
+ }, _callee22, this);
5680
+ }));
5681
+ function retryWithForcedTurnDiscovery(_x16, _x17) {
5682
+ return _retryWithForcedTurnDiscovery.apply(this, arguments);
5683
+ }
5684
+ return retryWithForcedTurnDiscovery;
5685
+ }()
5686
+ /**
5687
+ * If waitForMediaConnectionConnected() fails when we haven't done turn discovery then we
5688
+ * attempt to establish a media connection again, but this time using turn discovery. If we
5689
+ * used turn discovery on the first pass we do not attempt connection again.
5690
+ *
5691
+ * @private
5692
+ * @param {Error} error
5693
+ * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]
5694
+ * @param {BundlePolicy} [bundlePolicy]
5695
+ * @returns {Promise<void>}
5696
+ */
5697
+ }, {
5698
+ key: "handleWaitForMediaConnectionConnectedError",
5699
+ value: function () {
5700
+ var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23(error, remoteMediaManagerConfig, bundlePolicy) {
5701
+ var LOG_HEADER;
5702
+ return _regenerator.default.wrap(function _callee23$(_context23) {
5703
+ while (1) switch (_context23.prev = _context23.next) {
5704
+ case 0:
5705
+ LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->'; // @ts-ignore - config coming from registerPlugin
5706
+ if (this.turnServerUsed) {
5707
+ _context23.next = 7;
5708
+ break;
5709
+ }
5710
+ _loggerProxy.default.logger.info("".concat(LOG_HEADER, " error waiting for media to connect on UDP, TCP, retrying using TURN-TLS, "), error);
5711
+ _context23.next = 5;
5712
+ return this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
5713
+ case 5:
5714
+ _context23.next = 9;
5715
+ break;
5716
+ case 7:
5717
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error waiting for media to connect using UDP, TCP and TURN-TLS"), error);
5718
+ throw new _webexErrors.AddMediaFailed();
5719
+ case 9:
5720
+ case "end":
5721
+ return _context23.stop();
5722
+ }
5723
+ }, _callee23, this);
5724
+ }));
5725
+ function handleWaitForMediaConnectionConnectedError(_x18, _x19, _x20) {
5726
+ return _handleWaitForMediaConnectionConnectedError.apply(this, arguments);
5727
+ }
5728
+ return handleWaitForMediaConnectionConnectedError;
5729
+ }()
5730
+ /**
5731
+ * Does TURN discovery, SDP offer/answer exhange, establishes ICE connection and DTLS handshake.
5732
+ *
5733
+ * @private
5734
+ * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]
5735
+ * @param {BundlePolicy} [bundlePolicy]
5736
+ * @param {boolean} [isForced] - let isForced be true to do turn discovery regardless of reachability results
5737
+ * @returns {Promise<void>}
5738
+ */
5739
+ }, {
5740
+ key: "establishMediaConnection",
5741
+ value: function () {
5742
+ var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(remoteMediaManagerConfig, bundlePolicy, isForced) {
5743
+ var LOG_HEADER, cdl, isRetry, turnDiscoveryObject, turnServerInfo, mc;
5744
+ return _regenerator.default.wrap(function _callee24$(_context24) {
5745
+ while (1) switch (_context24.prev = _context24.next) {
5618
5746
  case 0:
5619
5747
  LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->'; // @ts-ignore
5620
5748
  cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;
5621
- _context21.prev = 2;
5749
+ isRetry = this.retriedWithTurnServer;
5750
+ _context24.prev = 3;
5622
5751
  // @ts-ignore
5623
5752
  this.webex.internal.newMetrics.submitInternalEvent({
5624
5753
  name: 'internal.client.add-media.turn-discovery.start'
5625
5754
  });
5626
- _context21.next = 6;
5627
- return this.roap.doTurnDiscovery(this, false);
5628
- case 6:
5629
- turnDiscoveryObject = _context21.sent;
5755
+ _context24.next = 7;
5756
+ return this.roap.doTurnDiscovery(this, isRetry, isForced);
5757
+ case 7:
5758
+ turnDiscoveryObject = _context24.sent;
5630
5759
  this.turnDiscoverySkippedReason = turnDiscoveryObject === null || turnDiscoveryObject === void 0 ? void 0 : turnDiscoveryObject.turnDiscoverySkippedReason;
5631
5760
  this.turnServerUsed = !this.turnDiscoverySkippedReason;
5632
5761
 
@@ -5638,50 +5767,60 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5638
5767
  _metrics.default.sendBehavioralMetric(_constants2.default.TURN_DISCOVERY_LATENCY, {
5639
5768
  correlation_id: this.correlationId,
5640
5769
  latency: cdl.getTurnDiscoveryTime(),
5641
- turnServerUsed: this.turnServerUsed
5770
+ turnServerUsed: this.turnServerUsed,
5771
+ retriedWithTurnServer: this.retriedWithTurnServer
5642
5772
  });
5643
5773
  }
5644
5774
  turnServerInfo = turnDiscoveryObject.turnServerInfo;
5645
- _context21.next = 14;
5775
+ _context24.next = 15;
5646
5776
  return this.createMediaConnection(turnServerInfo, bundlePolicy);
5647
- case 14:
5648
- mc = _context21.sent;
5777
+ case 15:
5778
+ mc = _context24.sent;
5649
5779
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created"));
5650
5780
  if (!this.isMultistream) {
5651
- _context21.next = 23;
5781
+ _context24.next = 24;
5652
5782
  break;
5653
5783
  }
5654
5784
  this.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(this.receiveSlotManager, this.mediaRequestManagers, remoteMediaManagerConfig);
5655
5785
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.AudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_AUDIO_CREATED);
5656
5786
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
5657
5787
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
5658
- _context21.next = 23;
5788
+ _context24.next = 24;
5659
5789
  return this.remoteMediaManager.start();
5660
- case 23:
5661
- _context21.next = 25;
5790
+ case 24:
5791
+ _context24.next = 26;
5662
5792
  return mc.initiateOffer();
5663
- case 25:
5664
- _context21.next = 27;
5793
+ case 26:
5794
+ _context24.next = 28;
5665
5795
  return this.waitForRemoteSDPAnswer();
5666
- case 27:
5796
+ case 28:
5667
5797
  this.handleMediaLogging(this.mediaProperties);
5668
- _context21.next = 34;
5798
+ _context24.next = 35;
5669
5799
  break;
5670
- case 30:
5671
- _context21.prev = 30;
5672
- _context21.t0 = _context21["catch"](2);
5673
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _context21.t0);
5674
- throw _context21.t0;
5675
- case 34:
5676
- _context21.next = 36;
5800
+ case 31:
5801
+ _context24.prev = 31;
5802
+ _context24.t0 = _context24["catch"](3);
5803
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _context24.t0);
5804
+ throw _context24.t0;
5805
+ case 35:
5806
+ _context24.prev = 35;
5807
+ _context24.next = 38;
5677
5808
  return this.waitForMediaConnectionConnected();
5678
- case 36:
5809
+ case 38:
5810
+ _context24.next = 44;
5811
+ break;
5812
+ case 40:
5813
+ _context24.prev = 40;
5814
+ _context24.t1 = _context24["catch"](35);
5815
+ _context24.next = 44;
5816
+ return this.handleWaitForMediaConnectionConnectedError(_context24.t1, remoteMediaManagerConfig, bundlePolicy);
5817
+ case 44:
5679
5818
  case "end":
5680
- return _context21.stop();
5819
+ return _context24.stop();
5681
5820
  }
5682
- }, _callee21, this, [[2, 30]]);
5821
+ }, _callee24, this, [[3, 31], [35, 40]]);
5683
5822
  }));
5684
- function establishMediaConnection(_x14, _x15) {
5823
+ function establishMediaConnection(_x21, _x22, _x23) {
5685
5824
  return _establishMediaConnection.apply(this, arguments);
5686
5825
  }
5687
5826
  return establishMediaConnection;
@@ -5695,22 +5834,22 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5695
5834
  }, {
5696
5835
  key: "cleanUpOnAddMediaFailure",
5697
5836
  value: function () {
5698
- var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
5699
- return _regenerator.default.wrap(function _callee22$(_context22) {
5700
- while (1) switch (_context22.prev = _context22.next) {
5837
+ var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25() {
5838
+ return _regenerator.default.wrap(function _callee25$(_context25) {
5839
+ while (1) switch (_context25.prev = _context25.next) {
5701
5840
  case 0:
5702
5841
  if (!this.statsAnalyzer) {
5703
- _context22.next = 3;
5842
+ _context25.next = 3;
5704
5843
  break;
5705
5844
  }
5706
- _context22.next = 3;
5845
+ _context25.next = 3;
5707
5846
  return this.statsAnalyzer.stopAnalyzer();
5708
5847
  case 3:
5709
5848
  this.statsAnalyzer = null;
5710
5849
 
5711
5850
  // when media fails, we want to upload a webrtc dump to see whats going on
5712
5851
  // this function is async, but returns once the stats have been gathered
5713
- _context22.next = 6;
5852
+ _context25.next = 6;
5714
5853
  return this.forceSendStatsReport({
5715
5854
  callFrom: 'addMedia'
5716
5855
  });
@@ -5721,15 +5860,58 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5721
5860
  }
5722
5861
  case 7:
5723
5862
  case "end":
5724
- return _context22.stop();
5863
+ return _context25.stop();
5725
5864
  }
5726
- }, _callee22, this);
5865
+ }, _callee25, this);
5727
5866
  }));
5728
5867
  function cleanUpOnAddMediaFailure() {
5729
5868
  return _cleanUpOnAddMediaFailure.apply(this, arguments);
5730
5869
  }
5731
5870
  return cleanUpOnAddMediaFailure;
5732
5871
  }()
5872
+ /**
5873
+ * Sends stats report, closes peer connection and cleans up any media connection
5874
+ * related things before trying to establish media connection again with turn server
5875
+ *
5876
+ * @private
5877
+ * @returns {Promise<void>}
5878
+ */
5879
+ }, {
5880
+ key: "cleanUpBeforeRetryWithTurnServer",
5881
+ value: function () {
5882
+ var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26() {
5883
+ return _regenerator.default.wrap(function _callee26$(_context26) {
5884
+ while (1) switch (_context26.prev = _context26.next) {
5885
+ case 0:
5886
+ _context26.next = 2;
5887
+ return this.forceSendStatsReport({
5888
+ callFrom: 'cleanUpBeforeRetryWithTurnServer'
5889
+ });
5890
+ case 2:
5891
+ if (this.mediaProperties.webrtcMediaConnection) {
5892
+ if (this.remoteMediaManager) {
5893
+ this.remoteMediaManager.stop();
5894
+ this.remoteMediaManager = null;
5895
+ }
5896
+ (0, _values.default)(this.mediaRequestManagers).forEach(function (mediaRequestManager) {
5897
+ return mediaRequestManager.reset();
5898
+ });
5899
+ this.receiveSlotManager.reset();
5900
+ this.mediaProperties.webrtcMediaConnection.close();
5901
+ this.sendSlotManager.reset();
5902
+ this.mediaProperties.unsetPeerConnection();
5903
+ }
5904
+ case 3:
5905
+ case "end":
5906
+ return _context26.stop();
5907
+ }
5908
+ }, _callee26, this);
5909
+ }));
5910
+ function cleanUpBeforeRetryWithTurnServer() {
5911
+ return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
5912
+ }
5913
+ return cleanUpBeforeRetryWithTurnServer;
5914
+ }()
5733
5915
  /**
5734
5916
  * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
5735
5917
  *
@@ -5741,7 +5923,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5741
5923
  }, {
5742
5924
  key: "addMedia",
5743
5925
  value: function () {
5744
- var _addMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
5926
+ var _addMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27() {
5745
5927
  var _this$webex$meetings$2, _this$webex$meetings$3;
5746
5928
  var options,
5747
5929
  LOG_HEADER,
@@ -5782,36 +5964,37 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5782
5964
  _this$mediaProperties39,
5783
5965
  _this$mediaProperties40,
5784
5966
  reachabilityMetrics,
5785
- _args23 = arguments;
5786
- return _regenerator.default.wrap(function _callee23$(_context23) {
5787
- while (1) switch (_context23.prev = _context23.next) {
5967
+ _args27 = arguments;
5968
+ return _regenerator.default.wrap(function _callee27$(_context27) {
5969
+ while (1) switch (_context27.prev = _context27.next) {
5788
5970
  case 0:
5789
- options = _args23.length > 0 && _args23[0] !== undefined ? _args23[0] : {};
5971
+ options = _args27.length > 0 && _args27[0] !== undefined ? _args27[0] : {};
5972
+ this.retriedWithTurnServer = false;
5790
5973
  LOG_HEADER = 'Meeting:index#addMedia -->';
5791
5974
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: ").concat((0, _stringify.default)(options)));
5792
5975
  if (!(this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
5793
- _context23.next = 5;
5976
+ _context27.next = 6;
5794
5977
  break;
5795
5978
  }
5796
5979
  throw new _webexErrors.MeetingNotActiveError();
5797
- case 5:
5980
+ case 6:
5798
5981
  if (!_util.default.isUserInLeftState(this.locusInfo)) {
5799
- _context23.next = 7;
5982
+ _context27.next = 8;
5800
5983
  break;
5801
5984
  }
5802
5985
  throw new _webexErrors.UserNotJoinedError();
5803
- case 7:
5986
+ case 8:
5804
5987
  localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, bundlePolicy = options.bundlePolicy, allowMediaInLobby = options.allowMediaInLobby;
5805
5988
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
5806
5989
 
5807
5990
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
5808
5991
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
5809
5992
  if (!(this.isUserUnadmitted && !this.wirelessShare && !allowMediaInLobby)) {
5810
- _context23.next = 11;
5993
+ _context27.next = 12;
5811
5994
  break;
5812
5995
  }
5813
5996
  throw new _webexErrors.UserInLobbyError();
5814
- case 11:
5997
+ case 12:
5815
5998
  // @ts-ignore
5816
5999
  this.webex.internal.newMetrics.submitClientEvent({
5817
6000
  name: 'client.media.capabilities',
@@ -5866,33 +6049,33 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5866
6049
  });
5867
6050
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
5868
6051
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
5869
- _context23.prev = 16;
5870
- _context23.next = 19;
6052
+ _context27.prev = 17;
6053
+ _context27.next = 20;
5871
6054
  return this.setUpLocalStreamReferences(localStreams);
5872
- case 19:
6055
+ case 20:
5873
6056
  this.setMercuryListener();
5874
6057
  this.createStatsAnalyzer();
5875
- _context23.next = 23;
5876
- return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy);
5877
- case 23:
5878
- _context23.next = 25;
6058
+ _context27.next = 24;
6059
+ return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, false);
6060
+ case 24:
6061
+ _context27.next = 26;
5879
6062
  return Meeting.handleDeviceLogging();
5880
- case 25:
6063
+ case 26:
5881
6064
  if (!this.mediaProperties.hasLocalShareStream()) {
5882
- _context23.next = 28;
6065
+ _context27.next = 29;
5883
6066
  break;
5884
6067
  }
5885
- _context23.next = 28;
6068
+ _context27.next = 29;
5886
6069
  return this.enqueueScreenShareFloorRequest();
5887
- case 28:
5888
- _context23.next = 30;
6070
+ case 29:
6071
+ _context27.next = 31;
5889
6072
  return this.mediaProperties.getCurrentConnectionType();
5890
- case 30:
5891
- connectionType = _context23.sent;
5892
- _context23.next = 33;
6073
+ case 31:
6074
+ connectionType = _context27.sent;
6075
+ _context27.next = 34;
5893
6076
  return this.webex.meetings.reachability.getReachabilityMetrics();
5894
- case 33:
5895
- reachabilityStats = _context23.sent;
6077
+ case 34:
6078
+ reachabilityStats = _context27.sent;
5896
6079
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread({
5897
6080
  correlation_id: this.correlationId,
5898
6081
  locus_id: this.locusUrl.split('/').pop(),
@@ -5910,50 +6093,51 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5910
6093
 
5911
6094
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
5912
6095
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
5913
- _context23.next = 52;
6096
+ _context27.next = 53;
5914
6097
  break;
5915
- case 40:
5916
- _context23.prev = 40;
5917
- _context23.t0 = _context23["catch"](16);
5918
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context23.t0);
6098
+ case 41:
6099
+ _context27.prev = 41;
6100
+ _context27.t0 = _context27["catch"](17);
6101
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context27.t0);
5919
6102
 
5920
6103
  // @ts-ignore
5921
- _context23.next = 45;
6104
+ _context27.next = 46;
5922
6105
  return this.webex.meetings.reachability.getReachabilityMetrics();
5923
- case 45:
5924
- reachabilityMetrics = _context23.sent;
6106
+ case 46:
6107
+ reachabilityMetrics = _context27.sent;
5925
6108
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread({
5926
6109
  correlation_id: this.correlationId,
5927
6110
  locus_id: this.locusUrl.split('/').pop(),
5928
- reason: _context23.t0.message,
5929
- stack: _context23.t0.stack,
5930
- code: _context23.t0.code,
6111
+ reason: _context27.t0.message,
6112
+ stack: _context27.t0.stack,
6113
+ code: _context27.t0.code,
5931
6114
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
5932
6115
  turnServerUsed: this.turnServerUsed,
6116
+ retriedWithTurnServer: this.retriedWithTurnServer,
5933
6117
  isMultistream: this.isMultistream,
5934
6118
  signalingState: ((_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.signalingState) || ((_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.signalingState) || 'unknown',
5935
6119
  connectionState: ((_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.connectionState) || ((_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.connectionState) || 'unknown',
5936
6120
  iceConnectionState: ((_this$mediaProperties34 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties34 === void 0 ? void 0 : (_this$mediaProperties35 = _this$mediaProperties34.multistreamConnection) === null || _this$mediaProperties35 === void 0 ? void 0 : (_this$mediaProperties36 = _this$mediaProperties35.pc) === null || _this$mediaProperties36 === void 0 ? void 0 : (_this$mediaProperties37 = _this$mediaProperties36.pc) === null || _this$mediaProperties37 === void 0 ? void 0 : _this$mediaProperties37.iceConnectionState) || ((_this$mediaProperties38 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties38 === void 0 ? void 0 : (_this$mediaProperties39 = _this$mediaProperties38.mediaConnection) === null || _this$mediaProperties39 === void 0 ? void 0 : (_this$mediaProperties40 = _this$mediaProperties39.pc) === null || _this$mediaProperties40 === void 0 ? void 0 : _this$mediaProperties40.iceConnectionState) || 'unknown'
5937
6121
  }, reachabilityMetrics));
5938
- _context23.next = 49;
6122
+ _context27.next = 50;
5939
6123
  return this.cleanUpOnAddMediaFailure();
5940
- case 49:
6124
+ case 50:
5941
6125
  // Upload logs on error while adding media
5942
6126
  _triggerProxy.default.trigger(this, {
5943
6127
  file: 'meeting/index',
5944
6128
  function: 'addMedia'
5945
6129
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
5946
- if (_context23.t0 instanceof _internalMediaCore.Errors.SdpError) {
6130
+ if (_context27.t0 instanceof _internalMediaCore.Errors.SdpError) {
5947
6131
  this.leave({
5948
6132
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
5949
6133
  });
5950
6134
  }
5951
- throw _context23.t0;
5952
- case 52:
6135
+ throw _context27.t0;
6136
+ case 53:
5953
6137
  case "end":
5954
- return _context23.stop();
6138
+ return _context27.stop();
5955
6139
  }
5956
- }, _callee23, this, [[16, 40]]);
6140
+ }, _callee27, this, [[17, 41]]);
5957
6141
  }));
5958
6142
  function addMedia() {
5959
6143
  return _addMedia.apply(this, arguments);
@@ -6034,35 +6218,35 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
6034
6218
  * @memberof Meeting
6035
6219
  */
6036
6220
  function () {
6037
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(options) {
6221
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(options) {
6038
6222
  var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled;
6039
- return _regenerator.default.wrap(function _callee24$(_context24) {
6040
- while (1) switch (_context24.prev = _context24.next) {
6223
+ return _regenerator.default.wrap(function _callee28$(_context28) {
6224
+ while (1) switch (_context28.prev = _context28.next) {
6041
6225
  case 0:
6042
6226
  this.checkMediaConnection();
6043
6227
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
6044
6228
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
6045
6229
  if (this.canUpdateMedia()) {
6046
- _context24.next = 5;
6230
+ _context28.next = 5;
6047
6231
  break;
6048
6232
  }
6049
- return _context24.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
6233
+ return _context28.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
6050
6234
  case 5:
6051
6235
  if (!this.isMultistream) {
6052
- _context24.next = 10;
6236
+ _context28.next = 10;
6053
6237
  break;
6054
6238
  }
6055
6239
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
6056
- _context24.next = 8;
6240
+ _context28.next = 8;
6057
6241
  break;
6058
6242
  }
6059
6243
  throw new Error('toggling shareAudioEnabled or shareVideoEnabled in a multistream meeting is not supported, to control receiving screen share call meeting.remoteMediaManager.setLayout() with appropriate layout');
6060
6244
  case 8:
6061
- _context24.next = 12;
6245
+ _context28.next = 12;
6062
6246
  break;
6063
6247
  case 10:
6064
6248
  if (!(shareAudioEnabled !== undefined)) {
6065
- _context24.next = 12;
6249
+ _context28.next = 12;
6066
6250
  break;
6067
6251
  }
6068
6252
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -6087,20 +6271,20 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
6087
6271
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
6088
6272
  }
6089
6273
  if (this.isMultistream) {
6090
- _context24.next = 18;
6274
+ _context28.next = 18;
6091
6275
  break;
6092
6276
  }
6093
- _context24.next = 18;
6277
+ _context28.next = 18;
6094
6278
  return this.updateTranscodedMediaConnection();
6095
6279
  case 18:
6096
- return _context24.abrupt("return", undefined);
6280
+ return _context28.abrupt("return", undefined);
6097
6281
  case 19:
6098
6282
  case "end":
6099
- return _context24.stop();
6283
+ return _context28.stop();
6100
6284
  }
6101
- }, _callee24, this);
6285
+ }, _callee28, this);
6102
6286
  }));
6103
- function updateMedia(_x16) {
6287
+ function updateMedia(_x24) {
6104
6288
  return _updateMedia.apply(this, arguments);
6105
6289
  }
6106
6290
  return updateMedia;
@@ -7009,39 +7193,39 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7009
7193
  }, {
7010
7194
  key: "enableMusicMode",
7011
7195
  value: function () {
7012
- var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(shouldEnableMusicMode) {
7013
- return _regenerator.default.wrap(function _callee25$(_context25) {
7014
- while (1) switch (_context25.prev = _context25.next) {
7196
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29(shouldEnableMusicMode) {
7197
+ return _regenerator.default.wrap(function _callee29$(_context29) {
7198
+ while (1) switch (_context29.prev = _context29.next) {
7015
7199
  case 0:
7016
7200
  this.checkMediaConnection();
7017
7201
  if (this.isMultistream) {
7018
- _context25.next = 3;
7202
+ _context29.next = 3;
7019
7203
  break;
7020
7204
  }
7021
7205
  throw new Error('enableMusicMode() only supported with multistream');
7022
7206
  case 3:
7023
7207
  if (!shouldEnableMusicMode) {
7024
- _context25.next = 8;
7208
+ _context29.next = 8;
7025
7209
  break;
7026
7210
  }
7027
- _context25.next = 6;
7211
+ _context29.next = 6;
7028
7212
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
7029
7213
  maxaveragebitrate: '64000',
7030
7214
  maxplaybackrate: '48000'
7031
7215
  });
7032
7216
  case 6:
7033
- _context25.next = 10;
7217
+ _context29.next = 10;
7034
7218
  break;
7035
7219
  case 8:
7036
- _context25.next = 10;
7220
+ _context29.next = 10;
7037
7221
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
7038
7222
  case 10:
7039
7223
  case "end":
7040
- return _context25.stop();
7224
+ return _context29.stop();
7041
7225
  }
7042
- }, _callee25, this);
7226
+ }, _callee29, this);
7043
7227
  }));
7044
- function enableMusicMode(_x17) {
7228
+ function enableMusicMode(_x25) {
7045
7229
  return _enableMusicMode.apply(this, arguments);
7046
7230
  }
7047
7231
  return enableMusicMode;
@@ -7101,25 +7285,25 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7101
7285
  }, {
7102
7286
  key: "publishStream",
7103
7287
  value: function () {
7104
- var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(mediaType, stream) {
7105
- return _regenerator.default.wrap(function _callee26$(_context26) {
7106
- while (1) switch (_context26.prev = _context26.next) {
7288
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30(mediaType, stream) {
7289
+ return _regenerator.default.wrap(function _callee30$(_context30) {
7290
+ while (1) switch (_context30.prev = _context30.next) {
7107
7291
  case 0:
7108
7292
  if (stream) {
7109
- _context26.next = 2;
7293
+ _context30.next = 2;
7110
7294
  break;
7111
7295
  }
7112
- return _context26.abrupt("return");
7296
+ return _context30.abrupt("return");
7113
7297
  case 2:
7114
7298
  if (!this.mediaProperties.webrtcMediaConnection) {
7115
- _context26.next = 7;
7299
+ _context30.next = 7;
7116
7300
  break;
7117
7301
  }
7118
7302
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
7119
- _context26.next = 6;
7303
+ _context30.next = 6;
7120
7304
  break;
7121
7305
  }
7122
- _context26.next = 6;
7306
+ _context30.next = 6;
7123
7307
  return this.sendSlotManager.publishStream(mediaType, stream);
7124
7308
  case 6:
7125
7309
  this.emitPublishStateChangeEvent({
@@ -7130,11 +7314,11 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7130
7314
  });
7131
7315
  case 7:
7132
7316
  case "end":
7133
- return _context26.stop();
7317
+ return _context30.stop();
7134
7318
  }
7135
- }, _callee26, this);
7319
+ }, _callee30, this);
7136
7320
  }));
7137
- function publishStream(_x18, _x19) {
7321
+ function publishStream(_x26, _x27) {
7138
7322
  return _publishStream.apply(this, arguments);
7139
7323
  }
7140
7324
  return publishStream;
@@ -7149,21 +7333,21 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7149
7333
  }, {
7150
7334
  key: "unpublishStream",
7151
7335
  value: function () {
7152
- var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(mediaType, stream) {
7153
- return _regenerator.default.wrap(function _callee27$(_context27) {
7154
- while (1) switch (_context27.prev = _context27.next) {
7336
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31(mediaType, stream) {
7337
+ return _regenerator.default.wrap(function _callee31$(_context31) {
7338
+ while (1) switch (_context31.prev = _context31.next) {
7155
7339
  case 0:
7156
7340
  if (stream) {
7157
- _context27.next = 2;
7341
+ _context31.next = 2;
7158
7342
  break;
7159
7343
  }
7160
- return _context27.abrupt("return");
7344
+ return _context31.abrupt("return");
7161
7345
  case 2:
7162
7346
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
7163
- _context27.next = 5;
7347
+ _context31.next = 5;
7164
7348
  break;
7165
7349
  }
7166
- _context27.next = 5;
7350
+ _context31.next = 5;
7167
7351
  return this.sendSlotManager.unpublishStream(mediaType);
7168
7352
  case 5:
7169
7353
  this.emitPublishStateChangeEvent({
@@ -7174,11 +7358,11 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7174
7358
  });
7175
7359
  case 6:
7176
7360
  case "end":
7177
- return _context27.stop();
7361
+ return _context31.stop();
7178
7362
  }
7179
- }, _callee27, this);
7363
+ }, _callee31, this);
7180
7364
  }));
7181
- function unpublishStream(_x20, _x21) {
7365
+ function unpublishStream(_x28, _x29) {
7182
7366
  return _unpublishStream.apply(this, arguments);
7183
7367
  }
7184
7368
  return unpublishStream;
@@ -7192,72 +7376,72 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7192
7376
  }, {
7193
7377
  key: "publishStreams",
7194
7378
  value: function () {
7195
- var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(streams) {
7379
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(streams) {
7196
7380
  var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4;
7197
7381
  var floorRequestNeeded, _streams$screenShare5;
7198
- return _regenerator.default.wrap(function _callee28$(_context28) {
7199
- while (1) switch (_context28.prev = _context28.next) {
7382
+ return _regenerator.default.wrap(function _callee32$(_context32) {
7383
+ while (1) switch (_context32.prev = _context32.next) {
7200
7384
  case 0:
7201
7385
  this.checkMediaConnection();
7202
7386
  if (!(!streams.microphone && !streams.camera && !((_streams$screenShare = streams.screenShare) !== null && _streams$screenShare !== void 0 && _streams$screenShare.audio) && !((_streams$screenShare2 = streams.screenShare) !== null && _streams$screenShare2 !== void 0 && _streams$screenShare2.video))) {
7203
- _context28.next = 3;
7387
+ _context32.next = 3;
7204
7388
  break;
7205
7389
  }
7206
- return _context28.abrupt("return");
7390
+ return _context32.abrupt("return");
7207
7391
  case 3:
7208
7392
  floorRequestNeeded = false; // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting
7209
7393
  if (!(this.isMultistream && (_streams$screenShare3 = streams.screenShare) !== null && _streams$screenShare3 !== void 0 && _streams$screenShare3.audio)) {
7210
- _context28.next = 8;
7394
+ _context32.next = 8;
7211
7395
  break;
7212
7396
  }
7213
- _context28.next = 7;
7397
+ _context32.next = 7;
7214
7398
  return this.setLocalShareAudioStream(streams.screenShare.audio);
7215
7399
  case 7:
7216
7400
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
7217
7401
  case 8:
7218
7402
  if (!((_streams$screenShare4 = streams.screenShare) !== null && _streams$screenShare4 !== void 0 && _streams$screenShare4.video)) {
7219
- _context28.next = 12;
7403
+ _context32.next = 12;
7220
7404
  break;
7221
7405
  }
7222
- _context28.next = 11;
7406
+ _context32.next = 11;
7223
7407
  return this.setLocalShareVideoStream((_streams$screenShare5 = streams.screenShare) === null || _streams$screenShare5 === void 0 ? void 0 : _streams$screenShare5.video);
7224
7408
  case 11:
7225
7409
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
7226
7410
  case 12:
7227
7411
  if (!streams.microphone) {
7228
- _context28.next = 15;
7412
+ _context32.next = 15;
7229
7413
  break;
7230
7414
  }
7231
- _context28.next = 15;
7415
+ _context32.next = 15;
7232
7416
  return this.setLocalAudioStream(streams.microphone);
7233
7417
  case 15:
7234
7418
  if (!streams.camera) {
7235
- _context28.next = 18;
7419
+ _context32.next = 18;
7236
7420
  break;
7237
7421
  }
7238
- _context28.next = 18;
7422
+ _context32.next = 18;
7239
7423
  return this.setLocalVideoStream(streams.camera);
7240
7424
  case 18:
7241
7425
  if (this.isMultistream) {
7242
- _context28.next = 21;
7426
+ _context32.next = 21;
7243
7427
  break;
7244
7428
  }
7245
- _context28.next = 21;
7429
+ _context32.next = 21;
7246
7430
  return this.updateTranscodedMediaConnection();
7247
7431
  case 21:
7248
7432
  if (!floorRequestNeeded) {
7249
- _context28.next = 24;
7433
+ _context32.next = 24;
7250
7434
  break;
7251
7435
  }
7252
- _context28.next = 24;
7436
+ _context32.next = 24;
7253
7437
  return this.enqueueScreenShareFloorRequest();
7254
7438
  case 24:
7255
7439
  case "end":
7256
- return _context28.stop();
7440
+ return _context32.stop();
7257
7441
  }
7258
- }, _callee28, this);
7442
+ }, _callee32, this);
7259
7443
  }));
7260
- function publishStreams(_x22) {
7444
+ function publishStreams(_x30) {
7261
7445
  return _publishStreams.apply(this, arguments);
7262
7446
  }
7263
7447
  return publishStreams;
@@ -7271,10 +7455,10 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7271
7455
  }, {
7272
7456
  key: "unpublishStreams",
7273
7457
  value: function () {
7274
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29(streams) {
7458
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(streams) {
7275
7459
  var promises, _iterator, _step, stream;
7276
- return _regenerator.default.wrap(function _callee29$(_context29) {
7277
- while (1) switch (_context29.prev = _context29.next) {
7460
+ return _regenerator.default.wrap(function _callee33$(_context33) {
7461
+ while (1) switch (_context33.prev = _context33.next) {
7278
7462
  case 0:
7279
7463
  this.checkMediaConnection();
7280
7464
  promises = [];
@@ -7305,7 +7489,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7305
7489
  if (!this.isMultistream) {
7306
7490
  promises.push(this.updateTranscodedMediaConnection());
7307
7491
  }
7308
- _context29.next = 7;
7492
+ _context33.next = 7;
7309
7493
  return _promise.default.all(promises);
7310
7494
  case 7:
7311
7495
  // we're allowing for the SDK to support just audio share as well
@@ -7320,11 +7504,11 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7320
7504
  }
7321
7505
  case 8:
7322
7506
  case "end":
7323
- return _context29.stop();
7507
+ return _context33.stop();
7324
7508
  }
7325
- }, _callee29, this);
7509
+ }, _callee33, this);
7326
7510
  }));
7327
- function unpublishStreams(_x23) {
7511
+ function unpublishStreams(_x31) {
7328
7512
  return _unpublishStreams.apply(this, arguments);
7329
7513
  }
7330
7514
  return unpublishStreams;
@@ -7372,27 +7556,27 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7372
7556
  }], [{
7373
7557
  key: "handleDeviceLogging",
7374
7558
  value: function () {
7375
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30() {
7559
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34() {
7376
7560
  var devices;
7377
- return _regenerator.default.wrap(function _callee30$(_context30) {
7378
- while (1) switch (_context30.prev = _context30.next) {
7561
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7562
+ while (1) switch (_context34.prev = _context34.next) {
7379
7563
  case 0:
7380
- _context30.prev = 0;
7381
- _context30.next = 3;
7564
+ _context34.prev = 0;
7565
+ _context34.next = 3;
7382
7566
  return (0, _mediaHelpers.getDevices)();
7383
7567
  case 3:
7384
- devices = _context30.sent;
7568
+ devices = _context34.sent;
7385
7569
  _util.default.handleDeviceLogging(devices);
7386
- _context30.next = 9;
7570
+ _context34.next = 9;
7387
7571
  break;
7388
7572
  case 7:
7389
- _context30.prev = 7;
7390
- _context30.t0 = _context30["catch"](0);
7573
+ _context34.prev = 7;
7574
+ _context34.t0 = _context34["catch"](0);
7391
7575
  case 9:
7392
7576
  case "end":
7393
- return _context30.stop();
7577
+ return _context34.stop();
7394
7578
  }
7395
- }, _callee30, null, [[0, 7]]);
7579
+ }, _callee34, null, [[0, 7]]);
7396
7580
  }));
7397
7581
  function handleDeviceLogging() {
7398
7582
  return _handleDeviceLogging.apply(this, arguments);