@webex/plugin-meetings 3.1.0-next.9 → 3.2.0

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 (181) hide show
  1. package/dist/annotation/annotation.types.d.ts +42 -0
  2. package/dist/annotation/constants.d.ts +31 -0
  3. package/dist/annotation/index.d.ts +117 -0
  4. package/dist/breakouts/breakout.d.ts +8 -0
  5. package/dist/breakouts/breakout.js +1 -1
  6. package/dist/breakouts/collection.d.ts +5 -0
  7. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  8. package/dist/breakouts/events.d.ts +8 -0
  9. package/dist/breakouts/index.d.ts +5 -0
  10. package/dist/breakouts/index.js +1 -1
  11. package/dist/breakouts/request.d.ts +22 -0
  12. package/dist/breakouts/utils.d.ts +15 -0
  13. package/dist/common/browser-detection.d.ts +9 -0
  14. package/dist/common/collection.d.ts +48 -0
  15. package/dist/common/config.d.ts +2 -0
  16. package/dist/common/errors/captcha-error.d.ts +15 -0
  17. package/dist/common/errors/intent-to-join.d.ts +16 -0
  18. package/dist/common/errors/join-meeting.d.ts +17 -0
  19. package/dist/common/errors/media.d.ts +15 -0
  20. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  21. package/dist/common/errors/parameter.d.ts +15 -0
  22. package/dist/common/errors/password-error.d.ts +15 -0
  23. package/dist/common/errors/permission.d.ts +14 -0
  24. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  25. package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
  26. package/dist/common/errors/reconnection-in-progress.js +34 -0
  27. package/dist/common/errors/reconnection-in-progress.js.map +1 -0
  28. package/dist/common/errors/reconnection.d.ts +15 -0
  29. package/dist/common/errors/stats.d.ts +15 -0
  30. package/dist/common/errors/webex-errors.d.ts +93 -0
  31. package/dist/common/errors/webex-meetings-error.d.ts +20 -0
  32. package/dist/common/events/events-scope.d.ts +17 -0
  33. package/dist/common/events/events.d.ts +12 -0
  34. package/dist/common/events/trigger-proxy.d.ts +2 -0
  35. package/dist/common/events/util.d.ts +2 -0
  36. package/dist/common/logs/logger-config.d.ts +2 -0
  37. package/dist/common/logs/logger-proxy.d.ts +2 -0
  38. package/dist/common/logs/request.d.ts +36 -0
  39. package/dist/common/queue.d.ts +34 -0
  40. package/dist/config.d.ts +73 -0
  41. package/dist/constants.d.ts +1088 -0
  42. package/dist/constants.js +6 -3
  43. package/dist/constants.js.map +1 -1
  44. package/dist/controls-options-manager/constants.d.ts +4 -0
  45. package/dist/controls-options-manager/enums.d.ts +15 -0
  46. package/dist/controls-options-manager/index.d.ts +136 -0
  47. package/dist/controls-options-manager/types.d.ts +43 -0
  48. package/dist/controls-options-manager/util.d.ts +1 -0
  49. package/dist/index.d.ts +7 -0
  50. package/dist/interceptors/index.d.ts +2 -0
  51. package/dist/interceptors/locusRetry.d.ts +27 -0
  52. package/dist/interpretation/collection.d.ts +5 -0
  53. package/dist/interpretation/index.d.ts +5 -0
  54. package/dist/interpretation/index.js +1 -1
  55. package/dist/interpretation/siLanguage.d.ts +5 -0
  56. package/dist/interpretation/siLanguage.js +1 -1
  57. package/dist/locus-info/controlsUtils.d.ts +2 -0
  58. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
  59. package/dist/locus-info/fullState.d.ts +2 -0
  60. package/dist/locus-info/hostUtils.d.ts +2 -0
  61. package/dist/locus-info/index.d.ts +322 -0
  62. package/dist/locus-info/infoUtils.d.ts +2 -0
  63. package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
  64. package/dist/locus-info/parser.d.ts +272 -0
  65. package/dist/locus-info/selfUtils.d.ts +2 -0
  66. package/dist/media/MediaConnectionAwaiter.d.ts +61 -0
  67. package/dist/media/index.d.ts +34 -0
  68. package/dist/media/properties.d.ts +93 -0
  69. package/dist/media/util.d.ts +2 -0
  70. package/dist/mediaQualityMetrics/config.d.ts +241 -0
  71. package/dist/mediaQualityMetrics/config.js +10 -10
  72. package/dist/mediaQualityMetrics/config.js.map +1 -1
  73. package/dist/meeting/in-meeting-actions.d.ts +167 -0
  74. package/dist/meeting/index.d.ts +1825 -0
  75. package/dist/meeting/index.js +112 -64
  76. package/dist/meeting/index.js.map +1 -1
  77. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  78. package/dist/meeting/locusMediaRequest.js +27 -0
  79. package/dist/meeting/locusMediaRequest.js.map +1 -1
  80. package/dist/meeting/muteState.d.ts +178 -0
  81. package/dist/meeting/request.d.ts +295 -0
  82. package/dist/meeting/request.type.d.ts +11 -0
  83. package/dist/meeting/state.d.ts +9 -0
  84. package/dist/meeting/util.d.ts +119 -0
  85. package/dist/meeting/util.js +0 -16
  86. package/dist/meeting/util.js.map +1 -1
  87. package/dist/meeting/voicea-meeting.d.ts +16 -0
  88. package/dist/meeting/voicea-meeting.js +37 -49
  89. package/dist/meeting/voicea-meeting.js.map +1 -1
  90. package/dist/meeting-info/collection.d.ts +20 -0
  91. package/dist/meeting-info/index.d.ts +69 -0
  92. package/dist/meeting-info/meeting-info-v2.d.ts +123 -0
  93. package/dist/meeting-info/request.d.ts +22 -0
  94. package/dist/meeting-info/util.d.ts +2 -0
  95. package/dist/meeting-info/utilv2.d.ts +2 -0
  96. package/dist/meetings/collection.d.ts +40 -0
  97. package/dist/meetings/index.d.ts +398 -0
  98. package/dist/meetings/index.js +12 -28
  99. package/dist/meetings/index.js.map +1 -1
  100. package/dist/meetings/meetings.types.d.ts +4 -0
  101. package/dist/meetings/request.d.ts +27 -0
  102. package/dist/meetings/util.d.ts +18 -0
  103. package/dist/member/index.d.ts +160 -0
  104. package/dist/member/types.d.ts +32 -0
  105. package/dist/member/util.d.ts +2 -0
  106. package/dist/members/collection.d.ts +29 -0
  107. package/dist/members/index.d.ts +353 -0
  108. package/dist/members/request.d.ts +114 -0
  109. package/dist/members/types.d.ts +25 -0
  110. package/dist/members/util.d.ts +215 -0
  111. package/dist/metrics/constants.d.ts +70 -0
  112. package/dist/metrics/index.d.ts +45 -0
  113. package/dist/multistream/mediaRequestManager.d.ts +119 -0
  114. package/dist/multistream/receiveSlot.d.ts +68 -0
  115. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  116. package/dist/multistream/remoteMedia.d.ts +72 -0
  117. package/dist/multistream/remoteMediaGroup.d.ts +49 -0
  118. package/dist/multistream/remoteMediaManager.d.ts +300 -0
  119. package/dist/multistream/sendSlotManager.d.ts +69 -0
  120. package/dist/networkQualityMonitor/index.d.ts +70 -0
  121. package/dist/personal-meeting-room/index.d.ts +47 -0
  122. package/dist/personal-meeting-room/request.d.ts +14 -0
  123. package/dist/personal-meeting-room/util.d.ts +2 -0
  124. package/dist/reachability/clusterReachability.d.ts +110 -0
  125. package/dist/reachability/index.d.ts +109 -0
  126. package/dist/reachability/index.js +88 -9
  127. package/dist/reachability/index.js.map +1 -1
  128. package/dist/reachability/request.d.ts +39 -0
  129. package/dist/reachability/util.d.ts +15 -0
  130. package/dist/reactions/constants.d.ts +3 -0
  131. package/dist/reactions/reactions.d.ts +4 -0
  132. package/dist/reactions/reactions.type.d.ts +52 -0
  133. package/dist/reconnection-manager/index.d.ts +136 -0
  134. package/dist/recording-controller/enums.d.ts +7 -0
  135. package/dist/recording-controller/index.d.ts +207 -0
  136. package/dist/recording-controller/util.d.ts +14 -0
  137. package/dist/roap/index.d.ts +86 -0
  138. package/dist/roap/request.d.ts +39 -0
  139. package/dist/roap/request.js +3 -27
  140. package/dist/roap/request.js.map +1 -1
  141. package/dist/roap/turnDiscovery.d.ts +155 -0
  142. package/dist/rtcMetrics/constants.d.ts +4 -0
  143. package/dist/rtcMetrics/index.d.ts +61 -0
  144. package/dist/statsAnalyzer/global.d.ts +36 -0
  145. package/dist/statsAnalyzer/index.d.ts +217 -0
  146. package/dist/statsAnalyzer/index.js +4 -2
  147. package/dist/statsAnalyzer/index.js.map +1 -1
  148. package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
  149. package/dist/statsAnalyzer/mqaUtil.js +14 -0
  150. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  151. package/dist/transcription/index.d.ts +64 -0
  152. package/dist/types/constants.d.ts +3 -1
  153. package/dist/types/mediaQualityMetrics/config.d.ts +8 -2
  154. package/dist/types/meeting/index.d.ts +10 -1
  155. package/dist/types/meeting/locusMediaRequest.d.ts +1 -0
  156. package/dist/types/meeting/voicea-meeting.d.ts +3 -2
  157. package/dist/types/meetings/index.d.ts +1 -16
  158. package/dist/types/reachability/index.d.ts +11 -0
  159. package/dist/webinar/collection.d.ts +16 -0
  160. package/dist/webinar/index.d.ts +5 -0
  161. package/dist/webinar/index.js +1 -1
  162. package/package.json +21 -21
  163. package/src/constants.ts +3 -2
  164. package/src/mediaQualityMetrics/config.ts +13 -7
  165. package/src/meeting/index.ts +73 -30
  166. package/src/meeting/locusMediaRequest.ts +31 -0
  167. package/src/meeting/util.ts +1 -16
  168. package/src/meeting/voicea-meeting.ts +44 -46
  169. package/src/meetings/index.ts +15 -27
  170. package/src/reachability/index.ts +60 -0
  171. package/src/roap/request.ts +1 -24
  172. package/src/statsAnalyzer/index.ts +6 -3
  173. package/src/statsAnalyzer/mqaUtil.ts +18 -0
  174. package/test/unit/spec/meeting/index.js +70 -33
  175. package/test/unit/spec/meeting/locusMediaRequest.ts +49 -0
  176. package/test/unit/spec/meeting/utils.js +0 -10
  177. package/test/unit/spec/meeting/voicea-meeting.ts +5 -14
  178. package/test/unit/spec/meetings/index.js +59 -17
  179. package/test/unit/spec/reachability/index.ts +266 -0
  180. package/test/unit/spec/roap/request.ts +0 -37
  181. package/test/unit/spec/stats-analyzer/index.js +89 -8
@@ -490,6 +490,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
490
490
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "turnDiscoverySkippedReason", void 0);
491
491
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "turnServerUsed", void 0);
492
492
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "areVoiceaEventsSetup", false);
493
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "isMoveToInProgress", false);
493
494
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "voiceaListenerCallbacks", (0, _defineProperty3.default)((0, _defineProperty3.default)((0, _defineProperty3.default)((0, _defineProperty3.default)({}, _internalPluginVoicea.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, function (payload) {
494
495
  _this.transcription.languageOptions = payload;
495
496
  _loggerProxy.default.logger.debug("".concat(_util.default.getScopeLog({
@@ -560,6 +561,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
560
561
  break;
561
562
  }
562
563
  });
564
+ /**
565
+ * This is a callback for the LLM event that is triggered when it comes online
566
+ * This method in turn will trigger an event to the developers that the LLM is connected
567
+ * @private
568
+ * @memberof Meeting
569
+ * @returns {null}
570
+ */
571
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "handleLLMOnline", function () {
572
+ // @ts-ignore
573
+ _this.webex.internal.llm.off('online', _this.handleLLMOnline);
574
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
575
+ file: 'meeting/index',
576
+ function: 'handleLLMOnline'
577
+ }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED, undefined);
578
+ });
563
579
  /**
564
580
  * Handles ROAP_FAILURE event from the webrtc media connection
565
581
  *
@@ -1972,10 +1988,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1972
1988
  */
1973
1989
  _this.remoteMediaManager = null;
1974
1990
  _this.localAudioStreamMuteStateHandler = function () {
1975
- _this.audio.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1991
+ var _this$audio;
1992
+ (_this$audio = _this.audio) === null || _this$audio === void 0 ? void 0 : _this$audio.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1976
1993
  };
1977
1994
  _this.localVideoStreamMuteStateHandler = function () {
1978
- _this.video.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1995
+ var _this$video;
1996
+ (_this$video = _this.video) === null || _this$video === void 0 ? void 0 : _this$video.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1979
1997
  };
1980
1998
 
1981
1999
  // The handling of output track changes should be done inside
@@ -3504,6 +3522,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3504
3522
  }
3505
3523
  });
3506
3524
  }
3525
+ _this19.updateLLMConnection();
3507
3526
  });
3508
3527
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
3509
3528
  var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
@@ -4291,6 +4310,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4291
4310
  key: "setLocalAudioStream",
4292
4311
  value: (function () {
4293
4312
  var _setLocalAudioStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(localStream) {
4313
+ var _this$audio2;
4294
4314
  var oldStream;
4295
4315
  return _regenerator.default.wrap(function _callee11$(_context11) {
4296
4316
  while (1) switch (_context11.prev = _context11.next) {
@@ -4302,7 +4322,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4302
4322
 
4303
4323
  // we don't update this.mediaProperties.mediaDirection.sendAudio, because we always keep it as true to avoid extra SDP exchanges
4304
4324
  this.mediaProperties.setLocalAudioStream(localStream);
4305
- this.audio.handleLocalStreamChange(this);
4325
+ (_this$audio2 = this.audio) === null || _this$audio2 === void 0 ? void 0 : _this$audio2.handleLocalStreamChange(this);
4306
4326
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
4307
4327
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
4308
4328
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
@@ -4338,6 +4358,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4338
4358
  key: "setLocalVideoStream",
4339
4359
  value: (function () {
4340
4360
  var _setLocalVideoStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(localStream) {
4361
+ var _this$video2;
4341
4362
  var oldStream;
4342
4363
  return _regenerator.default.wrap(function _callee12$(_context12) {
4343
4364
  while (1) switch (_context12.prev = _context12.next) {
@@ -4349,7 +4370,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4349
4370
 
4350
4371
  // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges
4351
4372
  this.mediaProperties.setLocalVideoStream(localStream);
4352
- this.video.handleLocalStreamChange(this);
4373
+ (_this$video2 = this.video) === null || _this$video2 === void 0 ? void 0 : _this$video2.handleLocalStreamChange(this);
4353
4374
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
4354
4375
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
4355
4376
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
@@ -5111,10 +5132,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5111
5132
  key: "isTranscriptionSupported",
5112
5133
  value: function isTranscriptionSupported() {
5113
5134
  var _this$locusInfo$contr;
5114
- if ((_this$locusInfo$contr = this.locusInfo.controls.transcribe) !== null && _this$locusInfo$contr !== void 0 && _this$locusInfo$contr.transcribing) {
5135
+ if ((_this$locusInfo$contr = this.locusInfo.controls.transcribe) !== null && _this$locusInfo$contr !== void 0 && _this$locusInfo$contr.caption) {
5115
5136
  return true;
5116
5137
  }
5117
- _loggerProxy.default.logger.error('Meeting:index#isTranscriptionSupported --> Webex Assistant is not enabled/supported');
5138
+ _loggerProxy.default.logger.error('Meeting:index#isTranscriptionSupported --> Closed Captions is not enabled/supported');
5118
5139
  return false;
5119
5140
  }
5120
5141
 
@@ -5310,7 +5331,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5310
5331
  function: 'triggerStopReceivingTranscriptionEvent'
5311
5332
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_RECEIVING_TRANSCRIPTION);
5312
5333
  }
5313
-
5334
+ }, {
5335
+ key: "join",
5336
+ value: (
5314
5337
  /**
5315
5338
  * Specify joining via audio (option: pstn), video, screenshare
5316
5339
  * @param {JoinOptions} options A configurable options object for joining a meeting
@@ -5323,9 +5346,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5323
5346
  * if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop
5324
5347
  * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
5325
5348
  */
5326
- }, {
5327
- key: "join",
5328
- value: (function () {
5349
+ function () {
5329
5350
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5330
5351
  var _this31 = this;
5331
5352
  var options,
@@ -5518,6 +5539,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5518
5539
  }).then(function (join) {
5519
5540
  // @ts-ignore - config coming from registerPlugin
5520
5541
  if (_this31.config.enableAutomaticLLM) {
5542
+ // @ts-ignore
5543
+ _this31.webex.internal.llm.on('online', _this31.handleLLMOnline);
5521
5544
  _this31.updateLLMConnection().catch(function (error) {
5522
5545
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5523
5546
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
@@ -5527,10 +5550,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5527
5550
  });
5528
5551
  }).then(function () {
5529
5552
  _loggerProxy.default.logger.info('Meeting:index#join --> Transcription Socket Connection Success');
5530
- _triggerProxy.default.trigger(_this31, {
5531
- file: 'meeting/index',
5532
- function: 'join'
5533
- }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED, undefined);
5534
5553
  });
5535
5554
  }
5536
5555
  return join;
@@ -5794,22 +5813,41 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5794
5813
  receiveShare: true
5795
5814
  }
5796
5815
  };
5797
- _this35.cleanupLocalStreams();
5798
5816
  _this35.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
5799
5817
  _this35.mediaProperties.unsetRemoteMedia();
5800
5818
 
5801
- // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the DX answers the meeting
5802
- // once the DX answers we establish connection back the media server with only receiveShare enabled
5803
- // @ts-ignore - reconnectMedia does not accept any argument
5819
+ // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting
5820
+ // once the device answers we close the old connection and create new media server connection with only share enabled
5821
+ if (!_this35.statsAnalyzer) {
5822
+ _context20.next = 10;
5823
+ break;
5824
+ }
5804
5825
  _context20.next = 10;
5805
- return _this35.reconnectionManager.reconnectMedia(mediaSettings).then(function () {
5806
- _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
5807
- });
5826
+ return _this35.statsAnalyzer.stopAnalyzer();
5808
5827
  case 10:
5809
- _context20.next = 16;
5810
- break;
5828
+ _context20.next = 12;
5829
+ return _this35.closeRemoteStreams();
5811
5830
  case 12:
5812
- _context20.prev = 12;
5831
+ _context20.next = 14;
5832
+ return _this35.closePeerConnections();
5833
+ case 14:
5834
+ _this35.cleanupLocalStreams();
5835
+ _this35.unsetRemoteStreams();
5836
+ _this35.unsetPeerConnections();
5837
+ _this35.reconnectionManager.cleanUp();
5838
+ _context20.next = 20;
5839
+ return _this35.addMedia({
5840
+ audioEnabled: false,
5841
+ videoEnabled: false,
5842
+ shareVideoEnabled: true
5843
+ });
5844
+ case 20:
5845
+ _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
5846
+ _this35.isMoveToInProgress = false;
5847
+ _context20.next = 29;
5848
+ break;
5849
+ case 24:
5850
+ _context20.prev = 24;
5813
5851
  _context20.t0 = _context20["catch"](0);
5814
5852
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
5815
5853
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
@@ -5818,13 +5856,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5818
5856
  reason: _context20.t0.message,
5819
5857
  stack: _context20.t0.stack
5820
5858
  });
5821
- case 16:
5859
+ _this35.isMoveToInProgress = false;
5860
+ case 29:
5822
5861
  case "end":
5823
5862
  return _context20.stop();
5824
5863
  }
5825
- }, _callee20, null, [[0, 12]]);
5864
+ }, _callee20, null, [[0, 24]]);
5826
5865
  })));
5827
5866
  _loggerProxy.default.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
5867
+
5868
+ // TODO: Check with locus if SELF_OBSERVING event would ever be not emitted
5869
+ // If yes, introduce a timeout mechanism
5870
+ this.isMoveToInProgress = true;
5828
5871
  return _util2.default.joinMeetingOptions(this, {
5829
5872
  resourceId: resourceId,
5830
5873
  moveToResource: true
@@ -5839,6 +5882,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5839
5882
  stack: error.stack
5840
5883
  });
5841
5884
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
5885
+ _this35.isMoveToInProgress = false;
5842
5886
  return _promise.default.reject(error);
5843
5887
  });
5844
5888
  }
@@ -6322,7 +6366,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6322
6366
  /**
6323
6367
  * Performs TURN discovery as a separate call to the Locus /media API
6324
6368
  *
6325
- * @param {boolean} isRetry
6369
+ * @param {boolean} isReconnecting
6326
6370
  * @param {boolean} isForced
6327
6371
  * @returns {Promise}
6328
6372
  */
@@ -6330,7 +6374,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6330
6374
  }, {
6331
6375
  key: "doTurnDiscovery",
6332
6376
  value: (function () {
6333
- var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(isRetry, isForced) {
6377
+ var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(isReconnecting, isForced) {
6334
6378
  var cdl, turnDiscoveryResult;
6335
6379
  return _regenerator.default.wrap(function _callee28$(_context28) {
6336
6380
  while (1) switch (_context28.prev = _context28.next) {
@@ -6341,7 +6385,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6341
6385
  name: 'internal.client.add-media.turn-discovery.start'
6342
6386
  });
6343
6387
  _context28.next = 4;
6344
- return this.roap.doTurnDiscovery(this, isRetry, isForced);
6388
+ return this.roap.doTurnDiscovery(this, isReconnecting, isForced);
6345
6389
  case 4:
6346
6390
  turnDiscoveryResult = _context28.sent;
6347
6391
  this.turnDiscoverySkippedReason = turnDiscoveryResult === null || turnDiscoveryResult === void 0 ? void 0 : turnDiscoveryResult.turnDiscoverySkippedReason;
@@ -6386,30 +6430,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6386
6430
  key: "establishMediaConnection",
6387
6431
  value: (function () {
6388
6432
  var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
6389
- var LOG_HEADER, isRetry, _yield$this$doTurnDis, mc;
6433
+ var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc;
6390
6434
  return _regenerator.default.wrap(function _callee29$(_context29) {
6391
6435
  while (1) switch (_context29.prev = _context29.next) {
6392
6436
  case 0:
6393
6437
  LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';
6394
- isRetry = this.retriedWithTurnServer;
6395
- _context29.prev = 2;
6438
+ isReconnecting = this.isMoveToInProgress || this.retriedWithTurnServer; // We are forcing turn discovery if the case is moveTo and a turn server was used already
6439
+ if (this.isMoveToInProgress && this.turnServerUsed) {
6440
+ isForced = true;
6441
+ }
6442
+ _context29.prev = 3;
6396
6443
  if (turnServerInfo) {
6397
- _context29.next = 8;
6444
+ _context29.next = 9;
6398
6445
  break;
6399
6446
  }
6400
- _context29.next = 6;
6401
- return this.doTurnDiscovery(isRetry, isForced);
6402
- case 6:
6447
+ _context29.next = 7;
6448
+ return this.doTurnDiscovery(isReconnecting, isForced);
6449
+ case 7:
6403
6450
  _yield$this$doTurnDis = _context29.sent;
6404
6451
  turnServerInfo = _yield$this$doTurnDis.turnServerInfo;
6405
- case 8:
6406
- _context29.next = 10;
6452
+ case 9:
6453
+ _context29.next = 11;
6407
6454
  return this.createMediaConnection(turnServerInfo, bundlePolicy);
6408
- case 10:
6455
+ case 11:
6409
6456
  mc = _context29.sent;
6410
6457
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created"));
6411
6458
  if (!this.isMultistream) {
6412
- _context29.next = 20;
6459
+ _context29.next = 21;
6413
6460
  break;
6414
6461
  }
6415
6462
  this.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(this.receiveSlotManager, this.mediaRequestManagers, remoteMediaManagerConfig);
@@ -6417,40 +6464,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6417
6464
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.InterpretationAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED);
6418
6465
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
6419
6466
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
6420
- _context29.next = 20;
6467
+ _context29.next = 21;
6421
6468
  return this.remoteMediaManager.start();
6422
- case 20:
6423
- _context29.next = 22;
6469
+ case 21:
6470
+ _context29.next = 23;
6424
6471
  return mc.initiateOffer();
6425
- case 22:
6426
- _context29.next = 24;
6472
+ case 23:
6473
+ _context29.next = 25;
6427
6474
  return this.waitForRemoteSDPAnswer();
6428
- case 24:
6475
+ case 25:
6429
6476
  this.handleMediaLogging(this.mediaProperties);
6430
- _context29.next = 31;
6477
+ _context29.next = 32;
6431
6478
  break;
6432
- case 27:
6433
- _context29.prev = 27;
6434
- _context29.t0 = _context29["catch"](2);
6479
+ case 28:
6480
+ _context29.prev = 28;
6481
+ _context29.t0 = _context29["catch"](3);
6435
6482
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _context29.t0);
6436
6483
  throw _context29.t0;
6437
- case 31:
6438
- _context29.prev = 31;
6439
- _context29.next = 34;
6484
+ case 32:
6485
+ _context29.prev = 32;
6486
+ _context29.next = 35;
6440
6487
  return this.waitForMediaConnectionConnected();
6441
- case 34:
6442
- _context29.next = 40;
6488
+ case 35:
6489
+ _context29.next = 41;
6443
6490
  break;
6444
- case 36:
6445
- _context29.prev = 36;
6446
- _context29.t1 = _context29["catch"](31);
6447
- _context29.next = 40;
6491
+ case 37:
6492
+ _context29.prev = 37;
6493
+ _context29.t1 = _context29["catch"](32);
6494
+ _context29.next = 41;
6448
6495
  return this.handleWaitForMediaConnectionConnectedError(_context29.t1, remoteMediaManagerConfig, bundlePolicy);
6449
- case 40:
6496
+ case 41:
6450
6497
  case "end":
6451
6498
  return _context29.stop();
6452
6499
  }
6453
- }, _callee29, this, [[2, 27], [31, 36]]);
6500
+ }, _callee29, this, [[3, 28], [32, 37]]);
6454
6501
  }));
6455
6502
  function establishMediaConnection(_x28, _x29, _x30, _x31) {
6456
6503
  return _establishMediaConnection.apply(this, arguments);
@@ -6677,6 +6724,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6677
6724
  });
6678
6725
  this.locusMediaRequest = new _locusMediaRequest.LocusMediaRequest({
6679
6726
  correlationId: this.correlationId,
6727
+ meetingId: this.id,
6680
6728
  device: {
6681
6729
  url: this.deviceUrl,
6682
6730
  // @ts-ignore
@@ -6875,7 +6923,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6875
6923
  */
6876
6924
  function () {
6877
6925
  var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
6878
- var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled;
6926
+ var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
6879
6927
  return _regenerator.default.wrap(function _callee33$(_context33) {
6880
6928
  while (1) switch (_context33.prev = _context33.next) {
6881
6929
  case 0:
@@ -6910,7 +6958,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6910
6958
  if (audioEnabled !== undefined) {
6911
6959
  this.mediaProperties.mediaDirection.sendAudio = audioEnabled;
6912
6960
  this.mediaProperties.mediaDirection.receiveAudio = audioEnabled;
6913
- this.audio.enable(this, audioEnabled);
6961
+ (_this$audio3 = this.audio) === null || _this$audio3 === void 0 ? void 0 : _this$audio3.enable(this, audioEnabled);
6914
6962
  if (this.isMultistream) {
6915
6963
  this.sendSlotManager.setActive(_internalMediaCore.MediaType.AudioMain, audioEnabled);
6916
6964
  }
@@ -6918,7 +6966,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6918
6966
  if (videoEnabled !== undefined) {
6919
6967
  this.mediaProperties.mediaDirection.sendVideo = videoEnabled;
6920
6968
  this.mediaProperties.mediaDirection.receiveVideo = videoEnabled;
6921
- this.video.enable(this, videoEnabled);
6969
+ (_this$video3 = this.video) === null || _this$video3 === void 0 ? void 0 : _this$video3.enable(this, videoEnabled);
6922
6970
  if (this.isMultistream) {
6923
6971
  this.sendSlotManager.setActive(_internalMediaCore.MediaType.VideoMain, videoEnabled);
6924
6972
  }