@webex/plugin-meetings 3.1.0 → 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 (205) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/common/errors/reconnection-not-started.js +46 -0
  4. package/dist/common/errors/reconnection-not-started.js.map +1 -0
  5. package/dist/constants.js +16 -5
  6. package/dist/constants.js.map +1 -1
  7. package/dist/index.js +80 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/interpretation/index.js +1 -1
  10. package/dist/interpretation/siLanguage.js +1 -1
  11. package/dist/locus-info/controlsUtils.js +7 -1
  12. package/dist/locus-info/controlsUtils.js.map +1 -1
  13. package/dist/locus-info/index.js +10 -0
  14. package/dist/locus-info/index.js.map +1 -1
  15. package/dist/media/properties.js +102 -57
  16. package/dist/media/properties.js.map +1 -1
  17. package/dist/mediaQualityMetrics/config.js +10 -10
  18. package/dist/mediaQualityMetrics/config.js.map +1 -1
  19. package/dist/meeting/in-meeting-actions.js +6 -0
  20. package/dist/meeting/in-meeting-actions.js.map +1 -1
  21. package/dist/meeting/index.js +564 -475
  22. package/dist/meeting/index.js.map +1 -1
  23. package/dist/meeting/locusMediaRequest.js +27 -0
  24. package/dist/meeting/locusMediaRequest.js.map +1 -1
  25. package/dist/meeting/util.js +9 -16
  26. package/dist/meeting/util.js.map +1 -1
  27. package/dist/meeting/voicea-meeting.js +37 -49
  28. package/dist/meeting/voicea-meeting.js.map +1 -1
  29. package/dist/meeting-info/util.js +304 -267
  30. package/dist/meeting-info/util.js.map +1 -1
  31. package/dist/meeting-info/utilv2.js +334 -298
  32. package/dist/meeting-info/utilv2.js.map +1 -1
  33. package/dist/meetings/index.js +12 -28
  34. package/dist/meetings/index.js.map +1 -1
  35. package/dist/reachability/index.js +88 -9
  36. package/dist/reachability/index.js.map +1 -1
  37. package/dist/reconnection-manager/index.js +138 -109
  38. package/dist/reconnection-manager/index.js.map +1 -1
  39. package/dist/roap/request.js +3 -27
  40. package/dist/roap/request.js.map +1 -1
  41. package/dist/statsAnalyzer/index.js +8 -2
  42. package/dist/statsAnalyzer/index.js.map +1 -1
  43. package/dist/statsAnalyzer/mqaUtil.js +17 -0
  44. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  45. package/dist/types/annotation/annotation.types.d.ts +42 -0
  46. package/dist/types/annotation/constants.d.ts +31 -0
  47. package/dist/types/annotation/index.d.ts +117 -0
  48. package/dist/types/breakouts/breakout.d.ts +8 -0
  49. package/dist/types/breakouts/collection.d.ts +5 -0
  50. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  51. package/dist/types/breakouts/events.d.ts +8 -0
  52. package/dist/types/breakouts/index.d.ts +5 -0
  53. package/dist/types/breakouts/request.d.ts +22 -0
  54. package/dist/types/breakouts/utils.d.ts +15 -0
  55. package/dist/types/common/browser-detection.d.ts +9 -0
  56. package/dist/types/common/collection.d.ts +48 -0
  57. package/dist/types/common/config.d.ts +2 -0
  58. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  59. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  60. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  61. package/dist/types/common/errors/media.d.ts +15 -0
  62. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  63. package/dist/types/common/errors/parameter.d.ts +15 -0
  64. package/dist/types/common/errors/password-error.d.ts +15 -0
  65. package/dist/types/common/errors/permission.d.ts +14 -0
  66. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  67. package/dist/types/common/errors/reconnection-not-started.d.ts +13 -0
  68. package/dist/types/common/errors/reconnection.d.ts +15 -0
  69. package/dist/types/common/errors/stats.d.ts +15 -0
  70. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  71. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  72. package/dist/types/common/events/events-scope.d.ts +17 -0
  73. package/dist/types/common/events/events.d.ts +12 -0
  74. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  75. package/dist/types/common/events/util.d.ts +2 -0
  76. package/dist/types/common/logs/logger-config.d.ts +2 -0
  77. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  78. package/dist/types/common/logs/request.d.ts +36 -0
  79. package/dist/types/common/queue.d.ts +34 -0
  80. package/dist/types/config.d.ts +73 -0
  81. package/dist/types/constants.d.ts +1098 -0
  82. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  83. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  84. package/dist/types/controls-options-manager/index.d.ts +136 -0
  85. package/dist/types/controls-options-manager/types.d.ts +43 -0
  86. package/dist/types/controls-options-manager/util.d.ts +1 -0
  87. package/dist/types/index.d.ts +19 -0
  88. package/dist/types/interceptors/index.d.ts +2 -0
  89. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  90. package/dist/types/interpretation/collection.d.ts +5 -0
  91. package/dist/types/interpretation/index.d.ts +5 -0
  92. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  93. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  94. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  95. package/dist/types/locus-info/fullState.d.ts +2 -0
  96. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  97. package/dist/types/locus-info/index.d.ts +322 -0
  98. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  99. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  100. package/dist/types/locus-info/parser.d.ts +272 -0
  101. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  102. package/dist/types/media/MediaConnectionAwaiter.d.ts +61 -0
  103. package/dist/types/media/index.d.ts +34 -0
  104. package/dist/types/media/properties.d.ts +117 -0
  105. package/dist/types/media/util.d.ts +2 -0
  106. package/dist/types/mediaQualityMetrics/config.d.ts +247 -0
  107. package/dist/types/meeting/in-meeting-actions.d.ts +173 -0
  108. package/dist/types/meeting/index.d.ts +1832 -0
  109. package/dist/types/meeting/locusMediaRequest.d.ts +75 -0
  110. package/dist/types/meeting/muteState.d.ts +178 -0
  111. package/dist/types/meeting/request.d.ts +295 -0
  112. package/dist/types/meeting/request.type.d.ts +11 -0
  113. package/dist/types/meeting/state.d.ts +9 -0
  114. package/dist/types/meeting/util.d.ts +122 -0
  115. package/dist/types/meeting/voicea-meeting.d.ts +17 -0
  116. package/dist/types/meeting-info/collection.d.ts +20 -0
  117. package/dist/types/meeting-info/index.d.ts +69 -0
  118. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  119. package/dist/types/meeting-info/request.d.ts +22 -0
  120. package/dist/types/meeting-info/util.d.ts +49 -0
  121. package/dist/types/meeting-info/utilv2.d.ts +65 -0
  122. package/dist/types/meetings/collection.d.ts +40 -0
  123. package/dist/types/meetings/index.d.ts +383 -0
  124. package/dist/types/meetings/meetings.types.d.ts +4 -0
  125. package/dist/types/meetings/request.d.ts +27 -0
  126. package/dist/types/meetings/util.d.ts +18 -0
  127. package/dist/types/member/index.d.ts +160 -0
  128. package/dist/types/member/types.d.ts +32 -0
  129. package/dist/types/member/util.d.ts +2 -0
  130. package/dist/types/members/collection.d.ts +29 -0
  131. package/dist/types/members/index.d.ts +353 -0
  132. package/dist/types/members/request.d.ts +114 -0
  133. package/dist/types/members/types.d.ts +25 -0
  134. package/dist/types/members/util.d.ts +215 -0
  135. package/dist/types/metrics/constants.d.ts +70 -0
  136. package/dist/types/metrics/index.d.ts +45 -0
  137. package/dist/types/multistream/mediaRequestManager.d.ts +119 -0
  138. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  139. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  140. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  141. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  142. package/dist/types/multistream/remoteMediaManager.d.ts +300 -0
  143. package/dist/types/multistream/sendSlotManager.d.ts +69 -0
  144. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  145. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  146. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  147. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  148. package/dist/types/reachability/clusterReachability.d.ts +110 -0
  149. package/dist/types/reachability/index.d.ts +120 -0
  150. package/dist/types/reachability/request.d.ts +39 -0
  151. package/dist/types/reachability/util.d.ts +15 -0
  152. package/dist/types/reactions/constants.d.ts +3 -0
  153. package/dist/types/reactions/reactions.d.ts +4 -0
  154. package/dist/types/reactions/reactions.type.d.ts +52 -0
  155. package/dist/types/reconnection-manager/index.d.ts +126 -0
  156. package/dist/types/recording-controller/enums.d.ts +7 -0
  157. package/dist/types/recording-controller/index.d.ts +207 -0
  158. package/dist/types/recording-controller/util.d.ts +14 -0
  159. package/dist/types/roap/index.d.ts +86 -0
  160. package/dist/types/roap/request.d.ts +39 -0
  161. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  162. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  163. package/dist/types/rtcMetrics/index.d.ts +61 -0
  164. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  165. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  166. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  167. package/dist/types/transcription/index.d.ts +64 -0
  168. package/dist/types/webinar/collection.d.ts +16 -0
  169. package/dist/types/webinar/index.d.ts +5 -0
  170. package/dist/webinar/index.js +1 -1
  171. package/package.json +22 -22
  172. package/src/common/errors/reconnection-not-started.ts +25 -0
  173. package/src/constants.ts +14 -5
  174. package/src/index.ts +30 -0
  175. package/src/locus-info/controlsUtils.ts +11 -0
  176. package/src/locus-info/index.ts +16 -0
  177. package/src/media/properties.ts +67 -15
  178. package/src/mediaQualityMetrics/config.ts +13 -7
  179. package/src/meeting/in-meeting-actions.ts +12 -0
  180. package/src/meeting/index.ts +144 -107
  181. package/src/meeting/locusMediaRequest.ts +31 -0
  182. package/src/meeting/util.ts +9 -16
  183. package/src/meeting/voicea-meeting.ts +44 -46
  184. package/src/meeting-info/util.ts +241 -233
  185. package/src/meeting-info/utilv2.ts +250 -244
  186. package/src/meetings/index.ts +15 -27
  187. package/src/reachability/index.ts +60 -0
  188. package/src/reconnection-manager/index.ts +128 -105
  189. package/src/roap/request.ts +1 -24
  190. package/src/statsAnalyzer/index.ts +10 -3
  191. package/src/statsAnalyzer/mqaUtil.ts +23 -0
  192. package/test/unit/spec/locus-info/controlsUtils.js +20 -0
  193. package/test/unit/spec/locus-info/index.js +21 -0
  194. package/test/unit/spec/media/properties.ts +145 -140
  195. package/test/unit/spec/meeting/in-meeting-actions.ts +6 -0
  196. package/test/unit/spec/meeting/index.js +271 -105
  197. package/test/unit/spec/meeting/locusMediaRequest.ts +49 -0
  198. package/test/unit/spec/meeting/utils.js +3 -10
  199. package/test/unit/spec/meeting/voicea-meeting.ts +5 -14
  200. package/test/unit/spec/meetings/index.js +59 -17
  201. package/test/unit/spec/reachability/index.ts +266 -0
  202. package/test/unit/spec/reconnection-manager/index.js +127 -39
  203. package/test/unit/spec/roap/request.ts +0 -37
  204. package/test/unit/spec/stats-analyzer/index.js +100 -8
  205. package/src/common/errors/reconnection-in-progress.ts +0 -8
@@ -54,6 +54,7 @@ var _muteState = require("./muteState");
54
54
  var _locusInfo = _interopRequireDefault(require("../locus-info"));
55
55
  var _metrics = _interopRequireDefault(require("../metrics"));
56
56
  var _reconnectionManager = _interopRequireDefault(require("../reconnection-manager"));
57
+ var _reconnectionNotStarted = _interopRequireDefault(require("../common/errors/reconnection-not-started"));
57
58
  var _request = _interopRequireDefault(require("./request"));
58
59
  var _index2 = _interopRequireDefault(require("../members/index"));
59
60
  var _util2 = _interopRequireDefault(require("./util"));
@@ -64,8 +65,6 @@ var _util6 = _interopRequireDefault(require("../media/util"));
64
65
  var _reactions = require("../reactions/reactions");
65
66
  var _passwordError = _interopRequireDefault(require("../common/errors/password-error"));
66
67
  var _captchaError = _interopRequireDefault(require("../common/errors/captcha-error"));
67
- var _reconnection = _interopRequireDefault(require("../common/errors/reconnection"));
68
- var _reconnectionInProgress = _interopRequireDefault(require("../common/errors/reconnection-in-progress"));
69
68
  var _constants = require("../constants");
70
69
  var _constants2 = _interopRequireDefault(require("../metrics/constants"));
71
70
  var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
@@ -491,6 +490,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
491
490
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "turnDiscoverySkippedReason", void 0);
492
491
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "turnServerUsed", void 0);
493
492
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "areVoiceaEventsSetup", false);
493
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "isMoveToInProgress", false);
494
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) {
495
495
  _this.transcription.languageOptions = payload;
496
496
  _loggerProxy.default.logger.debug("".concat(_util.default.getScopeLog({
@@ -529,6 +529,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
529
529
  // used for waiting for a response
530
530
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "sdpResponseTimer", void 0);
531
531
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "hasMediaConnectionConnectedAtLeastOnce", void 0);
532
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "joinWithMediaRetryInfo", void 0);
532
533
  /**
533
534
  * Callback called when a relay event is received from meeting LLM Connection
534
535
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -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
@@ -2041,6 +2059,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2041
2059
  * @memberof Meeting
2042
2060
  */
2043
2061
  _this.hasMediaConnectionConnectedAtLeastOnce = false;
2062
+
2063
+ /**
2064
+ * Information needed for a retry of a call to joinWithMedia
2065
+ * @instance
2066
+ * @type {{isRetry: boolean; prevJoinResponse?: any}}
2067
+ * @private
2068
+ * @memberof Meeting
2069
+ */
2070
+ _this.joinWithMediaRetryInfo = {
2071
+ isRetry: false,
2072
+ prevJoinResponse: undefined
2073
+ };
2044
2074
  return _this;
2045
2075
  }
2046
2076
 
@@ -2935,24 +2965,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2935
2965
  }
2936
2966
  }
2937
2967
  });
2938
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref12) {
2939
- var breakout = _ref12.breakout;
2968
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref12) {
2969
+ var enable = _ref12.enable;
2970
+ _triggerProxy.default.trigger(_this13, {
2971
+ file: 'meeting/index',
2972
+ function: 'setupLocusControlsListener'
2973
+ }, _constants.EVENT_TRIGGERS.MEETING_MANUAL_CAPTION_UPDATED, {
2974
+ enable: enable
2975
+ });
2976
+ });
2977
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref13) {
2978
+ var breakout = _ref13.breakout;
2940
2979
  _this13.breakouts.updateBreakout(breakout);
2941
2980
  _triggerProxy.default.trigger(_this13, {
2942
2981
  file: 'meeting/index',
2943
2982
  function: 'setupLocusControlsListener'
2944
2983
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
2945
2984
  });
2946
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref13) {
2947
- var interpretation = _ref13.interpretation;
2985
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref14) {
2986
+ var interpretation = _ref14.interpretation;
2948
2987
  _this13.simultaneousInterpretation.updateInterpretation(interpretation);
2949
2988
  _triggerProxy.default.trigger(_this13, {
2950
2989
  file: 'meeting/index',
2951
2990
  function: 'setupLocusControlsListener'
2952
2991
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
2953
2992
  });
2954
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref14) {
2955
- var entryExitTone = _ref14.entryExitTone;
2993
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref15) {
2994
+ var entryExitTone = _ref15.entryExitTone;
2956
2995
  _triggerProxy.default.trigger(_this13, {
2957
2996
  file: 'meeting/index',
2958
2997
  function: 'setupLocusControlsListener'
@@ -2960,8 +2999,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2960
2999
  entryExitTone: entryExitTone
2961
3000
  });
2962
3001
  });
2963
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref15) {
2964
- var state = _ref15.state;
3002
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref16) {
3003
+ var state = _ref16.state;
2965
3004
  _triggerProxy.default.trigger(_this13, {
2966
3005
  file: 'meeting/index',
2967
3006
  function: 'setupLocusControlsListener'
@@ -2969,8 +3008,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2969
3008
  state: state
2970
3009
  });
2971
3010
  });
2972
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref16) {
2973
- var state = _ref16.state;
3011
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref17) {
3012
+ var state = _ref17.state;
2974
3013
  _triggerProxy.default.trigger(_this13, {
2975
3014
  file: 'meeting/index',
2976
3015
  function: 'setupLocusControlsListener'
@@ -2978,8 +3017,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2978
3017
  state: state
2979
3018
  });
2980
3019
  });
2981
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref17) {
2982
- var state = _ref17.state;
3020
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref18) {
3021
+ var state = _ref18.state;
2983
3022
  _triggerProxy.default.trigger(_this13, {
2984
3023
  file: 'meeting/index',
2985
3024
  function: 'setupLocusControlsListener'
@@ -2987,8 +3026,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2987
3026
  state: state
2988
3027
  });
2989
3028
  });
2990
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref18) {
2991
- var state = _ref18.state;
3029
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref19) {
3030
+ var state = _ref19.state;
2992
3031
  _triggerProxy.default.trigger(_this13, {
2993
3032
  file: 'meeting/index',
2994
3033
  function: 'setupLocusControlsListener'
@@ -2996,8 +3035,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2996
3035
  state: state
2997
3036
  });
2998
3037
  });
2999
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref19) {
3000
- var state = _ref19.state;
3038
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref20) {
3039
+ var state = _ref20.state;
3001
3040
  _triggerProxy.default.trigger(_this13, {
3002
3041
  file: 'meeting/index',
3003
3042
  function: 'setupLocusControlsListener'
@@ -3005,8 +3044,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3005
3044
  state: state
3006
3045
  });
3007
3046
  });
3008
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref20) {
3009
- var state = _ref20.state;
3047
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref21) {
3048
+ var state = _ref21.state;
3010
3049
  _triggerProxy.default.trigger(_this13, {
3011
3050
  file: 'meeting/index',
3012
3051
  function: 'setupLocusControlsListener'
@@ -3014,8 +3053,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3014
3053
  state: state
3015
3054
  });
3016
3055
  });
3017
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref21) {
3018
- var state = _ref21.state;
3056
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref22) {
3057
+ var state = _ref22.state;
3019
3058
  _triggerProxy.default.trigger(_this13, {
3020
3059
  file: 'meeting/index',
3021
3060
  function: 'setupLocusControlsListener'
@@ -3062,7 +3101,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3062
3101
  var _this14 = this;
3063
3102
  // Will get triggered on local and remote share
3064
3103
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3065
- var _ref22 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3104
+ var _ref23 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3066
3105
  var _payload$previous, _payload$previous2;
3067
3106
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, oldShareStatus, sendStartedSharingRemote, _this14$mediaProperti;
3068
3107
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3259,7 +3298,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3259
3298
  }, _callee8, null, [[26,, 30, 33]]);
3260
3299
  }));
3261
3300
  return function (_x8) {
3262
- return _ref22.apply(this, arguments);
3301
+ return _ref23.apply(this, arguments);
3263
3302
  };
3264
3303
  }());
3265
3304
  }
@@ -3350,8 +3389,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3350
3389
  });
3351
3390
  }
3352
3391
  });
3353
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref23) {
3354
- var isInitializing = _ref23.isInitializing;
3392
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref24) {
3393
+ var isInitializing = _ref24.isInitializing;
3355
3394
  _this17.updateMeetingActions();
3356
3395
  _this17.recordingController.setDisplayHints(_this17.userDisplayHints);
3357
3396
  _this17.recordingController.setUserPolicy(_this17.selfUserPolicies);
@@ -3483,9 +3522,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3483
3522
  }
3484
3523
  });
3485
3524
  }
3525
+ _this19.updateLLMConnection();
3486
3526
  });
3487
3527
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
3488
- var _ref24 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3528
+ var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3489
3529
  return _regenerator.default.wrap(function _callee9$(_context9) {
3490
3530
  while (1) switch (_context9.prev = _context9.next) {
3491
3531
  case 0:
@@ -3514,7 +3554,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3514
3554
  }, _callee9);
3515
3555
  }));
3516
3556
  return function (_x9) {
3517
- return _ref24.apply(this, arguments);
3557
+ return _ref25.apply(this, arguments);
3518
3558
  };
3519
3559
  }());
3520
3560
 
@@ -3619,7 +3659,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3619
3659
  }
3620
3660
  });
3621
3661
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
3622
- var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3662
+ var _ref26 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3623
3663
  return _regenerator.default.wrap(function _callee10$(_context10) {
3624
3664
  while (1) switch (_context10.prev = _context10.next) {
3625
3665
  case 0:
@@ -3679,7 +3719,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3679
3719
  }, _callee10, null, [[8, 14]]);
3680
3720
  }));
3681
3721
  return function (_x10) {
3682
- return _ref25.apply(this, arguments);
3722
+ return _ref26.apply(this, arguments);
3683
3723
  };
3684
3724
  }());
3685
3725
  }
@@ -3962,6 +4002,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3962
4002
  canStartTranscribing: _util2.default.canStartTranscribing(this.userDisplayHints),
3963
4003
  canStopTranscribing: _util2.default.canStopTranscribing(this.userDisplayHints),
3964
4004
  isClosedCaptionActive: _util2.default.isClosedCaptionActive(this.userDisplayHints),
4005
+ canStartManualCaption: _util2.default.canStartManualCaption(this.userDisplayHints),
4006
+ canStopManualCaption: _util2.default.canStopManualCaption(this.userDisplayHints),
4007
+ isManualCaptionActive: _util2.default.isManualCaptionActive(this.userDisplayHints),
3965
4008
  isSaveTranscriptsEnabled: _util2.default.isSaveTranscriptsEnabled(this.userDisplayHints),
3966
4009
  isWebexAssistantActive: _util2.default.isWebexAssistantActive(this.userDisplayHints),
3967
4010
  canViewCaptionPanel: _util2.default.canViewCaptionPanel(this.userDisplayHints),
@@ -4267,6 +4310,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4267
4310
  key: "setLocalAudioStream",
4268
4311
  value: (function () {
4269
4312
  var _setLocalAudioStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(localStream) {
4313
+ var _this$audio2;
4270
4314
  var oldStream;
4271
4315
  return _regenerator.default.wrap(function _callee11$(_context11) {
4272
4316
  while (1) switch (_context11.prev = _context11.next) {
@@ -4278,7 +4322,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4278
4322
 
4279
4323
  // we don't update this.mediaProperties.mediaDirection.sendAudio, because we always keep it as true to avoid extra SDP exchanges
4280
4324
  this.mediaProperties.setLocalAudioStream(localStream);
4281
- this.audio.handleLocalStreamChange(this);
4325
+ (_this$audio2 = this.audio) === null || _this$audio2 === void 0 ? void 0 : _this$audio2.handleLocalStreamChange(this);
4282
4326
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
4283
4327
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
4284
4328
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
@@ -4314,6 +4358,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4314
4358
  key: "setLocalVideoStream",
4315
4359
  value: (function () {
4316
4360
  var _setLocalVideoStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(localStream) {
4361
+ var _this$video2;
4317
4362
  var oldStream;
4318
4363
  return _regenerator.default.wrap(function _callee12$(_context12) {
4319
4364
  while (1) switch (_context12.prev = _context12.next) {
@@ -4325,7 +4370,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4325
4370
 
4326
4371
  // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges
4327
4372
  this.mediaProperties.setLocalVideoStream(localStream);
4328
- this.video.handleLocalStreamChange(this);
4373
+ (_this$video2 = this.video) === null || _this$video2 === void 0 ? void 0 : _this$video2.handleLocalStreamChange(this);
4329
4374
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
4330
4375
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
4331
4376
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
@@ -4886,11 +4931,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4886
4931
  mediaOptions,
4887
4932
  _options$joinOptions,
4888
4933
  joinOptions,
4934
+ _this$joinWithMediaRe,
4935
+ isRetry,
4936
+ prevJoinResponse,
4889
4937
  joined,
4938
+ joinResponse,
4890
4939
  turnServerInfo,
4891
4940
  turnDiscoverySkippedReason,
4892
4941
  turnDiscoveryRequest,
4893
- joinResponse,
4894
4942
  _yield$this$roap$hand,
4895
4943
  mediaResponse,
4896
4944
  _this$locusUrl,
@@ -4902,38 +4950,46 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4902
4950
  case 0:
4903
4951
  options = _args15.length > 0 && _args15[0] !== undefined ? _args15[0] : {};
4904
4952
  mediaOptions = options.mediaOptions, _options$joinOptions = options.joinOptions, joinOptions = _options$joinOptions === void 0 ? {} : _options$joinOptions;
4953
+ _this$joinWithMediaRe = this.joinWithMediaRetryInfo, isRetry = _this$joinWithMediaRe.isRetry, prevJoinResponse = _this$joinWithMediaRe.prevJoinResponse;
4905
4954
  if (mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.allowMediaInLobby) {
4906
- _context15.next = 4;
4955
+ _context15.next = 5;
4907
4956
  break;
4908
4957
  }
4909
4958
  return _context15.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
4910
- case 4:
4959
+ case 5:
4911
4960
  this.allowMediaInLobby = true;
4912
4961
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia called');
4913
4962
  joined = false;
4914
- _context15.prev = 7;
4915
- _context15.next = 10;
4963
+ joinResponse = prevJoinResponse;
4964
+ _context15.prev = 9;
4965
+ _context15.next = 12;
4916
4966
  return this.webex.meetings.reachability.getReachabilityResults();
4917
- case 10:
4967
+ case 12:
4918
4968
  joinOptions.reachability = _context15.sent;
4919
- _context15.next = 13;
4969
+ _context15.next = 15;
4920
4970
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
4921
- case 13:
4971
+ case 15:
4922
4972
  turnDiscoveryRequest = _context15.sent;
4923
4973
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
4924
4974
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
4925
- _context15.next = 18;
4975
+ if (joinResponse) {
4976
+ _context15.next = 23;
4977
+ break;
4978
+ }
4979
+ _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
4980
+ _context15.next = 22;
4926
4981
  return this.join(joinOptions);
4927
- case 18:
4982
+ case 22:
4928
4983
  joinResponse = _context15.sent;
4984
+ case 23:
4929
4985
  joined = true;
4930
4986
  if (!joinOptions.roapMessage) {
4931
- _context15.next = 29;
4987
+ _context15.next = 33;
4932
4988
  break;
4933
4989
  }
4934
- _context15.next = 23;
4990
+ _context15.next = 27;
4935
4991
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
4936
- case 23:
4992
+ case 27:
4937
4993
  _yield$this$roap$hand = _context15.sent;
4938
4994
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
4939
4995
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
@@ -4942,55 +4998,73 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4942
4998
  if (turnServerInfo === undefined) {
4943
4999
  this.roap.abortTurnDiscovery();
4944
5000
  }
4945
- case 29:
4946
- _context15.next = 31;
5001
+ case 33:
5002
+ _context15.next = 35;
4947
5003
  return this.addMedia(mediaOptions, turnServerInfo);
4948
- case 31:
5004
+ case 35:
4949
5005
  mediaResponse = _context15.sent;
5006
+ this.joinWithMediaRetryInfo = {
5007
+ isRetry: false,
5008
+ prevJoinResponse: undefined
5009
+ };
4950
5010
  return _context15.abrupt("return", {
4951
5011
  join: joinResponse,
4952
5012
  media: mediaResponse
4953
5013
  });
4954
- case 35:
4955
- _context15.prev = 35;
4956
- _context15.t0 = _context15["catch"](7);
5014
+ case 40:
5015
+ _context15.prev = 40;
5016
+ _context15.t0 = _context15["catch"](9);
4957
5017
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context15.t0);
4958
5018
  this.roap.abortTurnDiscovery();
4959
- if (!joined) {
4960
- _context15.next = 49;
5019
+ if (!(joined && isRetry)) {
5020
+ _context15.next = 54;
4961
5021
  break;
4962
5022
  }
4963
- _context15.prev = 40;
4964
- _context15.next = 43;
5023
+ _context15.prev = 45;
5024
+ _context15.next = 48;
4965
5025
  return this.leave({
4966
5026
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
4967
5027
  reason: 'joinWithMedia failure'
4968
5028
  });
4969
- case 43:
4970
- _context15.next = 49;
5029
+ case 48:
5030
+ _context15.next = 54;
4971
5031
  break;
4972
- case 45:
4973
- _context15.prev = 45;
4974
- _context15.t1 = _context15["catch"](40);
5032
+ case 50:
5033
+ _context15.prev = 50;
5034
+ _context15.t1 = _context15["catch"](45);
4975
5035
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context15.t1);
4976
5036
  leaveError = _context15.t1;
4977
- case 49:
5037
+ case 54:
4978
5038
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
4979
5039
  correlation_id: this.correlationId,
4980
5040
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
4981
5041
  // if join fails, we may end up with no locusUrl
4982
5042
  reason: _context15.t0.message,
4983
5043
  stack: _context15.t0.stack,
4984
- leaveErrorReason: (_leaveError = leaveError) === null || _leaveError === void 0 ? void 0 : _leaveError.message
5044
+ leaveErrorReason: (_leaveError = leaveError) === null || _leaveError === void 0 ? void 0 : _leaveError.message,
5045
+ isRetry: isRetry
4985
5046
  }, {
4986
5047
  type: _context15.t0.name
4987
5048
  });
5049
+ if (isRetry) {
5050
+ _context15.next = 60;
5051
+ break;
5052
+ }
5053
+ _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
5054
+ this.joinWithMediaRetryInfo.isRetry = true;
5055
+ this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
5056
+ return _context15.abrupt("return", this.joinWithMedia(options));
5057
+ case 60:
5058
+ this.joinWithMediaRetryInfo = {
5059
+ isRetry: false,
5060
+ prevJoinResponse: undefined
5061
+ };
4988
5062
  throw _context15.t0;
4989
- case 51:
5063
+ case 62:
4990
5064
  case "end":
4991
5065
  return _context15.stop();
4992
5066
  }
4993
- }, _callee15, this, [[7, 35], [40, 45]]);
5067
+ }, _callee15, this, [[9, 40], [45, 50]]);
4994
5068
  }));
4995
5069
  function joinWithMedia() {
4996
5070
  return _joinWithMedia.apply(this, arguments);
@@ -5019,66 +5093,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5019
5093
  if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
5020
5094
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
5021
5095
  }
5022
- try {
5023
- _loggerProxy.default.logger.info('Meeting:index#reconnect --> Validating reconnect ability.');
5024
- // @ts-ignore
5025
- this.reconnectionManager.validate();
5026
- } catch (error) {
5027
- // Unable to reconnect this call
5028
- if (error instanceof _reconnectionInProgress.default) {
5029
- _loggerProxy.default.logger.info('Meeting:index#reconnect --> Unable to reconnect, reconnection in progress.');
5030
- } else {
5031
- _loggerProxy.default.logger.log('Meeting:index#reconnect --> Unable to reconnect.', error);
5032
- }
5033
- return _promise.default.resolve();
5034
- }
5035
- _triggerProxy.default.trigger(this, {
5036
- file: 'meeting/index',
5037
- function: 'reconnect'
5038
- }, _constants.EVENT_TRIGGERS.MEETING_RECONNECTION_STARTING);
5039
- return this.reconnectionManager.reconnect(options).then(function () {
5040
- return _this28.waitForRemoteSDPAnswer();
5041
- }).then(function () {
5042
- return _this28.waitForMediaConnectionConnected();
5043
- }).then(function () {
5044
- _triggerProxy.default.trigger(_this28, {
5045
- file: 'meeting/index',
5046
- function: 'reconnect'
5047
- }, _constants.EVENT_TRIGGERS.MEETING_RECONNECTION_SUCCESS);
5048
- _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect success');
5049
-
5050
- // @ts-ignore
5051
- _this28.webex.internal.newMetrics.submitClientEvent({
5052
- name: 'client.media.recovered',
5053
- payload: {
5054
- recoveredBy: 'new'
5055
- },
5056
- options: {
5057
- meetingId: _this28.id
5096
+ return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5097
+ return _regenerator.default.wrap(function _callee16$(_context16) {
5098
+ while (1) switch (_context16.prev = _context16.next) {
5099
+ case 0:
5100
+ _context16.next = 2;
5101
+ return _this28.waitForRemoteSDPAnswer();
5102
+ case 2:
5103
+ _context16.next = 4;
5104
+ return _this28.waitForMediaConnectionConnected();
5105
+ case 4:
5106
+ case "end":
5107
+ return _context16.stop();
5058
5108
  }
5059
- });
5060
- _this28.reconnectionManager.setStatus(_constants.RECONNECTION.STATE.COMPLETE);
5109
+ }, _callee16);
5110
+ }))).then(function () {
5111
+ _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect success');
5061
5112
  }).catch(function (error) {
5062
- _triggerProxy.default.trigger(_this28, {
5063
- file: 'meeting/index',
5064
- function: 'reconnect'
5065
- }, _constants.EVENT_TRIGGERS.MEETING_RECONNECTION_FAILURE, {
5066
- error: new _reconnection.default('Reconnection failure event', error)
5067
- });
5113
+ if (error instanceof _reconnectionNotStarted.default) {
5114
+ _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect not started');
5115
+ return _promise.default.resolve();
5116
+ }
5068
5117
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5069
- _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_RECONNECT_FAILURE, {
5070
- correlation_id: _this28.correlationId,
5071
- locus_id: _this28.locusUrl.split('/').pop(),
5072
- reason: error.message,
5073
- stack: error.stack
5074
- });
5075
5118
  _this28.uploadLogs({
5076
5119
  file: 'meeting/index',
5077
5120
  function: 'reconnect'
5078
5121
  });
5079
- return _promise.default.reject(new _reconnection.default('Reconnection failure event', error));
5080
- }).finally(function () {
5081
- _this28.reconnectionManager.reset();
5122
+ return _promise.default.reject(error);
5082
5123
  });
5083
5124
  }
5084
5125
 
@@ -5091,10 +5132,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5091
5132
  key: "isTranscriptionSupported",
5092
5133
  value: function isTranscriptionSupported() {
5093
5134
  var _this$locusInfo$contr;
5094
- 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) {
5095
5136
  return true;
5096
5137
  }
5097
- _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');
5098
5139
  return false;
5099
5140
  }
5100
5141
 
@@ -5202,48 +5243,48 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5202
5243
  }, {
5203
5244
  key: "startTranscription",
5204
5245
  value: (function () {
5205
- var _startTranscription = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(options) {
5206
- return _regenerator.default.wrap(function _callee16$(_context16) {
5207
- while (1) switch (_context16.prev = _context16.next) {
5246
+ var _startTranscription = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(options) {
5247
+ return _regenerator.default.wrap(function _callee17$(_context17) {
5248
+ while (1) switch (_context17.prev = _context17.next) {
5208
5249
  case 0:
5209
5250
  if (!this.isJoined()) {
5210
- _context16.next = 15;
5251
+ _context17.next = 15;
5211
5252
  break;
5212
5253
  }
5213
5254
  _loggerProxy.default.logger.info('Meeting:index#startTranscription --> Attempting to enable transcription!');
5214
- _context16.prev = 2;
5255
+ _context17.prev = 2;
5215
5256
  if (!this.areVoiceaEventsSetup) {
5216
5257
  this.setUpVoiceaListeners();
5217
5258
  }
5218
5259
  if (!(this.getCurUserType() === 'host')) {
5219
- _context16.next = 7;
5260
+ _context17.next = 7;
5220
5261
  break;
5221
5262
  }
5222
- _context16.next = 7;
5223
- return this.webex.internal.voicea.toggleTranscribing(true, options === null || options === void 0 ? void 0 : options.spokenLanguage);
5263
+ _context17.next = 7;
5264
+ return this.webex.internal.voicea.turnOnCaptions(options === null || options === void 0 ? void 0 : options.spokenLanguage);
5224
5265
  case 7:
5225
- _context16.next = 13;
5266
+ _context17.next = 13;
5226
5267
  break;
5227
5268
  case 9:
5228
- _context16.prev = 9;
5229
- _context16.t0 = _context16["catch"](2);
5230
- _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_context16.t0));
5269
+ _context17.prev = 9;
5270
+ _context17.t0 = _context17["catch"](2);
5271
+ _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_context17.t0));
5231
5272
  _metrics.default.sendBehavioralMetric(_constants2.default.RECEIVE_TRANSCRIPTION_FAILURE, {
5232
5273
  correlation_id: this.correlationId,
5233
- reason: _context16.t0.message,
5234
- stack: _context16.t0.stack
5274
+ reason: _context17.t0.message,
5275
+ stack: _context17.t0.stack
5235
5276
  });
5236
5277
  case 13:
5237
- _context16.next = 17;
5278
+ _context17.next = 17;
5238
5279
  break;
5239
5280
  case 15:
5240
5281
  _loggerProxy.default.logger.error("Meeting:index#startTranscription --> meeting joined : ".concat(this.isJoined()));
5241
5282
  throw new Error('Meeting is not joined');
5242
5283
  case 17:
5243
5284
  case "end":
5244
- return _context16.stop();
5285
+ return _context17.stop();
5245
5286
  }
5246
- }, _callee16, this, [[2, 9]]);
5287
+ }, _callee17, this, [[2, 9]]);
5247
5288
  }));
5248
5289
  function startTranscription(_x15) {
5249
5290
  return _startTranscription.apply(this, arguments);
@@ -5290,7 +5331,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5290
5331
  function: 'triggerStopReceivingTranscriptionEvent'
5291
5332
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_RECEIVING_TRANSCRIPTION);
5292
5333
  }
5293
-
5334
+ }, {
5335
+ key: "join",
5336
+ value: (
5294
5337
  /**
5295
5338
  * Specify joining via audio (option: pstn), video, screenshare
5296
5339
  * @param {JoinOptions} options A configurable options object for joining a meeting
@@ -5303,10 +5346,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5303
5346
  * if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop
5304
5347
  * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
5305
5348
  */
5306
- }, {
5307
- key: "join",
5308
- value: (function () {
5309
- var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
5349
+ function () {
5350
+ var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5310
5351
  var _this31 = this;
5311
5352
  var options,
5312
5353
  errorMessage,
@@ -5317,25 +5358,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5317
5358
  _error,
5318
5359
  _errorMessage2,
5319
5360
  _error2,
5320
- _args17 = arguments;
5321
- return _regenerator.default.wrap(function _callee17$(_context17) {
5322
- while (1) switch (_context17.prev = _context17.next) {
5361
+ _args18 = arguments;
5362
+ return _regenerator.default.wrap(function _callee18$(_context18) {
5363
+ while (1) switch (_context18.prev = _context18.next) {
5323
5364
  case 0:
5324
- options = _args17.length > 0 && _args17[0] !== undefined ? _args17[0] : {};
5365
+ options = _args18.length > 0 && _args18[0] !== undefined ? _args18[0] : {};
5325
5366
  if (this.webex.meetings.registered) {
5326
- _context17.next = 6;
5367
+ _context18.next = 6;
5327
5368
  break;
5328
5369
  }
5329
5370
  errorMessage = 'Meeting:index#join --> Device not registered';
5330
5371
  error = new Error(errorMessage);
5331
5372
  _loggerProxy.default.logger.error(errorMessage);
5332
- return _context17.abrupt("return", _promise.default.reject(error));
5373
+ return _context18.abrupt("return", _promise.default.reject(error));
5333
5374
  case 6:
5334
5375
  if (!this.deferJoin) {
5335
- _context17.next = 8;
5376
+ _context18.next = 8;
5336
5377
  break;
5337
5378
  }
5338
- return _context17.abrupt("return", this.deferJoin);
5379
+ return _context18.abrupt("return", this.deferJoin);
5339
5380
  case 8:
5340
5381
  // Create a deferred promise for a consistent resolve value from utils.
5341
5382
  // This also prevents redundant API calls.
@@ -5384,15 +5425,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5384
5425
  this.wirelessShare = true;
5385
5426
  }
5386
5427
  if (!options.meetingQuality) {
5387
- _context17.next = 36;
5428
+ _context18.next = 36;
5388
5429
  break;
5389
5430
  }
5390
5431
  if (!(typeof options.meetingQuality === 'string')) {
5391
- _context17.next = 27;
5432
+ _context18.next = 27;
5392
5433
  break;
5393
5434
  }
5394
5435
  if (_constants.QUALITY_LEVELS[options.meetingQuality]) {
5395
- _context17.next = 26;
5436
+ _context18.next = 26;
5396
5437
  break;
5397
5438
  }
5398
5439
  _errorMessage = "Meeting:index#join --> ".concat(options.meetingQuality, " not defined");
@@ -5400,16 +5441,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5400
5441
  _loggerProxy.default.logger.error(_errorMessage);
5401
5442
  joinFailed(_error);
5402
5443
  this.deferJoin = undefined;
5403
- return _context17.abrupt("return", _promise.default.reject(_error));
5444
+ return _context18.abrupt("return", _promise.default.reject(_error));
5404
5445
  case 26:
5405
5446
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality);
5406
5447
  case 27:
5407
5448
  if (!((0, _typeof2.default)(options.meetingQuality) === 'object')) {
5408
- _context17.next = 36;
5449
+ _context18.next = 36;
5409
5450
  break;
5410
5451
  }
5411
5452
  if (_constants.QUALITY_LEVELS[options.meetingQuality.remote]) {
5412
- _context17.next = 35;
5453
+ _context18.next = 35;
5413
5454
  break;
5414
5455
  }
5415
5456
  _errorMessage2 = "Meeting:index#join --> ".concat(options.meetingQuality.remote, " not defined");
@@ -5417,42 +5458,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5417
5458
  _error2 = new Error(_errorMessage2);
5418
5459
  joinFailed(_error2);
5419
5460
  this.deferJoin = undefined;
5420
- return _context17.abrupt("return", _promise.default.reject(new Error(_errorMessage2)));
5461
+ return _context18.abrupt("return", _promise.default.reject(new Error(_errorMessage2)));
5421
5462
  case 35:
5422
5463
  if (options.meetingQuality.remote) {
5423
5464
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality.remote);
5424
5465
  }
5425
5466
  case 36:
5426
5467
  this.isMultistream = !!options.enableMultistream;
5427
- _context17.prev = 37;
5428
- _context17.next = 40;
5468
+ _context18.prev = 37;
5469
+ _context18.next = 40;
5429
5470
  return this.checkAndRefreshPermissionToken(_constants.MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC, _constants.MEETING_PERMISSION_TOKEN_REFRESH_REASON);
5430
5471
  case 40:
5431
- _context17.next = 51;
5472
+ _context18.next = 51;
5432
5473
  break;
5433
5474
  case 42:
5434
- _context17.prev = 42;
5435
- _context17.t0 = _context17["catch"](37);
5436
- _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _context17.t0);
5437
- if (!(_context17.t0 instanceof _captchaError.default || _context17.t0 instanceof _passwordError.default || _context17.t0 instanceof _permission.default)) {
5438
- _context17.next = 51;
5475
+ _context18.prev = 42;
5476
+ _context18.t0 = _context18["catch"](37);
5477
+ _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _context18.t0);
5478
+ if (!(_context18.t0 instanceof _captchaError.default || _context18.t0 instanceof _passwordError.default || _context18.t0 instanceof _permission.default)) {
5479
+ _context18.next = 51;
5439
5480
  break;
5440
5481
  }
5441
- this.meetingFiniteStateMachine.fail(_context17.t0);
5482
+ this.meetingFiniteStateMachine.fail(_context18.t0);
5442
5483
 
5443
5484
  // Upload logs on refreshpermissionToken refresh Failure
5444
5485
  _triggerProxy.default.trigger(this, {
5445
5486
  file: 'meeting/index',
5446
5487
  function: 'join'
5447
5488
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
5448
- joinFailed(_context17.t0);
5489
+ joinFailed(_context18.t0);
5449
5490
  this.deferJoin = undefined;
5450
5491
 
5451
5492
  // if refresh permission token requires captcha, password or permission, we are throwing the errors
5452
5493
  // and bubble it up to client
5453
- return _context17.abrupt("return", _promise.default.reject(_context17.t0));
5494
+ return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5454
5495
  case 51:
5455
- return _context17.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5496
+ return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5456
5497
  _this31.meetingFiniteStateMachine.join();
5457
5498
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5458
5499
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
@@ -5498,6 +5539,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5498
5539
  }).then(function (join) {
5499
5540
  // @ts-ignore - config coming from registerPlugin
5500
5541
  if (_this31.config.enableAutomaticLLM) {
5542
+ // @ts-ignore
5543
+ _this31.webex.internal.llm.on('online', _this31.handleLLMOnline);
5501
5544
  _this31.updateLLMConnection().catch(function (error) {
5502
5545
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5503
5546
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
@@ -5507,19 +5550,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5507
5550
  });
5508
5551
  }).then(function () {
5509
5552
  _loggerProxy.default.logger.info('Meeting:index#join --> Transcription Socket Connection Success');
5510
- _triggerProxy.default.trigger(_this31, {
5511
- file: 'meeting/index',
5512
- function: 'join'
5513
- }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED, undefined);
5514
5553
  });
5515
5554
  }
5516
5555
  return join;
5517
5556
  }));
5518
5557
  case 52:
5519
5558
  case "end":
5520
- return _context17.stop();
5559
+ return _context18.stop();
5521
5560
  }
5522
- }, _callee17, this, [[37, 42]]);
5561
+ }, _callee18, this, [[37, 42]]);
5523
5562
  }));
5524
5563
  function join() {
5525
5564
  return _join.apply(this, arguments);
@@ -5536,38 +5575,38 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5536
5575
  }, {
5537
5576
  key: "updateLLMConnection",
5538
5577
  value: (function () {
5539
- var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5578
+ var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5540
5579
  var _this32 = this;
5541
5580
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5542
- return _regenerator.default.wrap(function _callee18$(_context18) {
5543
- while (1) switch (_context18.prev = _context18.next) {
5581
+ return _regenerator.default.wrap(function _callee19$(_context19) {
5582
+ while (1) switch (_context19.prev = _context19.next) {
5544
5583
  case 0:
5545
5584
  // @ts-ignore - Fix type
5546
5585
  _this$locusInfo6 = this.locusInfo, url = _this$locusInfo6.url, _this$locusInfo6$info = _this$locusInfo6.info, _this$locusInfo6$info2 = _this$locusInfo6$info === void 0 ? {} : _this$locusInfo6$info, datachannelUrl = _this$locusInfo6$info2.datachannelUrl;
5547
5586
  isJoined = this.isJoined(); // @ts-ignore - Fix type
5548
5587
  if (!this.webex.internal.llm.isConnected()) {
5549
- _context18.next = 8;
5588
+ _context19.next = 8;
5550
5589
  break;
5551
5590
  }
5552
5591
  if (!(url === this.webex.internal.llm.getLocusUrl() && isJoined)) {
5553
- _context18.next = 5;
5592
+ _context19.next = 5;
5554
5593
  break;
5555
5594
  }
5556
- return _context18.abrupt("return", undefined);
5595
+ return _context19.abrupt("return", undefined);
5557
5596
  case 5:
5558
- _context18.next = 7;
5597
+ _context19.next = 7;
5559
5598
  return this.webex.internal.llm.disconnectLLM();
5560
5599
  case 7:
5561
5600
  // @ts-ignore - Fix type
5562
5601
  this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
5563
5602
  case 8:
5564
5603
  if (isJoined) {
5565
- _context18.next = 10;
5604
+ _context19.next = 10;
5566
5605
  break;
5567
5606
  }
5568
- return _context18.abrupt("return", undefined);
5607
+ return _context19.abrupt("return", undefined);
5569
5608
  case 10:
5570
- return _context18.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5609
+ return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5571
5610
  // @ts-ignore - Fix type
5572
5611
  _this32.webex.internal.llm.off('event:relay.event', _this32.processRelayEvent);
5573
5612
  // @ts-ignore - Fix type
@@ -5577,9 +5616,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5577
5616
  }));
5578
5617
  case 11:
5579
5618
  case "end":
5580
- return _context18.stop();
5619
+ return _context19.stop();
5581
5620
  }
5582
- }, _callee18, this);
5621
+ }, _callee19, this);
5583
5622
  }));
5584
5623
  function updateLLMConnection() {
5585
5624
  return _updateLLMConnection.apply(this, arguments);
@@ -5751,17 +5790,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5751
5790
  meetingId: this.id
5752
5791
  }
5753
5792
  });
5754
- this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5793
+ this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20() {
5755
5794
  var mediaSettings;
5756
- return _regenerator.default.wrap(function _callee19$(_context19) {
5757
- while (1) switch (_context19.prev = _context19.next) {
5795
+ return _regenerator.default.wrap(function _callee20$(_context20) {
5796
+ while (1) switch (_context20.prev = _context20.next) {
5758
5797
  case 0:
5759
- _context19.prev = 0;
5798
+ _context20.prev = 0;
5760
5799
  if (!(_this35.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5761
- _context19.next = 4;
5800
+ _context20.next = 4;
5762
5801
  break;
5763
5802
  }
5764
- _context19.next = 4;
5803
+ _context20.next = 4;
5765
5804
  return _this35.releaseScreenShareFloor();
5766
5805
  case 4:
5767
5806
  mediaSettings = {
@@ -5774,37 +5813,61 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5774
5813
  receiveShare: true
5775
5814
  }
5776
5815
  };
5777
- _this35.cleanupLocalStreams();
5778
5816
  _this35.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
5779
5817
  _this35.mediaProperties.unsetRemoteMedia();
5780
5818
 
5781
- // 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
5782
- // once the DX answers we establish connection back the media server with only receiveShare enabled
5783
- // @ts-ignore - reconnectMedia does not accept any argument
5784
- _context19.next = 10;
5785
- return _this35.reconnectionManager.reconnectMedia(mediaSettings).then(function () {
5786
- _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
5787
- });
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
+ }
5825
+ _context20.next = 10;
5826
+ return _this35.statsAnalyzer.stopAnalyzer();
5788
5827
  case 10:
5789
- _context19.next = 16;
5790
- break;
5828
+ _context20.next = 12;
5829
+ return _this35.closeRemoteStreams();
5791
5830
  case 12:
5792
- _context19.prev = 12;
5793
- _context19.t0 = _context19["catch"](0);
5794
- _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context19.t0);
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;
5851
+ _context20.t0 = _context20["catch"](0);
5852
+ _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
5795
5853
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
5796
5854
  correlation_id: _this35.correlationId,
5797
5855
  locus_id: _this35.locusUrl.split('/').pop(),
5798
- reason: _context19.t0.message,
5799
- stack: _context19.t0.stack
5856
+ reason: _context20.t0.message,
5857
+ stack: _context20.t0.stack
5800
5858
  });
5801
- case 16:
5859
+ _this35.isMoveToInProgress = false;
5860
+ case 29:
5802
5861
  case "end":
5803
- return _context19.stop();
5862
+ return _context20.stop();
5804
5863
  }
5805
- }, _callee19, null, [[0, 12]]);
5864
+ }, _callee20, null, [[0, 24]]);
5806
5865
  })));
5807
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;
5808
5871
  return _util2.default.joinMeetingOptions(this, {
5809
5872
  resourceId: resourceId,
5810
5873
  moveToResource: true
@@ -5819,6 +5882,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5819
5882
  stack: error.stack
5820
5883
  });
5821
5884
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
5885
+ _this35.isMoveToInProgress = false;
5822
5886
  return _promise.default.reject(error);
5823
5887
  });
5824
5888
  }
@@ -5885,10 +5949,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5885
5949
  }, {
5886
5950
  key: "createMediaConnection",
5887
5951
  value: (function () {
5888
- var _createMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(turnServerInfo, bundlePolicy) {
5952
+ var _createMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(turnServerInfo, bundlePolicy) {
5889
5953
  var mc, audioEnabled, videoEnabled, shareEnabled;
5890
- return _regenerator.default.wrap(function _callee20$(_context20) {
5891
- while (1) switch (_context20.prev = _context20.next) {
5954
+ return _regenerator.default.wrap(function _callee21$(_context21) {
5955
+ while (1) switch (_context21.prev = _context21.next) {
5892
5956
  case 0:
5893
5957
  mc = _media.default.createMediaConnection(this.isMultistream, this.getMediaConnectionDebugId(),
5894
5958
  // @ts-ignore
@@ -5914,40 +5978,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5914
5978
 
5915
5979
  // publish the streams
5916
5980
  if (!this.mediaProperties.audioStream) {
5917
- _context20.next = 8;
5981
+ _context21.next = 8;
5918
5982
  break;
5919
5983
  }
5920
5984
  this.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
5921
- _context20.next = 8;
5985
+ _context21.next = 8;
5922
5986
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
5923
5987
  case 8:
5924
5988
  if (!this.mediaProperties.videoStream) {
5925
- _context20.next = 11;
5989
+ _context21.next = 11;
5926
5990
  break;
5927
5991
  }
5928
- _context20.next = 11;
5992
+ _context21.next = 11;
5929
5993
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
5930
5994
  case 11:
5931
5995
  if (!this.mediaProperties.shareVideoStream) {
5932
- _context20.next = 14;
5996
+ _context21.next = 14;
5933
5997
  break;
5934
5998
  }
5935
- _context20.next = 14;
5999
+ _context21.next = 14;
5936
6000
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
5937
6001
  case 14:
5938
6002
  if (!(this.isMultistream && this.mediaProperties.shareAudioStream)) {
5939
- _context20.next = 17;
6003
+ _context21.next = 17;
5940
6004
  break;
5941
6005
  }
5942
- _context20.next = 17;
6006
+ _context21.next = 17;
5943
6007
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
5944
6008
  case 17:
5945
- return _context20.abrupt("return", mc);
6009
+ return _context21.abrupt("return", mc);
5946
6010
  case 18:
5947
6011
  case "end":
5948
- return _context20.stop();
6012
+ return _context21.stop();
5949
6013
  }
5950
- }, _callee20, this);
6014
+ }, _callee21, this);
5951
6015
  }));
5952
6016
  function createMediaConnection(_x16, _x17) {
5953
6017
  return _createMediaConnection.apply(this, arguments);
@@ -5987,11 +6051,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5987
6051
  }, {
5988
6052
  key: "setUpLocalStreamReferences",
5989
6053
  value: (function () {
5990
- var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(localStreams) {
6054
+ var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(localStreams) {
5991
6055
  var _localStreams$microph, _localStreams$camera, _localStreams$screenS, _localStreams$screenS2, _localStreams$screenS3, _localStreams$screenS4, _localStreams$screenS5, _localStreams$screenS6;
5992
6056
  var setUpStreamPromises;
5993
- return _regenerator.default.wrap(function _callee21$(_context21) {
5994
- while (1) switch (_context21.prev = _context21.next) {
6057
+ return _regenerator.default.wrap(function _callee22$(_context22) {
6058
+ while (1) switch (_context22.prev = _context22.next) {
5995
6059
  case 0:
5996
6060
  setUpStreamPromises = [];
5997
6061
  if (localStreams !== null && localStreams !== void 0 && localStreams.microphone && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$microph = localStreams.microphone) === null || _localStreams$microph === void 0 ? void 0 : _localStreams$microph.readyState) !== 'ended') {
@@ -6006,22 +6070,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6006
6070
  if (localStreams !== null && localStreams !== void 0 && (_localStreams$screenS4 = localStreams.screenShare) !== null && _localStreams$screenS4 !== void 0 && _localStreams$screenS4.audio && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$screenS5 = localStreams.screenShare) === null || _localStreams$screenS5 === void 0 ? void 0 : (_localStreams$screenS6 = _localStreams$screenS5.audio) === null || _localStreams$screenS6 === void 0 ? void 0 : _localStreams$screenS6.readyState) !== 'ended') {
6007
6071
  setUpStreamPromises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));
6008
6072
  }
6009
- _context21.prev = 5;
6010
- _context21.next = 8;
6073
+ _context22.prev = 5;
6074
+ _context22.next = 8;
6011
6075
  return _promise.default.all(setUpStreamPromises);
6012
6076
  case 8:
6013
- _context21.next = 14;
6077
+ _context22.next = 14;
6014
6078
  break;
6015
6079
  case 10:
6016
- _context21.prev = 10;
6017
- _context21.t0 = _context21["catch"](5);
6018
- _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _context21.t0);
6019
- throw _context21.t0;
6080
+ _context22.prev = 10;
6081
+ _context22.t0 = _context22["catch"](5);
6082
+ _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _context22.t0);
6083
+ throw _context22.t0;
6020
6084
  case 14:
6021
6085
  case "end":
6022
- return _context21.stop();
6086
+ return _context22.stop();
6023
6087
  }
6024
- }, _callee21, this, [[5, 10]]);
6088
+ }, _callee22, this, [[5, 10]]);
6025
6089
  }));
6026
6090
  function setUpLocalStreamReferences(_x18) {
6027
6091
  return _setUpLocalStreamReferences.apply(this, arguments);
@@ -6038,20 +6102,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6038
6102
  }, {
6039
6103
  key: "waitForMediaConnectionConnected",
6040
6104
  value: (function () {
6041
- var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
6105
+ var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
6042
6106
  var _this$mediaProperties6, _this$mediaProperties7, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12, _this$mediaProperties13, _this$mediaProperties14, _this$mediaProperties15, _this$mediaProperties16, _this$mediaProperties17, _this$mediaProperties18, _this$mediaProperties19;
6043
- return _regenerator.default.wrap(function _callee22$(_context22) {
6044
- while (1) switch (_context22.prev = _context22.next) {
6107
+ return _regenerator.default.wrap(function _callee23$(_context23) {
6108
+ while (1) switch (_context23.prev = _context23.next) {
6045
6109
  case 0:
6046
- _context22.prev = 0;
6047
- _context22.next = 3;
6110
+ _context23.prev = 0;
6111
+ _context23.next = 3;
6048
6112
  return this.mediaProperties.waitForMediaConnectionConnected();
6049
6113
  case 3:
6050
- _context22.next = 9;
6114
+ _context23.next = 9;
6051
6115
  break;
6052
6116
  case 5:
6053
- _context22.prev = 5;
6054
- _context22.t0 = _context22["catch"](0);
6117
+ _context23.prev = 5;
6118
+ _context23.t0 = _context23["catch"](0);
6055
6119
  if (!this.hasMediaConnectionConnectedAtLeastOnce) {
6056
6120
  // Only send CA event for join flow if we haven't successfully connected media yet
6057
6121
  // @ts-ignore
@@ -6079,9 +6143,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6079
6143
  throw new Error("Timed out waiting for media connection to be connected, correlationId=".concat(this.correlationId));
6080
6144
  case 9:
6081
6145
  case "end":
6082
- return _context22.stop();
6146
+ return _context23.stop();
6083
6147
  }
6084
- }, _callee22, this, [[0, 5]]);
6148
+ }, _callee23, this, [[0, 5]]);
6085
6149
  }));
6086
6150
  function waitForMediaConnectionConnected() {
6087
6151
  return _waitForMediaConnectionConnected.apply(this, arguments);
@@ -6131,18 +6195,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6131
6195
  * @returns {Promise<void>}
6132
6196
  */
6133
6197
  function () {
6134
- var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
6198
+ var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6135
6199
  var LOG_HEADER, deferSDPAnswer;
6136
- return _regenerator.default.wrap(function _callee23$(_context23) {
6137
- while (1) switch (_context23.prev = _context23.next) {
6200
+ return _regenerator.default.wrap(function _callee24$(_context24) {
6201
+ while (1) switch (_context24.prev = _context24.next) {
6138
6202
  case 0:
6139
6203
  LOG_HEADER = 'Meeting:index#addMedia():waitForRemoteSDPAnswer -->';
6140
6204
  if (this.deferSDPAnswer) {
6141
- _context23.next = 4;
6205
+ _context24.next = 4;
6142
6206
  break;
6143
6207
  }
6144
6208
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " offer not created yet"));
6145
- return _context23.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
6209
+ return _context24.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
6146
6210
  case 4:
6147
6211
  deferSDPAnswer = this.deferSDPAnswer;
6148
6212
  this.sdpResponseTimer = setTimeout(function () {
@@ -6150,12 +6214,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6150
6214
  deferSDPAnswer.reject(new Error('Timed out waiting for REMOTE SDP ANSWER'));
6151
6215
  }, _constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
6152
6216
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " waiting for REMOTE SDP ANSWER..."));
6153
- return _context23.abrupt("return", deferSDPAnswer.promise);
6217
+ return _context24.abrupt("return", deferSDPAnswer.promise);
6154
6218
  case 8:
6155
6219
  case "end":
6156
- return _context23.stop();
6220
+ return _context24.stop();
6157
6221
  }
6158
- }, _callee23, this);
6222
+ }, _callee24, this);
6159
6223
  }));
6160
6224
  function waitForRemoteSDPAnswer() {
6161
6225
  return _waitForRemoteSDPAnswer.apply(this, arguments);
@@ -6174,28 +6238,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6174
6238
  }, {
6175
6239
  key: "retryEstablishMediaConnectionWithForcedTurnDiscovery",
6176
6240
  value: (function () {
6177
- var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(remoteMediaManagerConfig, bundlePolicy) {
6241
+ var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(remoteMediaManagerConfig, bundlePolicy) {
6178
6242
  var LOG_HEADER;
6179
- return _regenerator.default.wrap(function _callee24$(_context24) {
6180
- while (1) switch (_context24.prev = _context24.next) {
6243
+ return _regenerator.default.wrap(function _callee25$(_context25) {
6244
+ while (1) switch (_context25.prev = _context25.next) {
6181
6245
  case 0:
6182
6246
  LOG_HEADER = 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';
6183
- _context24.prev = 1;
6184
- _context24.next = 4;
6247
+ _context25.prev = 1;
6248
+ _context25.next = 4;
6185
6249
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);
6186
6250
  case 4:
6187
- _context24.next = 10;
6251
+ _context25.next = 10;
6188
6252
  break;
6189
6253
  case 6:
6190
- _context24.prev = 6;
6191
- _context24.t0 = _context24["catch"](1);
6192
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _context24.t0);
6193
- throw _context24.t0;
6254
+ _context25.prev = 6;
6255
+ _context25.t0 = _context25["catch"](1);
6256
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _context25.t0);
6257
+ throw _context25.t0;
6194
6258
  case 10:
6195
6259
  case "end":
6196
- return _context24.stop();
6260
+ return _context25.stop();
6197
6261
  }
6198
- }, _callee24, this, [[1, 6]]);
6262
+ }, _callee25, this, [[1, 6]]);
6199
6263
  }));
6200
6264
  function retryEstablishMediaConnectionWithForcedTurnDiscovery(_x19, _x20) {
6201
6265
  return _retryEstablishMediaConnectionWithForcedTurnDiscovery.apply(this, arguments);
@@ -6215,14 +6279,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6215
6279
  }, {
6216
6280
  key: "retryWithForcedTurnDiscovery",
6217
6281
  value: (function () {
6218
- var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(remoteMediaManagerConfig, bundlePolicy) {
6282
+ var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(remoteMediaManagerConfig, bundlePolicy) {
6219
6283
  var LOG_HEADER;
6220
- return _regenerator.default.wrap(function _callee25$(_context25) {
6221
- while (1) switch (_context25.prev = _context25.next) {
6284
+ return _regenerator.default.wrap(function _callee26$(_context26) {
6285
+ while (1) switch (_context26.prev = _context26.next) {
6222
6286
  case 0:
6223
6287
  this.retriedWithTurnServer = true;
6224
6288
  LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';
6225
- _context25.next = 4;
6289
+ _context26.next = 4;
6226
6290
  return this.cleanUpBeforeRetryWithTurnServer();
6227
6291
  case 4:
6228
6292
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_RETRY, {
@@ -6232,22 +6296,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6232
6296
  reason: 'forcingTurnTls'
6233
6297
  });
6234
6298
  if (!(this.state === _constants.MEETING_STATE.STATES.LEFT)) {
6235
- _context25.next = 9;
6299
+ _context26.next = 9;
6236
6300
  break;
6237
6301
  }
6238
6302
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " meeting state was LEFT after first attempt to establish media connection. Attempting to rejoin. "));
6239
- _context25.next = 9;
6303
+ _context26.next = 9;
6240
6304
  return this.join({
6241
6305
  rejoin: true
6242
6306
  });
6243
6307
  case 9:
6244
- _context25.next = 11;
6308
+ _context26.next = 11;
6245
6309
  return this.retryEstablishMediaConnectionWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
6246
6310
  case 11:
6247
6311
  case "end":
6248
- return _context25.stop();
6312
+ return _context26.stop();
6249
6313
  }
6250
- }, _callee25, this);
6314
+ }, _callee26, this);
6251
6315
  }));
6252
6316
  function retryWithForcedTurnDiscovery(_x21, _x22) {
6253
6317
  return _retryWithForcedTurnDiscovery.apply(this, arguments);
@@ -6269,30 +6333,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6269
6333
  }, {
6270
6334
  key: "handleWaitForMediaConnectionConnectedError",
6271
6335
  value: (function () {
6272
- var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(error, remoteMediaManagerConfig, bundlePolicy) {
6336
+ var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(error, remoteMediaManagerConfig, bundlePolicy) {
6273
6337
  var LOG_HEADER;
6274
- return _regenerator.default.wrap(function _callee26$(_context26) {
6275
- while (1) switch (_context26.prev = _context26.next) {
6338
+ return _regenerator.default.wrap(function _callee27$(_context27) {
6339
+ while (1) switch (_context27.prev = _context27.next) {
6276
6340
  case 0:
6277
6341
  LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->'; // @ts-ignore - config coming from registerPlugin
6278
6342
  if (this.turnServerUsed) {
6279
- _context26.next = 7;
6343
+ _context27.next = 7;
6280
6344
  break;
6281
6345
  }
6282
6346
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " error waiting for media to connect on UDP, TCP, retrying using TURN-TLS, "), error);
6283
- _context26.next = 5;
6347
+ _context27.next = 5;
6284
6348
  return this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
6285
6349
  case 5:
6286
- _context26.next = 9;
6350
+ _context27.next = 9;
6287
6351
  break;
6288
6352
  case 7:
6289
6353
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error waiting for media to connect using UDP, TCP and TURN-TLS"), error);
6290
6354
  throw new _webexErrors.AddMediaFailed();
6291
6355
  case 9:
6292
6356
  case "end":
6293
- return _context26.stop();
6357
+ return _context27.stop();
6294
6358
  }
6295
- }, _callee26, this);
6359
+ }, _callee27, this);
6296
6360
  }));
6297
6361
  function handleWaitForMediaConnectionConnectedError(_x23, _x24, _x25) {
6298
6362
  return _handleWaitForMediaConnectionConnectedError.apply(this, arguments);
@@ -6302,7 +6366,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6302
6366
  /**
6303
6367
  * Performs TURN discovery as a separate call to the Locus /media API
6304
6368
  *
6305
- * @param {boolean} isRetry
6369
+ * @param {boolean} isReconnecting
6306
6370
  * @param {boolean} isForced
6307
6371
  * @returns {Promise}
6308
6372
  */
@@ -6310,20 +6374,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6310
6374
  }, {
6311
6375
  key: "doTurnDiscovery",
6312
6376
  value: (function () {
6313
- var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(isRetry, isForced) {
6377
+ var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(isReconnecting, isForced) {
6314
6378
  var cdl, turnDiscoveryResult;
6315
- return _regenerator.default.wrap(function _callee27$(_context27) {
6316
- while (1) switch (_context27.prev = _context27.next) {
6379
+ return _regenerator.default.wrap(function _callee28$(_context28) {
6380
+ while (1) switch (_context28.prev = _context28.next) {
6317
6381
  case 0:
6318
6382
  // @ts-ignore
6319
6383
  cdl = this.webex.internal.newMetrics.callDiagnosticLatencies; // @ts-ignore
6320
6384
  this.webex.internal.newMetrics.submitInternalEvent({
6321
6385
  name: 'internal.client.add-media.turn-discovery.start'
6322
6386
  });
6323
- _context27.next = 4;
6324
- return this.roap.doTurnDiscovery(this, isRetry, isForced);
6387
+ _context28.next = 4;
6388
+ return this.roap.doTurnDiscovery(this, isReconnecting, isForced);
6325
6389
  case 4:
6326
- turnDiscoveryResult = _context27.sent;
6390
+ turnDiscoveryResult = _context28.sent;
6327
6391
  this.turnDiscoverySkippedReason = turnDiscoveryResult === null || turnDiscoveryResult === void 0 ? void 0 : turnDiscoveryResult.turnDiscoverySkippedReason;
6328
6392
  this.turnServerUsed = !this.turnDiscoverySkippedReason;
6329
6393
 
@@ -6339,12 +6403,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6339
6403
  retriedWithTurnServer: this.retriedWithTurnServer
6340
6404
  });
6341
6405
  }
6342
- return _context27.abrupt("return", turnDiscoveryResult);
6406
+ return _context28.abrupt("return", turnDiscoveryResult);
6343
6407
  case 10:
6344
6408
  case "end":
6345
- return _context27.stop();
6409
+ return _context28.stop();
6346
6410
  }
6347
- }, _callee27, this);
6411
+ }, _callee28, this);
6348
6412
  }));
6349
6413
  function doTurnDiscovery(_x26, _x27) {
6350
6414
  return _doTurnDiscovery.apply(this, arguments);
@@ -6365,31 +6429,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6365
6429
  }, {
6366
6430
  key: "establishMediaConnection",
6367
6431
  value: (function () {
6368
- var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
6369
- var LOG_HEADER, isRetry, _yield$this$doTurnDis, mc;
6370
- return _regenerator.default.wrap(function _callee28$(_context28) {
6371
- while (1) switch (_context28.prev = _context28.next) {
6432
+ var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
6433
+ var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc;
6434
+ return _regenerator.default.wrap(function _callee29$(_context29) {
6435
+ while (1) switch (_context29.prev = _context29.next) {
6372
6436
  case 0:
6373
6437
  LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';
6374
- isRetry = this.retriedWithTurnServer;
6375
- _context28.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;
6376
6443
  if (turnServerInfo) {
6377
- _context28.next = 8;
6444
+ _context29.next = 9;
6378
6445
  break;
6379
6446
  }
6380
- _context28.next = 6;
6381
- return this.doTurnDiscovery(isRetry, isForced);
6382
- case 6:
6383
- _yield$this$doTurnDis = _context28.sent;
6447
+ _context29.next = 7;
6448
+ return this.doTurnDiscovery(isReconnecting, isForced);
6449
+ case 7:
6450
+ _yield$this$doTurnDis = _context29.sent;
6384
6451
  turnServerInfo = _yield$this$doTurnDis.turnServerInfo;
6385
- case 8:
6386
- _context28.next = 10;
6452
+ case 9:
6453
+ _context29.next = 11;
6387
6454
  return this.createMediaConnection(turnServerInfo, bundlePolicy);
6388
- case 10:
6389
- mc = _context28.sent;
6455
+ case 11:
6456
+ mc = _context29.sent;
6390
6457
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created"));
6391
6458
  if (!this.isMultistream) {
6392
- _context28.next = 20;
6459
+ _context29.next = 21;
6393
6460
  break;
6394
6461
  }
6395
6462
  this.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(this.receiveSlotManager, this.mediaRequestManagers, remoteMediaManagerConfig);
@@ -6397,40 +6464,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6397
6464
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.InterpretationAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED);
6398
6465
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
6399
6466
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
6400
- _context28.next = 20;
6467
+ _context29.next = 21;
6401
6468
  return this.remoteMediaManager.start();
6402
- case 20:
6403
- _context28.next = 22;
6469
+ case 21:
6470
+ _context29.next = 23;
6404
6471
  return mc.initiateOffer();
6405
- case 22:
6406
- _context28.next = 24;
6472
+ case 23:
6473
+ _context29.next = 25;
6407
6474
  return this.waitForRemoteSDPAnswer();
6408
- case 24:
6475
+ case 25:
6409
6476
  this.handleMediaLogging(this.mediaProperties);
6410
- _context28.next = 31;
6477
+ _context29.next = 32;
6411
6478
  break;
6412
- case 27:
6413
- _context28.prev = 27;
6414
- _context28.t0 = _context28["catch"](2);
6415
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _context28.t0);
6416
- throw _context28.t0;
6417
- case 31:
6418
- _context28.prev = 31;
6419
- _context28.next = 34;
6479
+ case 28:
6480
+ _context29.prev = 28;
6481
+ _context29.t0 = _context29["catch"](3);
6482
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _context29.t0);
6483
+ throw _context29.t0;
6484
+ case 32:
6485
+ _context29.prev = 32;
6486
+ _context29.next = 35;
6420
6487
  return this.waitForMediaConnectionConnected();
6421
- case 34:
6422
- _context28.next = 40;
6488
+ case 35:
6489
+ _context29.next = 41;
6423
6490
  break;
6424
- case 36:
6425
- _context28.prev = 36;
6426
- _context28.t1 = _context28["catch"](31);
6427
- _context28.next = 40;
6428
- return this.handleWaitForMediaConnectionConnectedError(_context28.t1, remoteMediaManagerConfig, bundlePolicy);
6429
- case 40:
6491
+ case 37:
6492
+ _context29.prev = 37;
6493
+ _context29.t1 = _context29["catch"](32);
6494
+ _context29.next = 41;
6495
+ return this.handleWaitForMediaConnectionConnectedError(_context29.t1, remoteMediaManagerConfig, bundlePolicy);
6496
+ case 41:
6430
6497
  case "end":
6431
- return _context28.stop();
6498
+ return _context29.stop();
6432
6499
  }
6433
- }, _callee28, this, [[2, 27], [31, 36]]);
6500
+ }, _callee29, this, [[3, 28], [32, 37]]);
6434
6501
  }));
6435
6502
  function establishMediaConnection(_x28, _x29, _x30, _x31) {
6436
6503
  return _establishMediaConnection.apply(this, arguments);
@@ -6447,22 +6514,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6447
6514
  }, {
6448
6515
  key: "cleanUpOnAddMediaFailure",
6449
6516
  value: (function () {
6450
- var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29() {
6451
- return _regenerator.default.wrap(function _callee29$(_context29) {
6452
- while (1) switch (_context29.prev = _context29.next) {
6517
+ var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30() {
6518
+ return _regenerator.default.wrap(function _callee30$(_context30) {
6519
+ while (1) switch (_context30.prev = _context30.next) {
6453
6520
  case 0:
6454
6521
  if (!this.statsAnalyzer) {
6455
- _context29.next = 3;
6522
+ _context30.next = 3;
6456
6523
  break;
6457
6524
  }
6458
- _context29.next = 3;
6525
+ _context30.next = 3;
6459
6526
  return this.statsAnalyzer.stopAnalyzer();
6460
6527
  case 3:
6461
6528
  this.statsAnalyzer = null;
6462
6529
 
6463
6530
  // when media fails, we want to upload a webrtc dump to see whats going on
6464
6531
  // this function is async, but returns once the stats have been gathered
6465
- _context29.next = 6;
6532
+ _context30.next = 6;
6466
6533
  return this.forceSendStatsReport({
6467
6534
  callFrom: 'addMedia'
6468
6535
  });
@@ -6473,9 +6540,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6473
6540
  }
6474
6541
  case 7:
6475
6542
  case "end":
6476
- return _context29.stop();
6543
+ return _context30.stop();
6477
6544
  }
6478
- }, _callee29, this);
6545
+ }, _callee30, this);
6479
6546
  }));
6480
6547
  function cleanUpOnAddMediaFailure() {
6481
6548
  return _cleanUpOnAddMediaFailure.apply(this, arguments);
@@ -6493,11 +6560,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6493
6560
  }, {
6494
6561
  key: "cleanUpBeforeRetryWithTurnServer",
6495
6562
  value: (function () {
6496
- var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30() {
6497
- return _regenerator.default.wrap(function _callee30$(_context30) {
6498
- while (1) switch (_context30.prev = _context30.next) {
6563
+ var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31() {
6564
+ return _regenerator.default.wrap(function _callee31$(_context31) {
6565
+ while (1) switch (_context31.prev = _context31.next) {
6499
6566
  case 0:
6500
- _context30.next = 2;
6567
+ _context31.next = 2;
6501
6568
  return this.forceSendStatsReport({
6502
6569
  callFrom: 'cleanUpBeforeRetryWithTurnServer'
6503
6570
  });
@@ -6517,9 +6584,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6517
6584
  }
6518
6585
  case 3:
6519
6586
  case "end":
6520
- return _context30.stop();
6587
+ return _context31.stop();
6521
6588
  }
6522
- }, _callee30, this);
6589
+ }, _callee31, this);
6523
6590
  }));
6524
6591
  function cleanUpBeforeRetryWithTurnServer() {
6525
6592
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
@@ -6539,7 +6606,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6539
6606
  }, {
6540
6607
  key: "addMedia",
6541
6608
  value: (function () {
6542
- var _addMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31() {
6609
+ var _addMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
6543
6610
  var _this$webex$meetings$2, _this$webex$meetings$3;
6544
6611
  var options,
6545
6612
  turnServerInfo,
@@ -6556,7 +6623,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6556
6623
  remoteMediaManagerConfig,
6557
6624
  bundlePolicy,
6558
6625
  _this$remoteMediaMana,
6626
+ _yield$this$mediaProp,
6559
6627
  connectionType,
6628
+ selectedCandidatePairChanges,
6629
+ numTransports,
6560
6630
  reachabilityStats,
6561
6631
  _this$mediaProperties20,
6562
6632
  _this$mediaProperties21,
@@ -6580,24 +6650,27 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6580
6650
  _this$mediaProperties39,
6581
6651
  _this$mediaProperties40,
6582
6652
  reachabilityMetrics,
6583
- _args31 = arguments;
6584
- return _regenerator.default.wrap(function _callee31$(_context31) {
6585
- while (1) switch (_context31.prev = _context31.next) {
6653
+ _yield$this$mediaProp2,
6654
+ _selectedCandidatePairChanges,
6655
+ _numTransports,
6656
+ _args32 = arguments;
6657
+ return _regenerator.default.wrap(function _callee32$(_context32) {
6658
+ while (1) switch (_context32.prev = _context32.next) {
6586
6659
  case 0:
6587
- options = _args31.length > 0 && _args31[0] !== undefined ? _args31[0] : {};
6588
- turnServerInfo = _args31.length > 1 && _args31[1] !== undefined ? _args31[1] : undefined;
6660
+ options = _args32.length > 0 && _args32[0] !== undefined ? _args32[0] : {};
6661
+ turnServerInfo = _args32.length > 1 && _args32[1] !== undefined ? _args32[1] : undefined;
6589
6662
  this.retriedWithTurnServer = false;
6590
6663
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6591
6664
  LOG_HEADER = 'Meeting:index#addMedia -->';
6592
6665
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: ").concat((0, _stringify.default)(options), ", ").concat((0, _stringify.default)(turnServerInfo)));
6593
6666
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6594
- _context31.next = 8;
6667
+ _context32.next = 8;
6595
6668
  break;
6596
6669
  }
6597
6670
  throw new _webexErrors.MeetingNotActiveError();
6598
6671
  case 8:
6599
6672
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6600
- _context31.next = 10;
6673
+ _context32.next = 10;
6601
6674
  break;
6602
6675
  }
6603
6676
  throw new _webexErrors.UserNotJoinedError();
@@ -6608,7 +6681,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6608
6681
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6609
6682
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6610
6683
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6611
- _context31.next = 14;
6684
+ _context32.next = 14;
6612
6685
  break;
6613
6686
  }
6614
6687
  throw new _webexErrors.UserInLobbyError();
@@ -6651,6 +6724,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6651
6724
  });
6652
6725
  this.locusMediaRequest = new _locusMediaRequest.LocusMediaRequest({
6653
6726
  correlationId: this.correlationId,
6727
+ meetingId: this.id,
6654
6728
  device: {
6655
6729
  url: this.deviceUrl,
6656
6730
  // @ts-ignore
@@ -6667,48 +6741,54 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6667
6741
  });
6668
6742
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
6669
6743
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
6670
- _context31.prev = 19;
6671
- _context31.next = 22;
6744
+ _context32.prev = 19;
6745
+ _context32.next = 22;
6672
6746
  return this.setUpLocalStreamReferences(localStreams);
6673
6747
  case 22:
6674
6748
  this.setMercuryListener();
6675
6749
  this.createStatsAnalyzer();
6676
- _context31.next = 26;
6750
+ _context32.next = 26;
6677
6751
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, false, turnServerInfo);
6678
6752
  case 26:
6679
6753
  if (!(audioEnabled || videoEnabled)) {
6680
- _context31.next = 31;
6754
+ _context32.next = 31;
6681
6755
  break;
6682
6756
  }
6683
- _context31.next = 29;
6757
+ _context32.next = 29;
6684
6758
  return Meeting.handleDeviceLogging();
6685
6759
  case 29:
6686
- _context31.next = 32;
6760
+ _context32.next = 32;
6687
6761
  break;
6688
6762
  case 31:
6689
6763
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
6690
6764
  case 32:
6691
6765
  if (!this.mediaProperties.hasLocalShareStream()) {
6692
- _context31.next = 35;
6766
+ _context32.next = 35;
6693
6767
  break;
6694
6768
  }
6695
- _context31.next = 35;
6769
+ _context32.next = 35;
6696
6770
  return this.enqueueScreenShareFloorRequest();
6697
6771
  case 35:
6698
- _context31.next = 37;
6699
- return this.mediaProperties.getCurrentConnectionType();
6772
+ _context32.next = 37;
6773
+ return this.mediaProperties.getCurrentConnectionInfo();
6700
6774
  case 37:
6701
- connectionType = _context31.sent;
6702
- _context31.next = 40;
6775
+ _yield$this$mediaProp = _context32.sent;
6776
+ connectionType = _yield$this$mediaProp.connectionType;
6777
+ selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
6778
+ numTransports = _yield$this$mediaProp.numTransports;
6779
+ _context32.next = 43;
6703
6780
  return this.webex.meetings.reachability.getReachabilityMetrics();
6704
- case 40:
6705
- reachabilityStats = _context31.sent;
6781
+ case 43:
6782
+ reachabilityStats = _context32.sent;
6706
6783
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread({
6707
6784
  correlation_id: this.correlationId,
6708
6785
  locus_id: this.locusUrl.split('/').pop(),
6709
6786
  connectionType: connectionType,
6787
+ selectedCandidatePairChanges: selectedCandidatePairChanges,
6788
+ numTransports: numTransports,
6710
6789
  isMultistream: this.isMultistream,
6711
- retriedWithTurnServer: this.retriedWithTurnServer
6790
+ retriedWithTurnServer: this.retriedWithTurnServer,
6791
+ isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry
6712
6792
  }, reachabilityStats));
6713
6793
  // @ts-ignore
6714
6794
  this.webex.internal.newMetrics.submitClientEvent({
@@ -6721,51 +6801,60 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6721
6801
 
6722
6802
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
6723
6803
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
6724
- _context31.next = 59;
6804
+ _context32.next = 67;
6725
6805
  break;
6726
- case 47:
6727
- _context31.prev = 47;
6728
- _context31.t0 = _context31["catch"](19);
6729
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context31.t0);
6806
+ case 50:
6807
+ _context32.prev = 50;
6808
+ _context32.t0 = _context32["catch"](19);
6809
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context32.t0);
6730
6810
 
6731
6811
  // @ts-ignore
6732
- _context31.next = 52;
6812
+ _context32.next = 55;
6733
6813
  return this.webex.meetings.reachability.getReachabilityMetrics();
6734
- case 52:
6735
- reachabilityMetrics = _context31.sent;
6814
+ case 55:
6815
+ reachabilityMetrics = _context32.sent;
6816
+ _context32.next = 58;
6817
+ return this.mediaProperties.getCurrentConnectionInfo();
6818
+ case 58:
6819
+ _yield$this$mediaProp2 = _context32.sent;
6820
+ _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
6821
+ _numTransports = _yield$this$mediaProp2.numTransports;
6736
6822
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread({
6737
6823
  correlation_id: this.correlationId,
6738
6824
  locus_id: this.locusUrl.split('/').pop(),
6739
- reason: _context31.t0.message,
6740
- stack: _context31.t0.stack,
6741
- code: _context31.t0.code,
6825
+ reason: _context32.t0.message,
6826
+ stack: _context32.t0.stack,
6827
+ code: _context32.t0.code,
6828
+ selectedCandidatePairChanges: _selectedCandidatePairChanges,
6829
+ numTransports: _numTransports,
6742
6830
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
6743
6831
  turnServerUsed: this.turnServerUsed,
6744
6832
  retriedWithTurnServer: this.retriedWithTurnServer,
6745
6833
  isMultistream: this.isMultistream,
6834
+ isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,
6746
6835
  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',
6747
6836
  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',
6748
6837
  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'
6749
6838
  }, reachabilityMetrics));
6750
- _context31.next = 56;
6839
+ _context32.next = 64;
6751
6840
  return this.cleanUpOnAddMediaFailure();
6752
- case 56:
6841
+ case 64:
6753
6842
  // Upload logs on error while adding media
6754
6843
  _triggerProxy.default.trigger(this, {
6755
6844
  file: 'meeting/index',
6756
6845
  function: 'addMedia'
6757
6846
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
6758
- if (_context31.t0 instanceof _internalMediaCore.Errors.SdpError) {
6847
+ if (_context32.t0 instanceof _internalMediaCore.Errors.SdpError) {
6759
6848
  this.leave({
6760
6849
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
6761
6850
  });
6762
6851
  }
6763
- throw _context31.t0;
6764
- case 59:
6852
+ throw _context32.t0;
6853
+ case 67:
6765
6854
  case "end":
6766
- return _context31.stop();
6855
+ return _context32.stop();
6767
6856
  }
6768
- }, _callee31, this, [[19, 47]]);
6857
+ }, _callee32, this, [[19, 50]]);
6769
6858
  }));
6770
6859
  function addMedia() {
6771
6860
  return _addMedia.apply(this, arguments);
@@ -6833,35 +6922,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6833
6922
  * @memberof Meeting
6834
6923
  */
6835
6924
  function () {
6836
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(options) {
6837
- var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled;
6838
- return _regenerator.default.wrap(function _callee32$(_context32) {
6839
- while (1) switch (_context32.prev = _context32.next) {
6925
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
6926
+ var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
6927
+ return _regenerator.default.wrap(function _callee33$(_context33) {
6928
+ while (1) switch (_context33.prev = _context33.next) {
6840
6929
  case 0:
6841
6930
  this.checkMediaConnection();
6842
6931
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
6843
6932
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
6844
6933
  if (this.canUpdateMedia()) {
6845
- _context32.next = 5;
6934
+ _context33.next = 5;
6846
6935
  break;
6847
6936
  }
6848
- return _context32.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
6937
+ return _context33.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
6849
6938
  case 5:
6850
6939
  if (!this.isMultistream) {
6851
- _context32.next = 10;
6940
+ _context33.next = 10;
6852
6941
  break;
6853
6942
  }
6854
6943
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
6855
- _context32.next = 8;
6944
+ _context33.next = 8;
6856
6945
  break;
6857
6946
  }
6858
6947
  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');
6859
6948
  case 8:
6860
- _context32.next = 12;
6949
+ _context33.next = 12;
6861
6950
  break;
6862
6951
  case 10:
6863
6952
  if (!(shareAudioEnabled !== undefined)) {
6864
- _context32.next = 12;
6953
+ _context33.next = 12;
6865
6954
  break;
6866
6955
  }
6867
6956
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -6869,7 +6958,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6869
6958
  if (audioEnabled !== undefined) {
6870
6959
  this.mediaProperties.mediaDirection.sendAudio = audioEnabled;
6871
6960
  this.mediaProperties.mediaDirection.receiveAudio = audioEnabled;
6872
- this.audio.enable(this, audioEnabled);
6961
+ (_this$audio3 = this.audio) === null || _this$audio3 === void 0 ? void 0 : _this$audio3.enable(this, audioEnabled);
6873
6962
  if (this.isMultistream) {
6874
6963
  this.sendSlotManager.setActive(_internalMediaCore.MediaType.AudioMain, audioEnabled);
6875
6964
  }
@@ -6877,7 +6966,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6877
6966
  if (videoEnabled !== undefined) {
6878
6967
  this.mediaProperties.mediaDirection.sendVideo = videoEnabled;
6879
6968
  this.mediaProperties.mediaDirection.receiveVideo = videoEnabled;
6880
- this.video.enable(this, videoEnabled);
6969
+ (_this$video3 = this.video) === null || _this$video3 === void 0 ? void 0 : _this$video3.enable(this, videoEnabled);
6881
6970
  if (this.isMultistream) {
6882
6971
  this.sendSlotManager.setActive(_internalMediaCore.MediaType.VideoMain, videoEnabled);
6883
6972
  }
@@ -6886,18 +6975,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6886
6975
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
6887
6976
  }
6888
6977
  if (this.isMultistream) {
6889
- _context32.next = 18;
6978
+ _context33.next = 18;
6890
6979
  break;
6891
6980
  }
6892
- _context32.next = 18;
6981
+ _context33.next = 18;
6893
6982
  return this.updateTranscodedMediaConnection();
6894
6983
  case 18:
6895
- return _context32.abrupt("return", undefined);
6984
+ return _context33.abrupt("return", undefined);
6896
6985
  case 19:
6897
6986
  case "end":
6898
- return _context32.stop();
6987
+ return _context33.stop();
6899
6988
  }
6900
- }, _callee32, this);
6989
+ }, _callee33, this);
6901
6990
  }));
6902
6991
  function updateMedia(_x32) {
6903
6992
  return _updateMedia.apply(this, arguments);
@@ -7817,37 +7906,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7817
7906
  }, {
7818
7907
  key: "enableMusicMode",
7819
7908
  value: (function () {
7820
- var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(shouldEnableMusicMode) {
7821
- return _regenerator.default.wrap(function _callee33$(_context33) {
7822
- while (1) switch (_context33.prev = _context33.next) {
7909
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(shouldEnableMusicMode) {
7910
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7911
+ while (1) switch (_context34.prev = _context34.next) {
7823
7912
  case 0:
7824
7913
  this.checkMediaConnection();
7825
7914
  if (this.isMultistream) {
7826
- _context33.next = 3;
7915
+ _context34.next = 3;
7827
7916
  break;
7828
7917
  }
7829
7918
  throw new Error('enableMusicMode() only supported with multistream');
7830
7919
  case 3:
7831
7920
  if (!shouldEnableMusicMode) {
7832
- _context33.next = 8;
7921
+ _context34.next = 8;
7833
7922
  break;
7834
7923
  }
7835
- _context33.next = 6;
7924
+ _context34.next = 6;
7836
7925
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
7837
7926
  maxaveragebitrate: '64000',
7838
7927
  maxplaybackrate: '48000'
7839
7928
  });
7840
7929
  case 6:
7841
- _context33.next = 10;
7930
+ _context34.next = 10;
7842
7931
  break;
7843
7932
  case 8:
7844
- _context33.next = 10;
7933
+ _context34.next = 10;
7845
7934
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
7846
7935
  case 10:
7847
7936
  case "end":
7848
- return _context33.stop();
7937
+ return _context34.stop();
7849
7938
  }
7850
- }, _callee33, this);
7939
+ }, _callee34, this);
7851
7940
  }));
7852
7941
  function enableMusicMode(_x33) {
7853
7942
  return _enableMusicMode.apply(this, arguments);
@@ -7940,25 +8029,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7940
8029
  }, {
7941
8030
  key: "publishStream",
7942
8031
  value: (function () {
7943
- var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(mediaType, stream) {
7944
- return _regenerator.default.wrap(function _callee34$(_context34) {
7945
- while (1) switch (_context34.prev = _context34.next) {
8032
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(mediaType, stream) {
8033
+ return _regenerator.default.wrap(function _callee35$(_context35) {
8034
+ while (1) switch (_context35.prev = _context35.next) {
7946
8035
  case 0:
7947
8036
  if (stream) {
7948
- _context34.next = 2;
8037
+ _context35.next = 2;
7949
8038
  break;
7950
8039
  }
7951
- return _context34.abrupt("return");
8040
+ return _context35.abrupt("return");
7952
8041
  case 2:
7953
8042
  if (!this.mediaProperties.webrtcMediaConnection) {
7954
- _context34.next = 7;
8043
+ _context35.next = 7;
7955
8044
  break;
7956
8045
  }
7957
8046
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
7958
- _context34.next = 6;
8047
+ _context35.next = 6;
7959
8048
  break;
7960
8049
  }
7961
- _context34.next = 6;
8050
+ _context35.next = 6;
7962
8051
  return this.sendSlotManager.publishStream(mediaType, stream);
7963
8052
  case 6:
7964
8053
  this.emitPublishStateChangeEvent({
@@ -7969,9 +8058,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7969
8058
  });
7970
8059
  case 7:
7971
8060
  case "end":
7972
- return _context34.stop();
8061
+ return _context35.stop();
7973
8062
  }
7974
- }, _callee34, this);
8063
+ }, _callee35, this);
7975
8064
  }));
7976
8065
  function publishStream(_x34, _x35) {
7977
8066
  return _publishStream.apply(this, arguments);
@@ -7989,21 +8078,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7989
8078
  }, {
7990
8079
  key: "unpublishStream",
7991
8080
  value: (function () {
7992
- var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(mediaType, stream) {
7993
- return _regenerator.default.wrap(function _callee35$(_context35) {
7994
- while (1) switch (_context35.prev = _context35.next) {
8081
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8082
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8083
+ while (1) switch (_context36.prev = _context36.next) {
7995
8084
  case 0:
7996
8085
  if (stream) {
7997
- _context35.next = 2;
8086
+ _context36.next = 2;
7998
8087
  break;
7999
8088
  }
8000
- return _context35.abrupt("return");
8089
+ return _context36.abrupt("return");
8001
8090
  case 2:
8002
8091
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8003
- _context35.next = 5;
8092
+ _context36.next = 5;
8004
8093
  break;
8005
8094
  }
8006
- _context35.next = 5;
8095
+ _context36.next = 5;
8007
8096
  return this.sendSlotManager.unpublishStream(mediaType);
8008
8097
  case 5:
8009
8098
  this.emitPublishStateChangeEvent({
@@ -8014,9 +8103,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8014
8103
  });
8015
8104
  case 6:
8016
8105
  case "end":
8017
- return _context35.stop();
8106
+ return _context36.stop();
8018
8107
  }
8019
- }, _callee35, this);
8108
+ }, _callee36, this);
8020
8109
  }));
8021
8110
  function unpublishStream(_x36, _x37) {
8022
8111
  return _unpublishStream.apply(this, arguments);
@@ -8033,67 +8122,67 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8033
8122
  }, {
8034
8123
  key: "publishStreams",
8035
8124
  value: (function () {
8036
- var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(streams) {
8125
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
8037
8126
  var _streams$screenShare, _streams$screenShare2, _streams$microphone, _streams$camera, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6, _streams$screenShare7, _streams$screenShare8;
8038
8127
  var floorRequestNeeded, _streams$screenShare9;
8039
- return _regenerator.default.wrap(function _callee36$(_context36) {
8040
- while (1) switch (_context36.prev = _context36.next) {
8128
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8129
+ while (1) switch (_context37.prev = _context37.next) {
8041
8130
  case 0:
8042
8131
  this.checkMediaConnection();
8043
8132
  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))) {
8044
- _context36.next = 3;
8133
+ _context37.next = 3;
8045
8134
  break;
8046
8135
  }
8047
- return _context36.abrupt("return");
8136
+ return _context37.abrupt("return");
8048
8137
  case 3:
8049
8138
  if (!((streams === null || streams === void 0 ? void 0 : (_streams$microphone = streams.microphone) === null || _streams$microphone === void 0 ? void 0 : _streams$microphone.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$camera = streams.camera) === null || _streams$camera === void 0 ? void 0 : _streams$camera.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : (_streams$screenShare4 = _streams$screenShare3.audio) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare5 = streams.screenShare) === null || _streams$screenShare5 === void 0 ? void 0 : (_streams$screenShare6 = _streams$screenShare5.video) === null || _streams$screenShare6 === void 0 ? void 0 : _streams$screenShare6.readyState) === 'ended')) {
8050
- _context36.next = 5;
8139
+ _context37.next = 5;
8051
8140
  break;
8052
8141
  }
8053
8142
  throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8054
8143
  case 5:
8055
8144
  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
8056
8145
  if (!(this.isMultistream && (_streams$screenShare7 = streams.screenShare) !== null && _streams$screenShare7 !== void 0 && _streams$screenShare7.audio)) {
8057
- _context36.next = 10;
8146
+ _context37.next = 10;
8058
8147
  break;
8059
8148
  }
8060
- _context36.next = 9;
8149
+ _context37.next = 9;
8061
8150
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8062
8151
  case 9:
8063
8152
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8064
8153
  case 10:
8065
8154
  if (!((_streams$screenShare8 = streams.screenShare) !== null && _streams$screenShare8 !== void 0 && _streams$screenShare8.video)) {
8066
- _context36.next = 14;
8155
+ _context37.next = 14;
8067
8156
  break;
8068
8157
  }
8069
- _context36.next = 13;
8158
+ _context37.next = 13;
8070
8159
  return this.setLocalShareVideoStream((_streams$screenShare9 = streams.screenShare) === null || _streams$screenShare9 === void 0 ? void 0 : _streams$screenShare9.video);
8071
8160
  case 13:
8072
8161
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8073
8162
  case 14:
8074
8163
  if (!streams.microphone) {
8075
- _context36.next = 17;
8164
+ _context37.next = 17;
8076
8165
  break;
8077
8166
  }
8078
- _context36.next = 17;
8167
+ _context37.next = 17;
8079
8168
  return this.setLocalAudioStream(streams.microphone);
8080
8169
  case 17:
8081
8170
  if (!streams.camera) {
8082
- _context36.next = 20;
8171
+ _context37.next = 20;
8083
8172
  break;
8084
8173
  }
8085
- _context36.next = 20;
8174
+ _context37.next = 20;
8086
8175
  return this.setLocalVideoStream(streams.camera);
8087
8176
  case 20:
8088
8177
  if (this.isMultistream) {
8089
- _context36.next = 23;
8178
+ _context37.next = 23;
8090
8179
  break;
8091
8180
  }
8092
- _context36.next = 23;
8181
+ _context37.next = 23;
8093
8182
  return this.updateTranscodedMediaConnection();
8094
8183
  case 23:
8095
8184
  if (!floorRequestNeeded) {
8096
- _context36.next = 29;
8185
+ _context37.next = 29;
8097
8186
  break;
8098
8187
  }
8099
8188
  this.localShareInstanceId = _uuid.default.v4();
@@ -8117,13 +8206,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8117
8206
  // we're sending the http request to Locus to request the screen share floor
8118
8207
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8119
8208
  // and also if sharing from the start, we need confluence to have been created
8120
- _context36.next = 29;
8209
+ _context37.next = 29;
8121
8210
  return this.enqueueScreenShareFloorRequest();
8122
8211
  case 29:
8123
8212
  case "end":
8124
- return _context36.stop();
8213
+ return _context37.stop();
8125
8214
  }
8126
- }, _callee36, this);
8215
+ }, _callee37, this);
8127
8216
  }));
8128
8217
  function publishStreams(_x38) {
8129
8218
  return _publishStreams.apply(this, arguments);
@@ -8140,10 +8229,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8140
8229
  }, {
8141
8230
  key: "unpublishStreams",
8142
8231
  value: (function () {
8143
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
8232
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8144
8233
  var promises, _iterator, _step, stream;
8145
- return _regenerator.default.wrap(function _callee37$(_context37) {
8146
- while (1) switch (_context37.prev = _context37.next) {
8234
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8235
+ while (1) switch (_context38.prev = _context38.next) {
8147
8236
  case 0:
8148
8237
  this.checkMediaConnection();
8149
8238
  promises = [];
@@ -8174,7 +8263,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8174
8263
  if (!this.isMultistream) {
8175
8264
  promises.push(this.updateTranscodedMediaConnection());
8176
8265
  }
8177
- _context37.next = 7;
8266
+ _context38.next = 7;
8178
8267
  return _promise.default.all(promises);
8179
8268
  case 7:
8180
8269
  // we're allowing for the SDK to support just audio share as well
@@ -8195,9 +8284,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8195
8284
  }
8196
8285
  case 8:
8197
8286
  case "end":
8198
- return _context37.stop();
8287
+ return _context38.stop();
8199
8288
  }
8200
- }, _callee37, this);
8289
+ }, _callee38, this);
8201
8290
  }));
8202
8291
  function unpublishStreams(_x39) {
8203
8292
  return _unpublishStreams.apply(this, arguments);
@@ -8259,27 +8348,27 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8259
8348
  }], [{
8260
8349
  key: "handleDeviceLogging",
8261
8350
  value: (function () {
8262
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38() {
8351
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39() {
8263
8352
  var devices;
8264
- return _regenerator.default.wrap(function _callee38$(_context38) {
8265
- while (1) switch (_context38.prev = _context38.next) {
8353
+ return _regenerator.default.wrap(function _callee39$(_context39) {
8354
+ while (1) switch (_context39.prev = _context39.next) {
8266
8355
  case 0:
8267
- _context38.prev = 0;
8268
- _context38.next = 3;
8356
+ _context39.prev = 0;
8357
+ _context39.next = 3;
8269
8358
  return (0, _mediaHelpers.getDevices)();
8270
8359
  case 3:
8271
- devices = _context38.sent;
8360
+ devices = _context39.sent;
8272
8361
  _util2.default.handleDeviceLogging(devices);
8273
- _context38.next = 9;
8362
+ _context39.next = 9;
8274
8363
  break;
8275
8364
  case 7:
8276
- _context38.prev = 7;
8277
- _context38.t0 = _context38["catch"](0);
8365
+ _context39.prev = 7;
8366
+ _context39.t0 = _context39["catch"](0);
8278
8367
  case 9:
8279
8368
  case "end":
8280
- return _context38.stop();
8369
+ return _context39.stop();
8281
8370
  }
8282
- }, _callee38, null, [[0, 7]]);
8371
+ }, _callee39, null, [[0, 7]]);
8283
8372
  }));
8284
8373
  function handleDeviceLogging() {
8285
8374
  return _handleDeviceLogging.apply(this, arguments);