@webex/plugin-meetings 3.1.0 → 3.3.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 (206) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/common/errors/{reconnection-in-progress.js → reconnection-not-started.js} +27 -15
  4. package/dist/common/errors/reconnection-not-started.js.map +1 -0
  5. package/dist/constants.js +12 -3
  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/meeting/in-meeting-actions.js +6 -0
  18. package/dist/meeting/in-meeting-actions.js.map +1 -1
  19. package/dist/meeting/index.js +543 -467
  20. package/dist/meeting/index.js.map +1 -1
  21. package/dist/meeting/locusMediaRequest.js +27 -0
  22. package/dist/meeting/locusMediaRequest.js.map +1 -1
  23. package/dist/meeting/util.js +9 -16
  24. package/dist/meeting/util.js.map +1 -1
  25. package/dist/meeting/voicea-meeting.js +37 -49
  26. package/dist/meeting/voicea-meeting.js.map +1 -1
  27. package/dist/meeting-info/util.js +304 -267
  28. package/dist/meeting-info/util.js.map +1 -1
  29. package/dist/meeting-info/utilv2.js +334 -298
  30. package/dist/meeting-info/utilv2.js.map +1 -1
  31. package/dist/meetings/index.js +6 -27
  32. package/dist/meetings/index.js.map +1 -1
  33. package/dist/reachability/index.js +6 -0
  34. package/dist/reachability/index.js.map +1 -1
  35. package/dist/reconnection-manager/index.js +138 -109
  36. package/dist/reconnection-manager/index.js.map +1 -1
  37. package/dist/roap/request.js +3 -27
  38. package/dist/roap/request.js.map +1 -1
  39. package/dist/statsAnalyzer/index.js +4 -0
  40. package/dist/statsAnalyzer/index.js.map +1 -1
  41. package/dist/statsAnalyzer/mqaUtil.js +3 -0
  42. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  43. package/dist/types/common/errors/reconnection-not-started.d.ts +13 -0
  44. package/dist/{constants.d.ts → types/constants.d.ts} +11 -2
  45. package/dist/types/index.d.ts +19 -0
  46. package/dist/{media → types/media}/properties.d.ts +26 -2
  47. package/dist/{meeting → types/meeting}/in-meeting-actions.d.ts +6 -0
  48. package/dist/{meeting → types/meeting}/index.d.ts +5 -6
  49. package/dist/{meeting → types/meeting}/locusMediaRequest.d.ts +1 -0
  50. package/dist/{meeting → types/meeting}/util.d.ts +3 -0
  51. package/dist/{meeting → types/meeting}/voicea-meeting.d.ts +3 -2
  52. package/dist/{meeting-info → types/meeting-info}/index.d.ts +1 -1
  53. package/dist/{meeting-info → types/meeting-info}/meeting-info-v2.d.ts +1 -1
  54. package/dist/types/meeting-info/util.d.ts +49 -0
  55. package/dist/types/meeting-info/utilv2.d.ts +65 -0
  56. package/dist/{meetings → types/meetings}/index.d.ts +1 -16
  57. package/dist/{reconnection-manager → types/reconnection-manager}/index.d.ts +4 -14
  58. package/dist/webinar/index.js +1 -1
  59. package/package.json +22 -22
  60. package/src/common/errors/reconnection-not-started.ts +25 -0
  61. package/src/constants.ts +12 -4
  62. package/src/index.ts +30 -0
  63. package/src/locus-info/controlsUtils.ts +11 -0
  64. package/src/locus-info/index.ts +16 -0
  65. package/src/media/properties.ts +67 -15
  66. package/src/meeting/in-meeting-actions.ts +12 -0
  67. package/src/meeting/index.ts +121 -98
  68. package/src/meeting/locusMediaRequest.ts +31 -0
  69. package/src/meeting/util.ts +9 -16
  70. package/src/meeting/voicea-meeting.ts +44 -46
  71. package/src/meeting-info/util.ts +241 -233
  72. package/src/meeting-info/utilv2.ts +250 -244
  73. package/src/meetings/index.ts +8 -25
  74. package/src/reachability/index.ts +3 -0
  75. package/src/reconnection-manager/index.ts +128 -105
  76. package/src/roap/request.ts +1 -24
  77. package/src/statsAnalyzer/index.ts +4 -0
  78. package/src/statsAnalyzer/mqaUtil.ts +5 -0
  79. package/test/unit/spec/locus-info/controlsUtils.js +20 -0
  80. package/test/unit/spec/locus-info/index.js +21 -0
  81. package/test/unit/spec/media/properties.ts +145 -140
  82. package/test/unit/spec/meeting/in-meeting-actions.ts +6 -0
  83. package/test/unit/spec/meeting/index.js +243 -97
  84. package/test/unit/spec/meeting/locusMediaRequest.ts +49 -0
  85. package/test/unit/spec/meeting/utils.js +3 -10
  86. package/test/unit/spec/meeting/voicea-meeting.ts +5 -14
  87. package/test/unit/spec/meetings/index.js +27 -8
  88. package/test/unit/spec/reconnection-manager/index.js +127 -39
  89. package/test/unit/spec/roap/request.ts +0 -37
  90. package/test/unit/spec/stats-analyzer/index.js +11 -0
  91. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  92. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  93. package/dist/index.d.ts +0 -7
  94. package/dist/meeting-info/util.d.ts +0 -2
  95. package/dist/meeting-info/utilv2.d.ts +0 -2
  96. package/src/common/errors/reconnection-in-progress.ts +0 -8
  97. /package/dist/{annotation → types/annotation}/annotation.types.d.ts +0 -0
  98. /package/dist/{annotation → types/annotation}/constants.d.ts +0 -0
  99. /package/dist/{annotation → types/annotation}/index.d.ts +0 -0
  100. /package/dist/{breakouts → types/breakouts}/breakout.d.ts +0 -0
  101. /package/dist/{breakouts → types/breakouts}/collection.d.ts +0 -0
  102. /package/dist/{breakouts → types/breakouts}/edit-lock-error.d.ts +0 -0
  103. /package/dist/{breakouts → types/breakouts}/events.d.ts +0 -0
  104. /package/dist/{breakouts → types/breakouts}/index.d.ts +0 -0
  105. /package/dist/{breakouts → types/breakouts}/request.d.ts +0 -0
  106. /package/dist/{breakouts → types/breakouts}/utils.d.ts +0 -0
  107. /package/dist/{common → types/common}/browser-detection.d.ts +0 -0
  108. /package/dist/{common → types/common}/collection.d.ts +0 -0
  109. /package/dist/{common → types/common}/config.d.ts +0 -0
  110. /package/dist/{common → types/common}/errors/captcha-error.d.ts +0 -0
  111. /package/dist/{common → types/common}/errors/intent-to-join.d.ts +0 -0
  112. /package/dist/{common → types/common}/errors/join-meeting.d.ts +0 -0
  113. /package/dist/{common → types/common}/errors/media.d.ts +0 -0
  114. /package/dist/{common → types/common}/errors/no-meeting-info.d.ts +0 -0
  115. /package/dist/{common → types/common}/errors/parameter.d.ts +0 -0
  116. /package/dist/{common → types/common}/errors/password-error.d.ts +0 -0
  117. /package/dist/{common → types/common}/errors/permission.d.ts +0 -0
  118. /package/dist/{common → types/common}/errors/reclaim-host-role-errors.d.ts +0 -0
  119. /package/dist/{common → types/common}/errors/reconnection.d.ts +0 -0
  120. /package/dist/{common → types/common}/errors/stats.d.ts +0 -0
  121. /package/dist/{common → types/common}/errors/webex-errors.d.ts +0 -0
  122. /package/dist/{common → types/common}/errors/webex-meetings-error.d.ts +0 -0
  123. /package/dist/{common → types/common}/events/events-scope.d.ts +0 -0
  124. /package/dist/{common → types/common}/events/events.d.ts +0 -0
  125. /package/dist/{common → types/common}/events/trigger-proxy.d.ts +0 -0
  126. /package/dist/{common → types/common}/events/util.d.ts +0 -0
  127. /package/dist/{common → types/common}/logs/logger-config.d.ts +0 -0
  128. /package/dist/{common → types/common}/logs/logger-proxy.d.ts +0 -0
  129. /package/dist/{common → types/common}/logs/request.d.ts +0 -0
  130. /package/dist/{common → types/common}/queue.d.ts +0 -0
  131. /package/dist/{config.d.ts → types/config.d.ts} +0 -0
  132. /package/dist/{controls-options-manager → types/controls-options-manager}/constants.d.ts +0 -0
  133. /package/dist/{controls-options-manager → types/controls-options-manager}/enums.d.ts +0 -0
  134. /package/dist/{controls-options-manager → types/controls-options-manager}/index.d.ts +0 -0
  135. /package/dist/{controls-options-manager → types/controls-options-manager}/types.d.ts +0 -0
  136. /package/dist/{controls-options-manager → types/controls-options-manager}/util.d.ts +0 -0
  137. /package/dist/{interceptors → types/interceptors}/index.d.ts +0 -0
  138. /package/dist/{interceptors → types/interceptors}/locusRetry.d.ts +0 -0
  139. /package/dist/{interpretation → types/interpretation}/collection.d.ts +0 -0
  140. /package/dist/{interpretation → types/interpretation}/index.d.ts +0 -0
  141. /package/dist/{interpretation → types/interpretation}/siLanguage.d.ts +0 -0
  142. /package/dist/{locus-info → types/locus-info}/controlsUtils.d.ts +0 -0
  143. /package/dist/{locus-info → types/locus-info}/embeddedAppsUtils.d.ts +0 -0
  144. /package/dist/{locus-info → types/locus-info}/fullState.d.ts +0 -0
  145. /package/dist/{locus-info → types/locus-info}/hostUtils.d.ts +0 -0
  146. /package/dist/{locus-info → types/locus-info}/index.d.ts +0 -0
  147. /package/dist/{locus-info → types/locus-info}/infoUtils.d.ts +0 -0
  148. /package/dist/{locus-info → types/locus-info}/mediaSharesUtils.d.ts +0 -0
  149. /package/dist/{locus-info → types/locus-info}/parser.d.ts +0 -0
  150. /package/dist/{locus-info → types/locus-info}/selfUtils.d.ts +0 -0
  151. /package/dist/{media → types/media}/MediaConnectionAwaiter.d.ts +0 -0
  152. /package/dist/{media → types/media}/index.d.ts +0 -0
  153. /package/dist/{media → types/media}/util.d.ts +0 -0
  154. /package/dist/{mediaQualityMetrics → types/mediaQualityMetrics}/config.d.ts +0 -0
  155. /package/dist/{meeting → types/meeting}/muteState.d.ts +0 -0
  156. /package/dist/{meeting → types/meeting}/request.d.ts +0 -0
  157. /package/dist/{meeting → types/meeting}/request.type.d.ts +0 -0
  158. /package/dist/{meeting → types/meeting}/state.d.ts +0 -0
  159. /package/dist/{meeting-info → types/meeting-info}/collection.d.ts +0 -0
  160. /package/dist/{meeting-info → types/meeting-info}/request.d.ts +0 -0
  161. /package/dist/{meetings → types/meetings}/collection.d.ts +0 -0
  162. /package/dist/{meetings → types/meetings}/meetings.types.d.ts +0 -0
  163. /package/dist/{meetings → types/meetings}/request.d.ts +0 -0
  164. /package/dist/{meetings → types/meetings}/util.d.ts +0 -0
  165. /package/dist/{member → types/member}/index.d.ts +0 -0
  166. /package/dist/{member → types/member}/types.d.ts +0 -0
  167. /package/dist/{member → types/member}/util.d.ts +0 -0
  168. /package/dist/{members → types/members}/collection.d.ts +0 -0
  169. /package/dist/{members → types/members}/index.d.ts +0 -0
  170. /package/dist/{members → types/members}/request.d.ts +0 -0
  171. /package/dist/{members → types/members}/types.d.ts +0 -0
  172. /package/dist/{members → types/members}/util.d.ts +0 -0
  173. /package/dist/{metrics → types/metrics}/constants.d.ts +0 -0
  174. /package/dist/{metrics → types/metrics}/index.d.ts +0 -0
  175. /package/dist/{multistream → types/multistream}/mediaRequestManager.d.ts +0 -0
  176. /package/dist/{multistream → types/multistream}/receiveSlot.d.ts +0 -0
  177. /package/dist/{multistream → types/multistream}/receiveSlotManager.d.ts +0 -0
  178. /package/dist/{multistream → types/multistream}/remoteMedia.d.ts +0 -0
  179. /package/dist/{multistream → types/multistream}/remoteMediaGroup.d.ts +0 -0
  180. /package/dist/{multistream → types/multistream}/remoteMediaManager.d.ts +0 -0
  181. /package/dist/{multistream → types/multistream}/sendSlotManager.d.ts +0 -0
  182. /package/dist/{networkQualityMonitor → types/networkQualityMonitor}/index.d.ts +0 -0
  183. /package/dist/{personal-meeting-room → types/personal-meeting-room}/index.d.ts +0 -0
  184. /package/dist/{personal-meeting-room → types/personal-meeting-room}/request.d.ts +0 -0
  185. /package/dist/{personal-meeting-room → types/personal-meeting-room}/util.d.ts +0 -0
  186. /package/dist/{reachability → types/reachability}/clusterReachability.d.ts +0 -0
  187. /package/dist/{reachability → types/reachability}/index.d.ts +0 -0
  188. /package/dist/{reachability → types/reachability}/request.d.ts +0 -0
  189. /package/dist/{reachability → types/reachability}/util.d.ts +0 -0
  190. /package/dist/{reactions → types/reactions}/constants.d.ts +0 -0
  191. /package/dist/{reactions → types/reactions}/reactions.d.ts +0 -0
  192. /package/dist/{reactions → types/reactions}/reactions.type.d.ts +0 -0
  193. /package/dist/{recording-controller → types/recording-controller}/enums.d.ts +0 -0
  194. /package/dist/{recording-controller → types/recording-controller}/index.d.ts +0 -0
  195. /package/dist/{recording-controller → types/recording-controller}/util.d.ts +0 -0
  196. /package/dist/{roap → types/roap}/index.d.ts +0 -0
  197. /package/dist/{roap → types/roap}/request.d.ts +0 -0
  198. /package/dist/{roap → types/roap}/turnDiscovery.d.ts +0 -0
  199. /package/dist/{rtcMetrics → types/rtcMetrics}/constants.d.ts +0 -0
  200. /package/dist/{rtcMetrics → types/rtcMetrics}/index.d.ts +0 -0
  201. /package/dist/{statsAnalyzer → types/statsAnalyzer}/global.d.ts +0 -0
  202. /package/dist/{statsAnalyzer → types/statsAnalyzer}/index.d.ts +0 -0
  203. /package/dist/{statsAnalyzer → types/statsAnalyzer}/mqaUtil.d.ts +0 -0
  204. /package/dist/{transcription → types/transcription}/index.d.ts +0 -0
  205. /package/dist/{webinar → types/webinar}/collection.d.ts +0 -0
  206. /package/dist/{webinar → types/webinar}/index.d.ts +0 -0
@@ -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
@@ -1972,10 +1973,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1972
1973
  */
1973
1974
  _this.remoteMediaManager = null;
1974
1975
  _this.localAudioStreamMuteStateHandler = function () {
1975
- _this.audio.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1976
+ var _this$audio;
1977
+ (_this$audio = _this.audio) === null || _this$audio === void 0 ? void 0 : _this$audio.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1976
1978
  };
1977
1979
  _this.localVideoStreamMuteStateHandler = function () {
1978
- _this.video.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1980
+ var _this$video;
1981
+ (_this$video = _this.video) === null || _this$video === void 0 ? void 0 : _this$video.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1979
1982
  };
1980
1983
 
1981
1984
  // The handling of output track changes should be done inside
@@ -2041,6 +2044,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2041
2044
  * @memberof Meeting
2042
2045
  */
2043
2046
  _this.hasMediaConnectionConnectedAtLeastOnce = false;
2047
+
2048
+ /**
2049
+ * Information needed for a retry of a call to joinWithMedia
2050
+ * @instance
2051
+ * @type {{isRetry: boolean; prevJoinResponse?: any}}
2052
+ * @private
2053
+ * @memberof Meeting
2054
+ */
2055
+ _this.joinWithMediaRetryInfo = {
2056
+ isRetry: false,
2057
+ prevJoinResponse: undefined
2058
+ };
2044
2059
  return _this;
2045
2060
  }
2046
2061
 
@@ -2935,24 +2950,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2935
2950
  }
2936
2951
  }
2937
2952
  });
2938
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref12) {
2939
- var breakout = _ref12.breakout;
2953
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref12) {
2954
+ var enable = _ref12.enable;
2955
+ _triggerProxy.default.trigger(_this13, {
2956
+ file: 'meeting/index',
2957
+ function: 'setupLocusControlsListener'
2958
+ }, _constants.EVENT_TRIGGERS.MEETING_MANUAL_CAPTION_UPDATED, {
2959
+ enable: enable
2960
+ });
2961
+ });
2962
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref13) {
2963
+ var breakout = _ref13.breakout;
2940
2964
  _this13.breakouts.updateBreakout(breakout);
2941
2965
  _triggerProxy.default.trigger(_this13, {
2942
2966
  file: 'meeting/index',
2943
2967
  function: 'setupLocusControlsListener'
2944
2968
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
2945
2969
  });
2946
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref13) {
2947
- var interpretation = _ref13.interpretation;
2970
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref14) {
2971
+ var interpretation = _ref14.interpretation;
2948
2972
  _this13.simultaneousInterpretation.updateInterpretation(interpretation);
2949
2973
  _triggerProxy.default.trigger(_this13, {
2950
2974
  file: 'meeting/index',
2951
2975
  function: 'setupLocusControlsListener'
2952
2976
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
2953
2977
  });
2954
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref14) {
2955
- var entryExitTone = _ref14.entryExitTone;
2978
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref15) {
2979
+ var entryExitTone = _ref15.entryExitTone;
2956
2980
  _triggerProxy.default.trigger(_this13, {
2957
2981
  file: 'meeting/index',
2958
2982
  function: 'setupLocusControlsListener'
@@ -2960,8 +2984,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2960
2984
  entryExitTone: entryExitTone
2961
2985
  });
2962
2986
  });
2963
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref15) {
2964
- var state = _ref15.state;
2987
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref16) {
2988
+ var state = _ref16.state;
2965
2989
  _triggerProxy.default.trigger(_this13, {
2966
2990
  file: 'meeting/index',
2967
2991
  function: 'setupLocusControlsListener'
@@ -2969,8 +2993,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2969
2993
  state: state
2970
2994
  });
2971
2995
  });
2972
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref16) {
2973
- var state = _ref16.state;
2996
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref17) {
2997
+ var state = _ref17.state;
2974
2998
  _triggerProxy.default.trigger(_this13, {
2975
2999
  file: 'meeting/index',
2976
3000
  function: 'setupLocusControlsListener'
@@ -2978,8 +3002,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2978
3002
  state: state
2979
3003
  });
2980
3004
  });
2981
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref17) {
2982
- var state = _ref17.state;
3005
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref18) {
3006
+ var state = _ref18.state;
2983
3007
  _triggerProxy.default.trigger(_this13, {
2984
3008
  file: 'meeting/index',
2985
3009
  function: 'setupLocusControlsListener'
@@ -2987,8 +3011,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2987
3011
  state: state
2988
3012
  });
2989
3013
  });
2990
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref18) {
2991
- var state = _ref18.state;
3014
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref19) {
3015
+ var state = _ref19.state;
2992
3016
  _triggerProxy.default.trigger(_this13, {
2993
3017
  file: 'meeting/index',
2994
3018
  function: 'setupLocusControlsListener'
@@ -2996,8 +3020,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2996
3020
  state: state
2997
3021
  });
2998
3022
  });
2999
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref19) {
3000
- var state = _ref19.state;
3023
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref20) {
3024
+ var state = _ref20.state;
3001
3025
  _triggerProxy.default.trigger(_this13, {
3002
3026
  file: 'meeting/index',
3003
3027
  function: 'setupLocusControlsListener'
@@ -3005,8 +3029,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3005
3029
  state: state
3006
3030
  });
3007
3031
  });
3008
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref20) {
3009
- var state = _ref20.state;
3032
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref21) {
3033
+ var state = _ref21.state;
3010
3034
  _triggerProxy.default.trigger(_this13, {
3011
3035
  file: 'meeting/index',
3012
3036
  function: 'setupLocusControlsListener'
@@ -3014,8 +3038,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3014
3038
  state: state
3015
3039
  });
3016
3040
  });
3017
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref21) {
3018
- var state = _ref21.state;
3041
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref22) {
3042
+ var state = _ref22.state;
3019
3043
  _triggerProxy.default.trigger(_this13, {
3020
3044
  file: 'meeting/index',
3021
3045
  function: 'setupLocusControlsListener'
@@ -3062,7 +3086,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3062
3086
  var _this14 = this;
3063
3087
  // Will get triggered on local and remote share
3064
3088
  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) {
3089
+ var _ref23 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3066
3090
  var _payload$previous, _payload$previous2;
3067
3091
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, oldShareStatus, sendStartedSharingRemote, _this14$mediaProperti;
3068
3092
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3259,7 +3283,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3259
3283
  }, _callee8, null, [[26,, 30, 33]]);
3260
3284
  }));
3261
3285
  return function (_x8) {
3262
- return _ref22.apply(this, arguments);
3286
+ return _ref23.apply(this, arguments);
3263
3287
  };
3264
3288
  }());
3265
3289
  }
@@ -3350,8 +3374,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3350
3374
  });
3351
3375
  }
3352
3376
  });
3353
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref23) {
3354
- var isInitializing = _ref23.isInitializing;
3377
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref24) {
3378
+ var isInitializing = _ref24.isInitializing;
3355
3379
  _this17.updateMeetingActions();
3356
3380
  _this17.recordingController.setDisplayHints(_this17.userDisplayHints);
3357
3381
  _this17.recordingController.setUserPolicy(_this17.selfUserPolicies);
@@ -3483,9 +3507,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3483
3507
  }
3484
3508
  });
3485
3509
  }
3510
+ _this19.updateLLMConnection();
3486
3511
  });
3487
3512
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
3488
- var _ref24 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3513
+ var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3489
3514
  return _regenerator.default.wrap(function _callee9$(_context9) {
3490
3515
  while (1) switch (_context9.prev = _context9.next) {
3491
3516
  case 0:
@@ -3514,7 +3539,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3514
3539
  }, _callee9);
3515
3540
  }));
3516
3541
  return function (_x9) {
3517
- return _ref24.apply(this, arguments);
3542
+ return _ref25.apply(this, arguments);
3518
3543
  };
3519
3544
  }());
3520
3545
 
@@ -3619,7 +3644,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3619
3644
  }
3620
3645
  });
3621
3646
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
3622
- var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3647
+ var _ref26 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3623
3648
  return _regenerator.default.wrap(function _callee10$(_context10) {
3624
3649
  while (1) switch (_context10.prev = _context10.next) {
3625
3650
  case 0:
@@ -3679,7 +3704,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3679
3704
  }, _callee10, null, [[8, 14]]);
3680
3705
  }));
3681
3706
  return function (_x10) {
3682
- return _ref25.apply(this, arguments);
3707
+ return _ref26.apply(this, arguments);
3683
3708
  };
3684
3709
  }());
3685
3710
  }
@@ -3962,6 +3987,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3962
3987
  canStartTranscribing: _util2.default.canStartTranscribing(this.userDisplayHints),
3963
3988
  canStopTranscribing: _util2.default.canStopTranscribing(this.userDisplayHints),
3964
3989
  isClosedCaptionActive: _util2.default.isClosedCaptionActive(this.userDisplayHints),
3990
+ canStartManualCaption: _util2.default.canStartManualCaption(this.userDisplayHints),
3991
+ canStopManualCaption: _util2.default.canStopManualCaption(this.userDisplayHints),
3992
+ isManualCaptionActive: _util2.default.isManualCaptionActive(this.userDisplayHints),
3965
3993
  isSaveTranscriptsEnabled: _util2.default.isSaveTranscriptsEnabled(this.userDisplayHints),
3966
3994
  isWebexAssistantActive: _util2.default.isWebexAssistantActive(this.userDisplayHints),
3967
3995
  canViewCaptionPanel: _util2.default.canViewCaptionPanel(this.userDisplayHints),
@@ -4267,6 +4295,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4267
4295
  key: "setLocalAudioStream",
4268
4296
  value: (function () {
4269
4297
  var _setLocalAudioStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(localStream) {
4298
+ var _this$audio2;
4270
4299
  var oldStream;
4271
4300
  return _regenerator.default.wrap(function _callee11$(_context11) {
4272
4301
  while (1) switch (_context11.prev = _context11.next) {
@@ -4278,7 +4307,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4278
4307
 
4279
4308
  // we don't update this.mediaProperties.mediaDirection.sendAudio, because we always keep it as true to avoid extra SDP exchanges
4280
4309
  this.mediaProperties.setLocalAudioStream(localStream);
4281
- this.audio.handleLocalStreamChange(this);
4310
+ (_this$audio2 = this.audio) === null || _this$audio2 === void 0 ? void 0 : _this$audio2.handleLocalStreamChange(this);
4282
4311
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
4283
4312
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
4284
4313
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
@@ -4314,6 +4343,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4314
4343
  key: "setLocalVideoStream",
4315
4344
  value: (function () {
4316
4345
  var _setLocalVideoStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(localStream) {
4346
+ var _this$video2;
4317
4347
  var oldStream;
4318
4348
  return _regenerator.default.wrap(function _callee12$(_context12) {
4319
4349
  while (1) switch (_context12.prev = _context12.next) {
@@ -4325,7 +4355,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4325
4355
 
4326
4356
  // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges
4327
4357
  this.mediaProperties.setLocalVideoStream(localStream);
4328
- this.video.handleLocalStreamChange(this);
4358
+ (_this$video2 = this.video) === null || _this$video2 === void 0 ? void 0 : _this$video2.handleLocalStreamChange(this);
4329
4359
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
4330
4360
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
4331
4361
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
@@ -4886,11 +4916,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4886
4916
  mediaOptions,
4887
4917
  _options$joinOptions,
4888
4918
  joinOptions,
4919
+ _this$joinWithMediaRe,
4920
+ isRetry,
4921
+ prevJoinResponse,
4889
4922
  joined,
4923
+ joinResponse,
4890
4924
  turnServerInfo,
4891
4925
  turnDiscoverySkippedReason,
4892
4926
  turnDiscoveryRequest,
4893
- joinResponse,
4894
4927
  _yield$this$roap$hand,
4895
4928
  mediaResponse,
4896
4929
  _this$locusUrl,
@@ -4902,38 +4935,46 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4902
4935
  case 0:
4903
4936
  options = _args15.length > 0 && _args15[0] !== undefined ? _args15[0] : {};
4904
4937
  mediaOptions = options.mediaOptions, _options$joinOptions = options.joinOptions, joinOptions = _options$joinOptions === void 0 ? {} : _options$joinOptions;
4938
+ _this$joinWithMediaRe = this.joinWithMediaRetryInfo, isRetry = _this$joinWithMediaRe.isRetry, prevJoinResponse = _this$joinWithMediaRe.prevJoinResponse;
4905
4939
  if (mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.allowMediaInLobby) {
4906
- _context15.next = 4;
4940
+ _context15.next = 5;
4907
4941
  break;
4908
4942
  }
4909
4943
  return _context15.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
4910
- case 4:
4944
+ case 5:
4911
4945
  this.allowMediaInLobby = true;
4912
4946
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia called');
4913
4947
  joined = false;
4914
- _context15.prev = 7;
4915
- _context15.next = 10;
4948
+ joinResponse = prevJoinResponse;
4949
+ _context15.prev = 9;
4950
+ _context15.next = 12;
4916
4951
  return this.webex.meetings.reachability.getReachabilityResults();
4917
- case 10:
4952
+ case 12:
4918
4953
  joinOptions.reachability = _context15.sent;
4919
- _context15.next = 13;
4954
+ _context15.next = 15;
4920
4955
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
4921
- case 13:
4956
+ case 15:
4922
4957
  turnDiscoveryRequest = _context15.sent;
4923
4958
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
4924
4959
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
4925
- _context15.next = 18;
4960
+ if (joinResponse) {
4961
+ _context15.next = 23;
4962
+ break;
4963
+ }
4964
+ _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
4965
+ _context15.next = 22;
4926
4966
  return this.join(joinOptions);
4927
- case 18:
4967
+ case 22:
4928
4968
  joinResponse = _context15.sent;
4969
+ case 23:
4929
4970
  joined = true;
4930
4971
  if (!joinOptions.roapMessage) {
4931
- _context15.next = 29;
4972
+ _context15.next = 33;
4932
4973
  break;
4933
4974
  }
4934
- _context15.next = 23;
4975
+ _context15.next = 27;
4935
4976
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
4936
- case 23:
4977
+ case 27:
4937
4978
  _yield$this$roap$hand = _context15.sent;
4938
4979
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
4939
4980
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
@@ -4942,55 +4983,73 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4942
4983
  if (turnServerInfo === undefined) {
4943
4984
  this.roap.abortTurnDiscovery();
4944
4985
  }
4945
- case 29:
4946
- _context15.next = 31;
4986
+ case 33:
4987
+ _context15.next = 35;
4947
4988
  return this.addMedia(mediaOptions, turnServerInfo);
4948
- case 31:
4989
+ case 35:
4949
4990
  mediaResponse = _context15.sent;
4991
+ this.joinWithMediaRetryInfo = {
4992
+ isRetry: false,
4993
+ prevJoinResponse: undefined
4994
+ };
4950
4995
  return _context15.abrupt("return", {
4951
4996
  join: joinResponse,
4952
4997
  media: mediaResponse
4953
4998
  });
4954
- case 35:
4955
- _context15.prev = 35;
4956
- _context15.t0 = _context15["catch"](7);
4999
+ case 40:
5000
+ _context15.prev = 40;
5001
+ _context15.t0 = _context15["catch"](9);
4957
5002
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context15.t0);
4958
5003
  this.roap.abortTurnDiscovery();
4959
- if (!joined) {
4960
- _context15.next = 49;
5004
+ if (!(joined && isRetry)) {
5005
+ _context15.next = 54;
4961
5006
  break;
4962
5007
  }
4963
- _context15.prev = 40;
4964
- _context15.next = 43;
5008
+ _context15.prev = 45;
5009
+ _context15.next = 48;
4965
5010
  return this.leave({
4966
5011
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
4967
5012
  reason: 'joinWithMedia failure'
4968
5013
  });
4969
- case 43:
4970
- _context15.next = 49;
5014
+ case 48:
5015
+ _context15.next = 54;
4971
5016
  break;
4972
- case 45:
4973
- _context15.prev = 45;
4974
- _context15.t1 = _context15["catch"](40);
5017
+ case 50:
5018
+ _context15.prev = 50;
5019
+ _context15.t1 = _context15["catch"](45);
4975
5020
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context15.t1);
4976
5021
  leaveError = _context15.t1;
4977
- case 49:
5022
+ case 54:
4978
5023
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
4979
5024
  correlation_id: this.correlationId,
4980
5025
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
4981
5026
  // if join fails, we may end up with no locusUrl
4982
5027
  reason: _context15.t0.message,
4983
5028
  stack: _context15.t0.stack,
4984
- leaveErrorReason: (_leaveError = leaveError) === null || _leaveError === void 0 ? void 0 : _leaveError.message
5029
+ leaveErrorReason: (_leaveError = leaveError) === null || _leaveError === void 0 ? void 0 : _leaveError.message,
5030
+ isRetry: isRetry
4985
5031
  }, {
4986
5032
  type: _context15.t0.name
4987
5033
  });
5034
+ if (isRetry) {
5035
+ _context15.next = 60;
5036
+ break;
5037
+ }
5038
+ _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
5039
+ this.joinWithMediaRetryInfo.isRetry = true;
5040
+ this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
5041
+ return _context15.abrupt("return", this.joinWithMedia(options));
5042
+ case 60:
5043
+ this.joinWithMediaRetryInfo = {
5044
+ isRetry: false,
5045
+ prevJoinResponse: undefined
5046
+ };
4988
5047
  throw _context15.t0;
4989
- case 51:
5048
+ case 62:
4990
5049
  case "end":
4991
5050
  return _context15.stop();
4992
5051
  }
4993
- }, _callee15, this, [[7, 35], [40, 45]]);
5052
+ }, _callee15, this, [[9, 40], [45, 50]]);
4994
5053
  }));
4995
5054
  function joinWithMedia() {
4996
5055
  return _joinWithMedia.apply(this, arguments);
@@ -5019,66 +5078,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5019
5078
  if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
5020
5079
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
5021
5080
  }
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
5081
+ return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5082
+ return _regenerator.default.wrap(function _callee16$(_context16) {
5083
+ while (1) switch (_context16.prev = _context16.next) {
5084
+ case 0:
5085
+ _context16.next = 2;
5086
+ return _this28.waitForRemoteSDPAnswer();
5087
+ case 2:
5088
+ _context16.next = 4;
5089
+ return _this28.waitForMediaConnectionConnected();
5090
+ case 4:
5091
+ case "end":
5092
+ return _context16.stop();
5058
5093
  }
5059
- });
5060
- _this28.reconnectionManager.setStatus(_constants.RECONNECTION.STATE.COMPLETE);
5094
+ }, _callee16);
5095
+ }))).then(function () {
5096
+ _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect success');
5061
5097
  }).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
- });
5098
+ if (error instanceof _reconnectionNotStarted.default) {
5099
+ _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect not started');
5100
+ return _promise.default.resolve();
5101
+ }
5068
5102
  _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
5103
  _this28.uploadLogs({
5076
5104
  file: 'meeting/index',
5077
5105
  function: 'reconnect'
5078
5106
  });
5079
- return _promise.default.reject(new _reconnection.default('Reconnection failure event', error));
5080
- }).finally(function () {
5081
- _this28.reconnectionManager.reset();
5107
+ return _promise.default.reject(error);
5082
5108
  });
5083
5109
  }
5084
5110
 
@@ -5091,10 +5117,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5091
5117
  key: "isTranscriptionSupported",
5092
5118
  value: function isTranscriptionSupported() {
5093
5119
  var _this$locusInfo$contr;
5094
- if ((_this$locusInfo$contr = this.locusInfo.controls.transcribe) !== null && _this$locusInfo$contr !== void 0 && _this$locusInfo$contr.transcribing) {
5120
+ if ((_this$locusInfo$contr = this.locusInfo.controls.transcribe) !== null && _this$locusInfo$contr !== void 0 && _this$locusInfo$contr.caption) {
5095
5121
  return true;
5096
5122
  }
5097
- _loggerProxy.default.logger.error('Meeting:index#isTranscriptionSupported --> Webex Assistant is not enabled/supported');
5123
+ _loggerProxy.default.logger.error('Meeting:index#isTranscriptionSupported --> Closed Captions is not enabled/supported');
5098
5124
  return false;
5099
5125
  }
5100
5126
 
@@ -5202,48 +5228,48 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5202
5228
  }, {
5203
5229
  key: "startTranscription",
5204
5230
  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) {
5231
+ var _startTranscription = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(options) {
5232
+ return _regenerator.default.wrap(function _callee17$(_context17) {
5233
+ while (1) switch (_context17.prev = _context17.next) {
5208
5234
  case 0:
5209
5235
  if (!this.isJoined()) {
5210
- _context16.next = 15;
5236
+ _context17.next = 15;
5211
5237
  break;
5212
5238
  }
5213
5239
  _loggerProxy.default.logger.info('Meeting:index#startTranscription --> Attempting to enable transcription!');
5214
- _context16.prev = 2;
5240
+ _context17.prev = 2;
5215
5241
  if (!this.areVoiceaEventsSetup) {
5216
5242
  this.setUpVoiceaListeners();
5217
5243
  }
5218
5244
  if (!(this.getCurUserType() === 'host')) {
5219
- _context16.next = 7;
5245
+ _context17.next = 7;
5220
5246
  break;
5221
5247
  }
5222
- _context16.next = 7;
5223
- return this.webex.internal.voicea.toggleTranscribing(true, options === null || options === void 0 ? void 0 : options.spokenLanguage);
5248
+ _context17.next = 7;
5249
+ return this.webex.internal.voicea.turnOnCaptions(options === null || options === void 0 ? void 0 : options.spokenLanguage);
5224
5250
  case 7:
5225
- _context16.next = 13;
5251
+ _context17.next = 13;
5226
5252
  break;
5227
5253
  case 9:
5228
- _context16.prev = 9;
5229
- _context16.t0 = _context16["catch"](2);
5230
- _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_context16.t0));
5254
+ _context17.prev = 9;
5255
+ _context17.t0 = _context17["catch"](2);
5256
+ _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_context17.t0));
5231
5257
  _metrics.default.sendBehavioralMetric(_constants2.default.RECEIVE_TRANSCRIPTION_FAILURE, {
5232
5258
  correlation_id: this.correlationId,
5233
- reason: _context16.t0.message,
5234
- stack: _context16.t0.stack
5259
+ reason: _context17.t0.message,
5260
+ stack: _context17.t0.stack
5235
5261
  });
5236
5262
  case 13:
5237
- _context16.next = 17;
5263
+ _context17.next = 17;
5238
5264
  break;
5239
5265
  case 15:
5240
5266
  _loggerProxy.default.logger.error("Meeting:index#startTranscription --> meeting joined : ".concat(this.isJoined()));
5241
5267
  throw new Error('Meeting is not joined');
5242
5268
  case 17:
5243
5269
  case "end":
5244
- return _context16.stop();
5270
+ return _context17.stop();
5245
5271
  }
5246
- }, _callee16, this, [[2, 9]]);
5272
+ }, _callee17, this, [[2, 9]]);
5247
5273
  }));
5248
5274
  function startTranscription(_x15) {
5249
5275
  return _startTranscription.apply(this, arguments);
@@ -5306,7 +5332,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5306
5332
  }, {
5307
5333
  key: "join",
5308
5334
  value: (function () {
5309
- var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
5335
+ var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5310
5336
  var _this31 = this;
5311
5337
  var options,
5312
5338
  errorMessage,
@@ -5317,25 +5343,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5317
5343
  _error,
5318
5344
  _errorMessage2,
5319
5345
  _error2,
5320
- _args17 = arguments;
5321
- return _regenerator.default.wrap(function _callee17$(_context17) {
5322
- while (1) switch (_context17.prev = _context17.next) {
5346
+ _args18 = arguments;
5347
+ return _regenerator.default.wrap(function _callee18$(_context18) {
5348
+ while (1) switch (_context18.prev = _context18.next) {
5323
5349
  case 0:
5324
- options = _args17.length > 0 && _args17[0] !== undefined ? _args17[0] : {};
5350
+ options = _args18.length > 0 && _args18[0] !== undefined ? _args18[0] : {};
5325
5351
  if (this.webex.meetings.registered) {
5326
- _context17.next = 6;
5352
+ _context18.next = 6;
5327
5353
  break;
5328
5354
  }
5329
5355
  errorMessage = 'Meeting:index#join --> Device not registered';
5330
5356
  error = new Error(errorMessage);
5331
5357
  _loggerProxy.default.logger.error(errorMessage);
5332
- return _context17.abrupt("return", _promise.default.reject(error));
5358
+ return _context18.abrupt("return", _promise.default.reject(error));
5333
5359
  case 6:
5334
5360
  if (!this.deferJoin) {
5335
- _context17.next = 8;
5361
+ _context18.next = 8;
5336
5362
  break;
5337
5363
  }
5338
- return _context17.abrupt("return", this.deferJoin);
5364
+ return _context18.abrupt("return", this.deferJoin);
5339
5365
  case 8:
5340
5366
  // Create a deferred promise for a consistent resolve value from utils.
5341
5367
  // This also prevents redundant API calls.
@@ -5384,15 +5410,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5384
5410
  this.wirelessShare = true;
5385
5411
  }
5386
5412
  if (!options.meetingQuality) {
5387
- _context17.next = 36;
5413
+ _context18.next = 36;
5388
5414
  break;
5389
5415
  }
5390
5416
  if (!(typeof options.meetingQuality === 'string')) {
5391
- _context17.next = 27;
5417
+ _context18.next = 27;
5392
5418
  break;
5393
5419
  }
5394
5420
  if (_constants.QUALITY_LEVELS[options.meetingQuality]) {
5395
- _context17.next = 26;
5421
+ _context18.next = 26;
5396
5422
  break;
5397
5423
  }
5398
5424
  _errorMessage = "Meeting:index#join --> ".concat(options.meetingQuality, " not defined");
@@ -5400,16 +5426,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5400
5426
  _loggerProxy.default.logger.error(_errorMessage);
5401
5427
  joinFailed(_error);
5402
5428
  this.deferJoin = undefined;
5403
- return _context17.abrupt("return", _promise.default.reject(_error));
5429
+ return _context18.abrupt("return", _promise.default.reject(_error));
5404
5430
  case 26:
5405
5431
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality);
5406
5432
  case 27:
5407
5433
  if (!((0, _typeof2.default)(options.meetingQuality) === 'object')) {
5408
- _context17.next = 36;
5434
+ _context18.next = 36;
5409
5435
  break;
5410
5436
  }
5411
5437
  if (_constants.QUALITY_LEVELS[options.meetingQuality.remote]) {
5412
- _context17.next = 35;
5438
+ _context18.next = 35;
5413
5439
  break;
5414
5440
  }
5415
5441
  _errorMessage2 = "Meeting:index#join --> ".concat(options.meetingQuality.remote, " not defined");
@@ -5417,42 +5443,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5417
5443
  _error2 = new Error(_errorMessage2);
5418
5444
  joinFailed(_error2);
5419
5445
  this.deferJoin = undefined;
5420
- return _context17.abrupt("return", _promise.default.reject(new Error(_errorMessage2)));
5446
+ return _context18.abrupt("return", _promise.default.reject(new Error(_errorMessage2)));
5421
5447
  case 35:
5422
5448
  if (options.meetingQuality.remote) {
5423
5449
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality.remote);
5424
5450
  }
5425
5451
  case 36:
5426
5452
  this.isMultistream = !!options.enableMultistream;
5427
- _context17.prev = 37;
5428
- _context17.next = 40;
5453
+ _context18.prev = 37;
5454
+ _context18.next = 40;
5429
5455
  return this.checkAndRefreshPermissionToken(_constants.MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC, _constants.MEETING_PERMISSION_TOKEN_REFRESH_REASON);
5430
5456
  case 40:
5431
- _context17.next = 51;
5457
+ _context18.next = 51;
5432
5458
  break;
5433
5459
  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;
5460
+ _context18.prev = 42;
5461
+ _context18.t0 = _context18["catch"](37);
5462
+ _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _context18.t0);
5463
+ if (!(_context18.t0 instanceof _captchaError.default || _context18.t0 instanceof _passwordError.default || _context18.t0 instanceof _permission.default)) {
5464
+ _context18.next = 51;
5439
5465
  break;
5440
5466
  }
5441
- this.meetingFiniteStateMachine.fail(_context17.t0);
5467
+ this.meetingFiniteStateMachine.fail(_context18.t0);
5442
5468
 
5443
5469
  // Upload logs on refreshpermissionToken refresh Failure
5444
5470
  _triggerProxy.default.trigger(this, {
5445
5471
  file: 'meeting/index',
5446
5472
  function: 'join'
5447
5473
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
5448
- joinFailed(_context17.t0);
5474
+ joinFailed(_context18.t0);
5449
5475
  this.deferJoin = undefined;
5450
5476
 
5451
5477
  // if refresh permission token requires captcha, password or permission, we are throwing the errors
5452
5478
  // and bubble it up to client
5453
- return _context17.abrupt("return", _promise.default.reject(_context17.t0));
5479
+ return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5454
5480
  case 51:
5455
- return _context17.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5481
+ return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5456
5482
  _this31.meetingFiniteStateMachine.join();
5457
5483
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5458
5484
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
@@ -5517,9 +5543,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5517
5543
  }));
5518
5544
  case 52:
5519
5545
  case "end":
5520
- return _context17.stop();
5546
+ return _context18.stop();
5521
5547
  }
5522
- }, _callee17, this, [[37, 42]]);
5548
+ }, _callee18, this, [[37, 42]]);
5523
5549
  }));
5524
5550
  function join() {
5525
5551
  return _join.apply(this, arguments);
@@ -5536,38 +5562,38 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5536
5562
  }, {
5537
5563
  key: "updateLLMConnection",
5538
5564
  value: (function () {
5539
- var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5565
+ var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5540
5566
  var _this32 = this;
5541
5567
  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) {
5568
+ return _regenerator.default.wrap(function _callee19$(_context19) {
5569
+ while (1) switch (_context19.prev = _context19.next) {
5544
5570
  case 0:
5545
5571
  // @ts-ignore - Fix type
5546
5572
  _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
5573
  isJoined = this.isJoined(); // @ts-ignore - Fix type
5548
5574
  if (!this.webex.internal.llm.isConnected()) {
5549
- _context18.next = 8;
5575
+ _context19.next = 8;
5550
5576
  break;
5551
5577
  }
5552
5578
  if (!(url === this.webex.internal.llm.getLocusUrl() && isJoined)) {
5553
- _context18.next = 5;
5579
+ _context19.next = 5;
5554
5580
  break;
5555
5581
  }
5556
- return _context18.abrupt("return", undefined);
5582
+ return _context19.abrupt("return", undefined);
5557
5583
  case 5:
5558
- _context18.next = 7;
5584
+ _context19.next = 7;
5559
5585
  return this.webex.internal.llm.disconnectLLM();
5560
5586
  case 7:
5561
5587
  // @ts-ignore - Fix type
5562
5588
  this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
5563
5589
  case 8:
5564
5590
  if (isJoined) {
5565
- _context18.next = 10;
5591
+ _context19.next = 10;
5566
5592
  break;
5567
5593
  }
5568
- return _context18.abrupt("return", undefined);
5594
+ return _context19.abrupt("return", undefined);
5569
5595
  case 10:
5570
- return _context18.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5596
+ return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5571
5597
  // @ts-ignore - Fix type
5572
5598
  _this32.webex.internal.llm.off('event:relay.event', _this32.processRelayEvent);
5573
5599
  // @ts-ignore - Fix type
@@ -5577,9 +5603,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5577
5603
  }));
5578
5604
  case 11:
5579
5605
  case "end":
5580
- return _context18.stop();
5606
+ return _context19.stop();
5581
5607
  }
5582
- }, _callee18, this);
5608
+ }, _callee19, this);
5583
5609
  }));
5584
5610
  function updateLLMConnection() {
5585
5611
  return _updateLLMConnection.apply(this, arguments);
@@ -5751,17 +5777,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5751
5777
  meetingId: this.id
5752
5778
  }
5753
5779
  });
5754
- this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5780
+ this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20() {
5755
5781
  var mediaSettings;
5756
- return _regenerator.default.wrap(function _callee19$(_context19) {
5757
- while (1) switch (_context19.prev = _context19.next) {
5782
+ return _regenerator.default.wrap(function _callee20$(_context20) {
5783
+ while (1) switch (_context20.prev = _context20.next) {
5758
5784
  case 0:
5759
- _context19.prev = 0;
5785
+ _context20.prev = 0;
5760
5786
  if (!(_this35.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5761
- _context19.next = 4;
5787
+ _context20.next = 4;
5762
5788
  break;
5763
5789
  }
5764
- _context19.next = 4;
5790
+ _context20.next = 4;
5765
5791
  return _this35.releaseScreenShareFloor();
5766
5792
  case 4:
5767
5793
  mediaSettings = {
@@ -5774,37 +5800,61 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5774
5800
  receiveShare: true
5775
5801
  }
5776
5802
  };
5777
- _this35.cleanupLocalStreams();
5778
5803
  _this35.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
5779
5804
  _this35.mediaProperties.unsetRemoteMedia();
5780
5805
 
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
- });
5806
+ // 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
5807
+ // once the device answers we close the old connection and create new media server connection with only share enabled
5808
+ if (!_this35.statsAnalyzer) {
5809
+ _context20.next = 10;
5810
+ break;
5811
+ }
5812
+ _context20.next = 10;
5813
+ return _this35.statsAnalyzer.stopAnalyzer();
5788
5814
  case 10:
5789
- _context19.next = 16;
5790
- break;
5815
+ _context20.next = 12;
5816
+ return _this35.closeRemoteStreams();
5791
5817
  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);
5818
+ _context20.next = 14;
5819
+ return _this35.closePeerConnections();
5820
+ case 14:
5821
+ _this35.cleanupLocalStreams();
5822
+ _this35.unsetRemoteStreams();
5823
+ _this35.unsetPeerConnections();
5824
+ _this35.reconnectionManager.cleanUp();
5825
+ _context20.next = 20;
5826
+ return _this35.addMedia({
5827
+ audioEnabled: false,
5828
+ videoEnabled: false,
5829
+ shareVideoEnabled: true
5830
+ });
5831
+ case 20:
5832
+ _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
5833
+ _this35.isMoveToInProgress = false;
5834
+ _context20.next = 29;
5835
+ break;
5836
+ case 24:
5837
+ _context20.prev = 24;
5838
+ _context20.t0 = _context20["catch"](0);
5839
+ _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
5795
5840
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
5796
5841
  correlation_id: _this35.correlationId,
5797
5842
  locus_id: _this35.locusUrl.split('/').pop(),
5798
- reason: _context19.t0.message,
5799
- stack: _context19.t0.stack
5843
+ reason: _context20.t0.message,
5844
+ stack: _context20.t0.stack
5800
5845
  });
5801
- case 16:
5846
+ _this35.isMoveToInProgress = false;
5847
+ case 29:
5802
5848
  case "end":
5803
- return _context19.stop();
5849
+ return _context20.stop();
5804
5850
  }
5805
- }, _callee19, null, [[0, 12]]);
5851
+ }, _callee20, null, [[0, 24]]);
5806
5852
  })));
5807
5853
  _loggerProxy.default.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
5854
+
5855
+ // TODO: Check with locus if SELF_OBSERVING event would ever be not emitted
5856
+ // If yes, introduce a timeout mechanism
5857
+ this.isMoveToInProgress = true;
5808
5858
  return _util2.default.joinMeetingOptions(this, {
5809
5859
  resourceId: resourceId,
5810
5860
  moveToResource: true
@@ -5819,6 +5869,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5819
5869
  stack: error.stack
5820
5870
  });
5821
5871
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
5872
+ _this35.isMoveToInProgress = false;
5822
5873
  return _promise.default.reject(error);
5823
5874
  });
5824
5875
  }
@@ -5885,10 +5936,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5885
5936
  }, {
5886
5937
  key: "createMediaConnection",
5887
5938
  value: (function () {
5888
- var _createMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(turnServerInfo, bundlePolicy) {
5939
+ var _createMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(turnServerInfo, bundlePolicy) {
5889
5940
  var mc, audioEnabled, videoEnabled, shareEnabled;
5890
- return _regenerator.default.wrap(function _callee20$(_context20) {
5891
- while (1) switch (_context20.prev = _context20.next) {
5941
+ return _regenerator.default.wrap(function _callee21$(_context21) {
5942
+ while (1) switch (_context21.prev = _context21.next) {
5892
5943
  case 0:
5893
5944
  mc = _media.default.createMediaConnection(this.isMultistream, this.getMediaConnectionDebugId(),
5894
5945
  // @ts-ignore
@@ -5914,40 +5965,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5914
5965
 
5915
5966
  // publish the streams
5916
5967
  if (!this.mediaProperties.audioStream) {
5917
- _context20.next = 8;
5968
+ _context21.next = 8;
5918
5969
  break;
5919
5970
  }
5920
5971
  this.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
5921
- _context20.next = 8;
5972
+ _context21.next = 8;
5922
5973
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
5923
5974
  case 8:
5924
5975
  if (!this.mediaProperties.videoStream) {
5925
- _context20.next = 11;
5976
+ _context21.next = 11;
5926
5977
  break;
5927
5978
  }
5928
- _context20.next = 11;
5979
+ _context21.next = 11;
5929
5980
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
5930
5981
  case 11:
5931
5982
  if (!this.mediaProperties.shareVideoStream) {
5932
- _context20.next = 14;
5983
+ _context21.next = 14;
5933
5984
  break;
5934
5985
  }
5935
- _context20.next = 14;
5986
+ _context21.next = 14;
5936
5987
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
5937
5988
  case 14:
5938
5989
  if (!(this.isMultistream && this.mediaProperties.shareAudioStream)) {
5939
- _context20.next = 17;
5990
+ _context21.next = 17;
5940
5991
  break;
5941
5992
  }
5942
- _context20.next = 17;
5993
+ _context21.next = 17;
5943
5994
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
5944
5995
  case 17:
5945
- return _context20.abrupt("return", mc);
5996
+ return _context21.abrupt("return", mc);
5946
5997
  case 18:
5947
5998
  case "end":
5948
- return _context20.stop();
5999
+ return _context21.stop();
5949
6000
  }
5950
- }, _callee20, this);
6001
+ }, _callee21, this);
5951
6002
  }));
5952
6003
  function createMediaConnection(_x16, _x17) {
5953
6004
  return _createMediaConnection.apply(this, arguments);
@@ -5987,11 +6038,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5987
6038
  }, {
5988
6039
  key: "setUpLocalStreamReferences",
5989
6040
  value: (function () {
5990
- var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(localStreams) {
6041
+ var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(localStreams) {
5991
6042
  var _localStreams$microph, _localStreams$camera, _localStreams$screenS, _localStreams$screenS2, _localStreams$screenS3, _localStreams$screenS4, _localStreams$screenS5, _localStreams$screenS6;
5992
6043
  var setUpStreamPromises;
5993
- return _regenerator.default.wrap(function _callee21$(_context21) {
5994
- while (1) switch (_context21.prev = _context21.next) {
6044
+ return _regenerator.default.wrap(function _callee22$(_context22) {
6045
+ while (1) switch (_context22.prev = _context22.next) {
5995
6046
  case 0:
5996
6047
  setUpStreamPromises = [];
5997
6048
  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 +6057,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6006
6057
  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
6058
  setUpStreamPromises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));
6008
6059
  }
6009
- _context21.prev = 5;
6010
- _context21.next = 8;
6060
+ _context22.prev = 5;
6061
+ _context22.next = 8;
6011
6062
  return _promise.default.all(setUpStreamPromises);
6012
6063
  case 8:
6013
- _context21.next = 14;
6064
+ _context22.next = 14;
6014
6065
  break;
6015
6066
  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;
6067
+ _context22.prev = 10;
6068
+ _context22.t0 = _context22["catch"](5);
6069
+ _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _context22.t0);
6070
+ throw _context22.t0;
6020
6071
  case 14:
6021
6072
  case "end":
6022
- return _context21.stop();
6073
+ return _context22.stop();
6023
6074
  }
6024
- }, _callee21, this, [[5, 10]]);
6075
+ }, _callee22, this, [[5, 10]]);
6025
6076
  }));
6026
6077
  function setUpLocalStreamReferences(_x18) {
6027
6078
  return _setUpLocalStreamReferences.apply(this, arguments);
@@ -6038,20 +6089,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6038
6089
  }, {
6039
6090
  key: "waitForMediaConnectionConnected",
6040
6091
  value: (function () {
6041
- var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
6092
+ var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
6042
6093
  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) {
6094
+ return _regenerator.default.wrap(function _callee23$(_context23) {
6095
+ while (1) switch (_context23.prev = _context23.next) {
6045
6096
  case 0:
6046
- _context22.prev = 0;
6047
- _context22.next = 3;
6097
+ _context23.prev = 0;
6098
+ _context23.next = 3;
6048
6099
  return this.mediaProperties.waitForMediaConnectionConnected();
6049
6100
  case 3:
6050
- _context22.next = 9;
6101
+ _context23.next = 9;
6051
6102
  break;
6052
6103
  case 5:
6053
- _context22.prev = 5;
6054
- _context22.t0 = _context22["catch"](0);
6104
+ _context23.prev = 5;
6105
+ _context23.t0 = _context23["catch"](0);
6055
6106
  if (!this.hasMediaConnectionConnectedAtLeastOnce) {
6056
6107
  // Only send CA event for join flow if we haven't successfully connected media yet
6057
6108
  // @ts-ignore
@@ -6079,9 +6130,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6079
6130
  throw new Error("Timed out waiting for media connection to be connected, correlationId=".concat(this.correlationId));
6080
6131
  case 9:
6081
6132
  case "end":
6082
- return _context22.stop();
6133
+ return _context23.stop();
6083
6134
  }
6084
- }, _callee22, this, [[0, 5]]);
6135
+ }, _callee23, this, [[0, 5]]);
6085
6136
  }));
6086
6137
  function waitForMediaConnectionConnected() {
6087
6138
  return _waitForMediaConnectionConnected.apply(this, arguments);
@@ -6131,18 +6182,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6131
6182
  * @returns {Promise<void>}
6132
6183
  */
6133
6184
  function () {
6134
- var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
6185
+ var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6135
6186
  var LOG_HEADER, deferSDPAnswer;
6136
- return _regenerator.default.wrap(function _callee23$(_context23) {
6137
- while (1) switch (_context23.prev = _context23.next) {
6187
+ return _regenerator.default.wrap(function _callee24$(_context24) {
6188
+ while (1) switch (_context24.prev = _context24.next) {
6138
6189
  case 0:
6139
6190
  LOG_HEADER = 'Meeting:index#addMedia():waitForRemoteSDPAnswer -->';
6140
6191
  if (this.deferSDPAnswer) {
6141
- _context23.next = 4;
6192
+ _context24.next = 4;
6142
6193
  break;
6143
6194
  }
6144
6195
  _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')));
6196
+ return _context24.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
6146
6197
  case 4:
6147
6198
  deferSDPAnswer = this.deferSDPAnswer;
6148
6199
  this.sdpResponseTimer = setTimeout(function () {
@@ -6150,12 +6201,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6150
6201
  deferSDPAnswer.reject(new Error('Timed out waiting for REMOTE SDP ANSWER'));
6151
6202
  }, _constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
6152
6203
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " waiting for REMOTE SDP ANSWER..."));
6153
- return _context23.abrupt("return", deferSDPAnswer.promise);
6204
+ return _context24.abrupt("return", deferSDPAnswer.promise);
6154
6205
  case 8:
6155
6206
  case "end":
6156
- return _context23.stop();
6207
+ return _context24.stop();
6157
6208
  }
6158
- }, _callee23, this);
6209
+ }, _callee24, this);
6159
6210
  }));
6160
6211
  function waitForRemoteSDPAnswer() {
6161
6212
  return _waitForRemoteSDPAnswer.apply(this, arguments);
@@ -6174,28 +6225,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6174
6225
  }, {
6175
6226
  key: "retryEstablishMediaConnectionWithForcedTurnDiscovery",
6176
6227
  value: (function () {
6177
- var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(remoteMediaManagerConfig, bundlePolicy) {
6228
+ var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(remoteMediaManagerConfig, bundlePolicy) {
6178
6229
  var LOG_HEADER;
6179
- return _regenerator.default.wrap(function _callee24$(_context24) {
6180
- while (1) switch (_context24.prev = _context24.next) {
6230
+ return _regenerator.default.wrap(function _callee25$(_context25) {
6231
+ while (1) switch (_context25.prev = _context25.next) {
6181
6232
  case 0:
6182
6233
  LOG_HEADER = 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';
6183
- _context24.prev = 1;
6184
- _context24.next = 4;
6234
+ _context25.prev = 1;
6235
+ _context25.next = 4;
6185
6236
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);
6186
6237
  case 4:
6187
- _context24.next = 10;
6238
+ _context25.next = 10;
6188
6239
  break;
6189
6240
  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;
6241
+ _context25.prev = 6;
6242
+ _context25.t0 = _context25["catch"](1);
6243
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _context25.t0);
6244
+ throw _context25.t0;
6194
6245
  case 10:
6195
6246
  case "end":
6196
- return _context24.stop();
6247
+ return _context25.stop();
6197
6248
  }
6198
- }, _callee24, this, [[1, 6]]);
6249
+ }, _callee25, this, [[1, 6]]);
6199
6250
  }));
6200
6251
  function retryEstablishMediaConnectionWithForcedTurnDiscovery(_x19, _x20) {
6201
6252
  return _retryEstablishMediaConnectionWithForcedTurnDiscovery.apply(this, arguments);
@@ -6215,14 +6266,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6215
6266
  }, {
6216
6267
  key: "retryWithForcedTurnDiscovery",
6217
6268
  value: (function () {
6218
- var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(remoteMediaManagerConfig, bundlePolicy) {
6269
+ var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(remoteMediaManagerConfig, bundlePolicy) {
6219
6270
  var LOG_HEADER;
6220
- return _regenerator.default.wrap(function _callee25$(_context25) {
6221
- while (1) switch (_context25.prev = _context25.next) {
6271
+ return _regenerator.default.wrap(function _callee26$(_context26) {
6272
+ while (1) switch (_context26.prev = _context26.next) {
6222
6273
  case 0:
6223
6274
  this.retriedWithTurnServer = true;
6224
6275
  LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';
6225
- _context25.next = 4;
6276
+ _context26.next = 4;
6226
6277
  return this.cleanUpBeforeRetryWithTurnServer();
6227
6278
  case 4:
6228
6279
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_RETRY, {
@@ -6232,22 +6283,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6232
6283
  reason: 'forcingTurnTls'
6233
6284
  });
6234
6285
  if (!(this.state === _constants.MEETING_STATE.STATES.LEFT)) {
6235
- _context25.next = 9;
6286
+ _context26.next = 9;
6236
6287
  break;
6237
6288
  }
6238
6289
  _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;
6290
+ _context26.next = 9;
6240
6291
  return this.join({
6241
6292
  rejoin: true
6242
6293
  });
6243
6294
  case 9:
6244
- _context25.next = 11;
6295
+ _context26.next = 11;
6245
6296
  return this.retryEstablishMediaConnectionWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
6246
6297
  case 11:
6247
6298
  case "end":
6248
- return _context25.stop();
6299
+ return _context26.stop();
6249
6300
  }
6250
- }, _callee25, this);
6301
+ }, _callee26, this);
6251
6302
  }));
6252
6303
  function retryWithForcedTurnDiscovery(_x21, _x22) {
6253
6304
  return _retryWithForcedTurnDiscovery.apply(this, arguments);
@@ -6269,30 +6320,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6269
6320
  }, {
6270
6321
  key: "handleWaitForMediaConnectionConnectedError",
6271
6322
  value: (function () {
6272
- var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(error, remoteMediaManagerConfig, bundlePolicy) {
6323
+ var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(error, remoteMediaManagerConfig, bundlePolicy) {
6273
6324
  var LOG_HEADER;
6274
- return _regenerator.default.wrap(function _callee26$(_context26) {
6275
- while (1) switch (_context26.prev = _context26.next) {
6325
+ return _regenerator.default.wrap(function _callee27$(_context27) {
6326
+ while (1) switch (_context27.prev = _context27.next) {
6276
6327
  case 0:
6277
6328
  LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->'; // @ts-ignore - config coming from registerPlugin
6278
6329
  if (this.turnServerUsed) {
6279
- _context26.next = 7;
6330
+ _context27.next = 7;
6280
6331
  break;
6281
6332
  }
6282
6333
  _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;
6334
+ _context27.next = 5;
6284
6335
  return this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
6285
6336
  case 5:
6286
- _context26.next = 9;
6337
+ _context27.next = 9;
6287
6338
  break;
6288
6339
  case 7:
6289
6340
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error waiting for media to connect using UDP, TCP and TURN-TLS"), error);
6290
6341
  throw new _webexErrors.AddMediaFailed();
6291
6342
  case 9:
6292
6343
  case "end":
6293
- return _context26.stop();
6344
+ return _context27.stop();
6294
6345
  }
6295
- }, _callee26, this);
6346
+ }, _callee27, this);
6296
6347
  }));
6297
6348
  function handleWaitForMediaConnectionConnectedError(_x23, _x24, _x25) {
6298
6349
  return _handleWaitForMediaConnectionConnectedError.apply(this, arguments);
@@ -6302,7 +6353,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6302
6353
  /**
6303
6354
  * Performs TURN discovery as a separate call to the Locus /media API
6304
6355
  *
6305
- * @param {boolean} isRetry
6356
+ * @param {boolean} isReconnecting
6306
6357
  * @param {boolean} isForced
6307
6358
  * @returns {Promise}
6308
6359
  */
@@ -6310,20 +6361,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6310
6361
  }, {
6311
6362
  key: "doTurnDiscovery",
6312
6363
  value: (function () {
6313
- var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(isRetry, isForced) {
6364
+ var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(isReconnecting, isForced) {
6314
6365
  var cdl, turnDiscoveryResult;
6315
- return _regenerator.default.wrap(function _callee27$(_context27) {
6316
- while (1) switch (_context27.prev = _context27.next) {
6366
+ return _regenerator.default.wrap(function _callee28$(_context28) {
6367
+ while (1) switch (_context28.prev = _context28.next) {
6317
6368
  case 0:
6318
6369
  // @ts-ignore
6319
6370
  cdl = this.webex.internal.newMetrics.callDiagnosticLatencies; // @ts-ignore
6320
6371
  this.webex.internal.newMetrics.submitInternalEvent({
6321
6372
  name: 'internal.client.add-media.turn-discovery.start'
6322
6373
  });
6323
- _context27.next = 4;
6324
- return this.roap.doTurnDiscovery(this, isRetry, isForced);
6374
+ _context28.next = 4;
6375
+ return this.roap.doTurnDiscovery(this, isReconnecting, isForced);
6325
6376
  case 4:
6326
- turnDiscoveryResult = _context27.sent;
6377
+ turnDiscoveryResult = _context28.sent;
6327
6378
  this.turnDiscoverySkippedReason = turnDiscoveryResult === null || turnDiscoveryResult === void 0 ? void 0 : turnDiscoveryResult.turnDiscoverySkippedReason;
6328
6379
  this.turnServerUsed = !this.turnDiscoverySkippedReason;
6329
6380
 
@@ -6339,12 +6390,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6339
6390
  retriedWithTurnServer: this.retriedWithTurnServer
6340
6391
  });
6341
6392
  }
6342
- return _context27.abrupt("return", turnDiscoveryResult);
6393
+ return _context28.abrupt("return", turnDiscoveryResult);
6343
6394
  case 10:
6344
6395
  case "end":
6345
- return _context27.stop();
6396
+ return _context28.stop();
6346
6397
  }
6347
- }, _callee27, this);
6398
+ }, _callee28, this);
6348
6399
  }));
6349
6400
  function doTurnDiscovery(_x26, _x27) {
6350
6401
  return _doTurnDiscovery.apply(this, arguments);
@@ -6365,31 +6416,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6365
6416
  }, {
6366
6417
  key: "establishMediaConnection",
6367
6418
  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) {
6419
+ var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
6420
+ var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc;
6421
+ return _regenerator.default.wrap(function _callee29$(_context29) {
6422
+ while (1) switch (_context29.prev = _context29.next) {
6372
6423
  case 0:
6373
6424
  LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';
6374
- isRetry = this.retriedWithTurnServer;
6375
- _context28.prev = 2;
6425
+ isReconnecting = this.isMoveToInProgress || this.retriedWithTurnServer; // We are forcing turn discovery if the case is moveTo and a turn server was used already
6426
+ if (this.isMoveToInProgress && this.turnServerUsed) {
6427
+ isForced = true;
6428
+ }
6429
+ _context29.prev = 3;
6376
6430
  if (turnServerInfo) {
6377
- _context28.next = 8;
6431
+ _context29.next = 9;
6378
6432
  break;
6379
6433
  }
6380
- _context28.next = 6;
6381
- return this.doTurnDiscovery(isRetry, isForced);
6382
- case 6:
6383
- _yield$this$doTurnDis = _context28.sent;
6434
+ _context29.next = 7;
6435
+ return this.doTurnDiscovery(isReconnecting, isForced);
6436
+ case 7:
6437
+ _yield$this$doTurnDis = _context29.sent;
6384
6438
  turnServerInfo = _yield$this$doTurnDis.turnServerInfo;
6385
- case 8:
6386
- _context28.next = 10;
6439
+ case 9:
6440
+ _context29.next = 11;
6387
6441
  return this.createMediaConnection(turnServerInfo, bundlePolicy);
6388
- case 10:
6389
- mc = _context28.sent;
6442
+ case 11:
6443
+ mc = _context29.sent;
6390
6444
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created"));
6391
6445
  if (!this.isMultistream) {
6392
- _context28.next = 20;
6446
+ _context29.next = 21;
6393
6447
  break;
6394
6448
  }
6395
6449
  this.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(this.receiveSlotManager, this.mediaRequestManagers, remoteMediaManagerConfig);
@@ -6397,40 +6451,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6397
6451
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.InterpretationAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED);
6398
6452
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
6399
6453
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
6400
- _context28.next = 20;
6454
+ _context29.next = 21;
6401
6455
  return this.remoteMediaManager.start();
6402
- case 20:
6403
- _context28.next = 22;
6456
+ case 21:
6457
+ _context29.next = 23;
6404
6458
  return mc.initiateOffer();
6405
- case 22:
6406
- _context28.next = 24;
6459
+ case 23:
6460
+ _context29.next = 25;
6407
6461
  return this.waitForRemoteSDPAnswer();
6408
- case 24:
6462
+ case 25:
6409
6463
  this.handleMediaLogging(this.mediaProperties);
6410
- _context28.next = 31;
6464
+ _context29.next = 32;
6411
6465
  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;
6466
+ case 28:
6467
+ _context29.prev = 28;
6468
+ _context29.t0 = _context29["catch"](3);
6469
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _context29.t0);
6470
+ throw _context29.t0;
6471
+ case 32:
6472
+ _context29.prev = 32;
6473
+ _context29.next = 35;
6420
6474
  return this.waitForMediaConnectionConnected();
6421
- case 34:
6422
- _context28.next = 40;
6475
+ case 35:
6476
+ _context29.next = 41;
6423
6477
  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:
6478
+ case 37:
6479
+ _context29.prev = 37;
6480
+ _context29.t1 = _context29["catch"](32);
6481
+ _context29.next = 41;
6482
+ return this.handleWaitForMediaConnectionConnectedError(_context29.t1, remoteMediaManagerConfig, bundlePolicy);
6483
+ case 41:
6430
6484
  case "end":
6431
- return _context28.stop();
6485
+ return _context29.stop();
6432
6486
  }
6433
- }, _callee28, this, [[2, 27], [31, 36]]);
6487
+ }, _callee29, this, [[3, 28], [32, 37]]);
6434
6488
  }));
6435
6489
  function establishMediaConnection(_x28, _x29, _x30, _x31) {
6436
6490
  return _establishMediaConnection.apply(this, arguments);
@@ -6447,22 +6501,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6447
6501
  }, {
6448
6502
  key: "cleanUpOnAddMediaFailure",
6449
6503
  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) {
6504
+ var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30() {
6505
+ return _regenerator.default.wrap(function _callee30$(_context30) {
6506
+ while (1) switch (_context30.prev = _context30.next) {
6453
6507
  case 0:
6454
6508
  if (!this.statsAnalyzer) {
6455
- _context29.next = 3;
6509
+ _context30.next = 3;
6456
6510
  break;
6457
6511
  }
6458
- _context29.next = 3;
6512
+ _context30.next = 3;
6459
6513
  return this.statsAnalyzer.stopAnalyzer();
6460
6514
  case 3:
6461
6515
  this.statsAnalyzer = null;
6462
6516
 
6463
6517
  // when media fails, we want to upload a webrtc dump to see whats going on
6464
6518
  // this function is async, but returns once the stats have been gathered
6465
- _context29.next = 6;
6519
+ _context30.next = 6;
6466
6520
  return this.forceSendStatsReport({
6467
6521
  callFrom: 'addMedia'
6468
6522
  });
@@ -6473,9 +6527,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6473
6527
  }
6474
6528
  case 7:
6475
6529
  case "end":
6476
- return _context29.stop();
6530
+ return _context30.stop();
6477
6531
  }
6478
- }, _callee29, this);
6532
+ }, _callee30, this);
6479
6533
  }));
6480
6534
  function cleanUpOnAddMediaFailure() {
6481
6535
  return _cleanUpOnAddMediaFailure.apply(this, arguments);
@@ -6493,11 +6547,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6493
6547
  }, {
6494
6548
  key: "cleanUpBeforeRetryWithTurnServer",
6495
6549
  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) {
6550
+ var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31() {
6551
+ return _regenerator.default.wrap(function _callee31$(_context31) {
6552
+ while (1) switch (_context31.prev = _context31.next) {
6499
6553
  case 0:
6500
- _context30.next = 2;
6554
+ _context31.next = 2;
6501
6555
  return this.forceSendStatsReport({
6502
6556
  callFrom: 'cleanUpBeforeRetryWithTurnServer'
6503
6557
  });
@@ -6517,9 +6571,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6517
6571
  }
6518
6572
  case 3:
6519
6573
  case "end":
6520
- return _context30.stop();
6574
+ return _context31.stop();
6521
6575
  }
6522
- }, _callee30, this);
6576
+ }, _callee31, this);
6523
6577
  }));
6524
6578
  function cleanUpBeforeRetryWithTurnServer() {
6525
6579
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
@@ -6539,7 +6593,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6539
6593
  }, {
6540
6594
  key: "addMedia",
6541
6595
  value: (function () {
6542
- var _addMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31() {
6596
+ var _addMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
6543
6597
  var _this$webex$meetings$2, _this$webex$meetings$3;
6544
6598
  var options,
6545
6599
  turnServerInfo,
@@ -6556,7 +6610,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6556
6610
  remoteMediaManagerConfig,
6557
6611
  bundlePolicy,
6558
6612
  _this$remoteMediaMana,
6613
+ _yield$this$mediaProp,
6559
6614
  connectionType,
6615
+ selectedCandidatePairChanges,
6616
+ numTransports,
6560
6617
  reachabilityStats,
6561
6618
  _this$mediaProperties20,
6562
6619
  _this$mediaProperties21,
@@ -6580,24 +6637,27 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6580
6637
  _this$mediaProperties39,
6581
6638
  _this$mediaProperties40,
6582
6639
  reachabilityMetrics,
6583
- _args31 = arguments;
6584
- return _regenerator.default.wrap(function _callee31$(_context31) {
6585
- while (1) switch (_context31.prev = _context31.next) {
6640
+ _yield$this$mediaProp2,
6641
+ _selectedCandidatePairChanges,
6642
+ _numTransports,
6643
+ _args32 = arguments;
6644
+ return _regenerator.default.wrap(function _callee32$(_context32) {
6645
+ while (1) switch (_context32.prev = _context32.next) {
6586
6646
  case 0:
6587
- options = _args31.length > 0 && _args31[0] !== undefined ? _args31[0] : {};
6588
- turnServerInfo = _args31.length > 1 && _args31[1] !== undefined ? _args31[1] : undefined;
6647
+ options = _args32.length > 0 && _args32[0] !== undefined ? _args32[0] : {};
6648
+ turnServerInfo = _args32.length > 1 && _args32[1] !== undefined ? _args32[1] : undefined;
6589
6649
  this.retriedWithTurnServer = false;
6590
6650
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6591
6651
  LOG_HEADER = 'Meeting:index#addMedia -->';
6592
6652
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: ").concat((0, _stringify.default)(options), ", ").concat((0, _stringify.default)(turnServerInfo)));
6593
6653
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6594
- _context31.next = 8;
6654
+ _context32.next = 8;
6595
6655
  break;
6596
6656
  }
6597
6657
  throw new _webexErrors.MeetingNotActiveError();
6598
6658
  case 8:
6599
6659
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6600
- _context31.next = 10;
6660
+ _context32.next = 10;
6601
6661
  break;
6602
6662
  }
6603
6663
  throw new _webexErrors.UserNotJoinedError();
@@ -6608,7 +6668,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6608
6668
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6609
6669
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6610
6670
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6611
- _context31.next = 14;
6671
+ _context32.next = 14;
6612
6672
  break;
6613
6673
  }
6614
6674
  throw new _webexErrors.UserInLobbyError();
@@ -6651,6 +6711,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6651
6711
  });
6652
6712
  this.locusMediaRequest = new _locusMediaRequest.LocusMediaRequest({
6653
6713
  correlationId: this.correlationId,
6714
+ meetingId: this.id,
6654
6715
  device: {
6655
6716
  url: this.deviceUrl,
6656
6717
  // @ts-ignore
@@ -6667,48 +6728,54 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6667
6728
  });
6668
6729
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
6669
6730
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
6670
- _context31.prev = 19;
6671
- _context31.next = 22;
6731
+ _context32.prev = 19;
6732
+ _context32.next = 22;
6672
6733
  return this.setUpLocalStreamReferences(localStreams);
6673
6734
  case 22:
6674
6735
  this.setMercuryListener();
6675
6736
  this.createStatsAnalyzer();
6676
- _context31.next = 26;
6737
+ _context32.next = 26;
6677
6738
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, false, turnServerInfo);
6678
6739
  case 26:
6679
6740
  if (!(audioEnabled || videoEnabled)) {
6680
- _context31.next = 31;
6741
+ _context32.next = 31;
6681
6742
  break;
6682
6743
  }
6683
- _context31.next = 29;
6744
+ _context32.next = 29;
6684
6745
  return Meeting.handleDeviceLogging();
6685
6746
  case 29:
6686
- _context31.next = 32;
6747
+ _context32.next = 32;
6687
6748
  break;
6688
6749
  case 31:
6689
6750
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
6690
6751
  case 32:
6691
6752
  if (!this.mediaProperties.hasLocalShareStream()) {
6692
- _context31.next = 35;
6753
+ _context32.next = 35;
6693
6754
  break;
6694
6755
  }
6695
- _context31.next = 35;
6756
+ _context32.next = 35;
6696
6757
  return this.enqueueScreenShareFloorRequest();
6697
6758
  case 35:
6698
- _context31.next = 37;
6699
- return this.mediaProperties.getCurrentConnectionType();
6759
+ _context32.next = 37;
6760
+ return this.mediaProperties.getCurrentConnectionInfo();
6700
6761
  case 37:
6701
- connectionType = _context31.sent;
6702
- _context31.next = 40;
6762
+ _yield$this$mediaProp = _context32.sent;
6763
+ connectionType = _yield$this$mediaProp.connectionType;
6764
+ selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
6765
+ numTransports = _yield$this$mediaProp.numTransports;
6766
+ _context32.next = 43;
6703
6767
  return this.webex.meetings.reachability.getReachabilityMetrics();
6704
- case 40:
6705
- reachabilityStats = _context31.sent;
6768
+ case 43:
6769
+ reachabilityStats = _context32.sent;
6706
6770
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread({
6707
6771
  correlation_id: this.correlationId,
6708
6772
  locus_id: this.locusUrl.split('/').pop(),
6709
6773
  connectionType: connectionType,
6774
+ selectedCandidatePairChanges: selectedCandidatePairChanges,
6775
+ numTransports: numTransports,
6710
6776
  isMultistream: this.isMultistream,
6711
- retriedWithTurnServer: this.retriedWithTurnServer
6777
+ retriedWithTurnServer: this.retriedWithTurnServer,
6778
+ isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry
6712
6779
  }, reachabilityStats));
6713
6780
  // @ts-ignore
6714
6781
  this.webex.internal.newMetrics.submitClientEvent({
@@ -6721,51 +6788,60 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6721
6788
 
6722
6789
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
6723
6790
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
6724
- _context31.next = 59;
6791
+ _context32.next = 67;
6725
6792
  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);
6793
+ case 50:
6794
+ _context32.prev = 50;
6795
+ _context32.t0 = _context32["catch"](19);
6796
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context32.t0);
6730
6797
 
6731
6798
  // @ts-ignore
6732
- _context31.next = 52;
6799
+ _context32.next = 55;
6733
6800
  return this.webex.meetings.reachability.getReachabilityMetrics();
6734
- case 52:
6735
- reachabilityMetrics = _context31.sent;
6801
+ case 55:
6802
+ reachabilityMetrics = _context32.sent;
6803
+ _context32.next = 58;
6804
+ return this.mediaProperties.getCurrentConnectionInfo();
6805
+ case 58:
6806
+ _yield$this$mediaProp2 = _context32.sent;
6807
+ _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
6808
+ _numTransports = _yield$this$mediaProp2.numTransports;
6736
6809
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread({
6737
6810
  correlation_id: this.correlationId,
6738
6811
  locus_id: this.locusUrl.split('/').pop(),
6739
- reason: _context31.t0.message,
6740
- stack: _context31.t0.stack,
6741
- code: _context31.t0.code,
6812
+ reason: _context32.t0.message,
6813
+ stack: _context32.t0.stack,
6814
+ code: _context32.t0.code,
6815
+ selectedCandidatePairChanges: _selectedCandidatePairChanges,
6816
+ numTransports: _numTransports,
6742
6817
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
6743
6818
  turnServerUsed: this.turnServerUsed,
6744
6819
  retriedWithTurnServer: this.retriedWithTurnServer,
6745
6820
  isMultistream: this.isMultistream,
6821
+ isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,
6746
6822
  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
6823
  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
6824
  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
6825
  }, reachabilityMetrics));
6750
- _context31.next = 56;
6826
+ _context32.next = 64;
6751
6827
  return this.cleanUpOnAddMediaFailure();
6752
- case 56:
6828
+ case 64:
6753
6829
  // Upload logs on error while adding media
6754
6830
  _triggerProxy.default.trigger(this, {
6755
6831
  file: 'meeting/index',
6756
6832
  function: 'addMedia'
6757
6833
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
6758
- if (_context31.t0 instanceof _internalMediaCore.Errors.SdpError) {
6834
+ if (_context32.t0 instanceof _internalMediaCore.Errors.SdpError) {
6759
6835
  this.leave({
6760
6836
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
6761
6837
  });
6762
6838
  }
6763
- throw _context31.t0;
6764
- case 59:
6839
+ throw _context32.t0;
6840
+ case 67:
6765
6841
  case "end":
6766
- return _context31.stop();
6842
+ return _context32.stop();
6767
6843
  }
6768
- }, _callee31, this, [[19, 47]]);
6844
+ }, _callee32, this, [[19, 50]]);
6769
6845
  }));
6770
6846
  function addMedia() {
6771
6847
  return _addMedia.apply(this, arguments);
@@ -6833,35 +6909,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6833
6909
  * @memberof Meeting
6834
6910
  */
6835
6911
  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) {
6912
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
6913
+ var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
6914
+ return _regenerator.default.wrap(function _callee33$(_context33) {
6915
+ while (1) switch (_context33.prev = _context33.next) {
6840
6916
  case 0:
6841
6917
  this.checkMediaConnection();
6842
6918
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
6843
6919
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
6844
6920
  if (this.canUpdateMedia()) {
6845
- _context32.next = 5;
6921
+ _context33.next = 5;
6846
6922
  break;
6847
6923
  }
6848
- return _context32.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
6924
+ return _context33.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
6849
6925
  case 5:
6850
6926
  if (!this.isMultistream) {
6851
- _context32.next = 10;
6927
+ _context33.next = 10;
6852
6928
  break;
6853
6929
  }
6854
6930
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
6855
- _context32.next = 8;
6931
+ _context33.next = 8;
6856
6932
  break;
6857
6933
  }
6858
6934
  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
6935
  case 8:
6860
- _context32.next = 12;
6936
+ _context33.next = 12;
6861
6937
  break;
6862
6938
  case 10:
6863
6939
  if (!(shareAudioEnabled !== undefined)) {
6864
- _context32.next = 12;
6940
+ _context33.next = 12;
6865
6941
  break;
6866
6942
  }
6867
6943
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -6869,7 +6945,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6869
6945
  if (audioEnabled !== undefined) {
6870
6946
  this.mediaProperties.mediaDirection.sendAudio = audioEnabled;
6871
6947
  this.mediaProperties.mediaDirection.receiveAudio = audioEnabled;
6872
- this.audio.enable(this, audioEnabled);
6948
+ (_this$audio3 = this.audio) === null || _this$audio3 === void 0 ? void 0 : _this$audio3.enable(this, audioEnabled);
6873
6949
  if (this.isMultistream) {
6874
6950
  this.sendSlotManager.setActive(_internalMediaCore.MediaType.AudioMain, audioEnabled);
6875
6951
  }
@@ -6877,7 +6953,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6877
6953
  if (videoEnabled !== undefined) {
6878
6954
  this.mediaProperties.mediaDirection.sendVideo = videoEnabled;
6879
6955
  this.mediaProperties.mediaDirection.receiveVideo = videoEnabled;
6880
- this.video.enable(this, videoEnabled);
6956
+ (_this$video3 = this.video) === null || _this$video3 === void 0 ? void 0 : _this$video3.enable(this, videoEnabled);
6881
6957
  if (this.isMultistream) {
6882
6958
  this.sendSlotManager.setActive(_internalMediaCore.MediaType.VideoMain, videoEnabled);
6883
6959
  }
@@ -6886,18 +6962,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6886
6962
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
6887
6963
  }
6888
6964
  if (this.isMultistream) {
6889
- _context32.next = 18;
6965
+ _context33.next = 18;
6890
6966
  break;
6891
6967
  }
6892
- _context32.next = 18;
6968
+ _context33.next = 18;
6893
6969
  return this.updateTranscodedMediaConnection();
6894
6970
  case 18:
6895
- return _context32.abrupt("return", undefined);
6971
+ return _context33.abrupt("return", undefined);
6896
6972
  case 19:
6897
6973
  case "end":
6898
- return _context32.stop();
6974
+ return _context33.stop();
6899
6975
  }
6900
- }, _callee32, this);
6976
+ }, _callee33, this);
6901
6977
  }));
6902
6978
  function updateMedia(_x32) {
6903
6979
  return _updateMedia.apply(this, arguments);
@@ -7817,37 +7893,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7817
7893
  }, {
7818
7894
  key: "enableMusicMode",
7819
7895
  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) {
7896
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(shouldEnableMusicMode) {
7897
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7898
+ while (1) switch (_context34.prev = _context34.next) {
7823
7899
  case 0:
7824
7900
  this.checkMediaConnection();
7825
7901
  if (this.isMultistream) {
7826
- _context33.next = 3;
7902
+ _context34.next = 3;
7827
7903
  break;
7828
7904
  }
7829
7905
  throw new Error('enableMusicMode() only supported with multistream');
7830
7906
  case 3:
7831
7907
  if (!shouldEnableMusicMode) {
7832
- _context33.next = 8;
7908
+ _context34.next = 8;
7833
7909
  break;
7834
7910
  }
7835
- _context33.next = 6;
7911
+ _context34.next = 6;
7836
7912
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
7837
7913
  maxaveragebitrate: '64000',
7838
7914
  maxplaybackrate: '48000'
7839
7915
  });
7840
7916
  case 6:
7841
- _context33.next = 10;
7917
+ _context34.next = 10;
7842
7918
  break;
7843
7919
  case 8:
7844
- _context33.next = 10;
7920
+ _context34.next = 10;
7845
7921
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
7846
7922
  case 10:
7847
7923
  case "end":
7848
- return _context33.stop();
7924
+ return _context34.stop();
7849
7925
  }
7850
- }, _callee33, this);
7926
+ }, _callee34, this);
7851
7927
  }));
7852
7928
  function enableMusicMode(_x33) {
7853
7929
  return _enableMusicMode.apply(this, arguments);
@@ -7940,25 +8016,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7940
8016
  }, {
7941
8017
  key: "publishStream",
7942
8018
  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) {
8019
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(mediaType, stream) {
8020
+ return _regenerator.default.wrap(function _callee35$(_context35) {
8021
+ while (1) switch (_context35.prev = _context35.next) {
7946
8022
  case 0:
7947
8023
  if (stream) {
7948
- _context34.next = 2;
8024
+ _context35.next = 2;
7949
8025
  break;
7950
8026
  }
7951
- return _context34.abrupt("return");
8027
+ return _context35.abrupt("return");
7952
8028
  case 2:
7953
8029
  if (!this.mediaProperties.webrtcMediaConnection) {
7954
- _context34.next = 7;
8030
+ _context35.next = 7;
7955
8031
  break;
7956
8032
  }
7957
8033
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
7958
- _context34.next = 6;
8034
+ _context35.next = 6;
7959
8035
  break;
7960
8036
  }
7961
- _context34.next = 6;
8037
+ _context35.next = 6;
7962
8038
  return this.sendSlotManager.publishStream(mediaType, stream);
7963
8039
  case 6:
7964
8040
  this.emitPublishStateChangeEvent({
@@ -7969,9 +8045,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7969
8045
  });
7970
8046
  case 7:
7971
8047
  case "end":
7972
- return _context34.stop();
8048
+ return _context35.stop();
7973
8049
  }
7974
- }, _callee34, this);
8050
+ }, _callee35, this);
7975
8051
  }));
7976
8052
  function publishStream(_x34, _x35) {
7977
8053
  return _publishStream.apply(this, arguments);
@@ -7989,21 +8065,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7989
8065
  }, {
7990
8066
  key: "unpublishStream",
7991
8067
  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) {
8068
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8069
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8070
+ while (1) switch (_context36.prev = _context36.next) {
7995
8071
  case 0:
7996
8072
  if (stream) {
7997
- _context35.next = 2;
8073
+ _context36.next = 2;
7998
8074
  break;
7999
8075
  }
8000
- return _context35.abrupt("return");
8076
+ return _context36.abrupt("return");
8001
8077
  case 2:
8002
8078
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8003
- _context35.next = 5;
8079
+ _context36.next = 5;
8004
8080
  break;
8005
8081
  }
8006
- _context35.next = 5;
8082
+ _context36.next = 5;
8007
8083
  return this.sendSlotManager.unpublishStream(mediaType);
8008
8084
  case 5:
8009
8085
  this.emitPublishStateChangeEvent({
@@ -8014,9 +8090,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8014
8090
  });
8015
8091
  case 6:
8016
8092
  case "end":
8017
- return _context35.stop();
8093
+ return _context36.stop();
8018
8094
  }
8019
- }, _callee35, this);
8095
+ }, _callee36, this);
8020
8096
  }));
8021
8097
  function unpublishStream(_x36, _x37) {
8022
8098
  return _unpublishStream.apply(this, arguments);
@@ -8033,67 +8109,67 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8033
8109
  }, {
8034
8110
  key: "publishStreams",
8035
8111
  value: (function () {
8036
- var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(streams) {
8112
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
8037
8113
  var _streams$screenShare, _streams$screenShare2, _streams$microphone, _streams$camera, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6, _streams$screenShare7, _streams$screenShare8;
8038
8114
  var floorRequestNeeded, _streams$screenShare9;
8039
- return _regenerator.default.wrap(function _callee36$(_context36) {
8040
- while (1) switch (_context36.prev = _context36.next) {
8115
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8116
+ while (1) switch (_context37.prev = _context37.next) {
8041
8117
  case 0:
8042
8118
  this.checkMediaConnection();
8043
8119
  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;
8120
+ _context37.next = 3;
8045
8121
  break;
8046
8122
  }
8047
- return _context36.abrupt("return");
8123
+ return _context37.abrupt("return");
8048
8124
  case 3:
8049
8125
  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;
8126
+ _context37.next = 5;
8051
8127
  break;
8052
8128
  }
8053
8129
  throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8054
8130
  case 5:
8055
8131
  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
8132
  if (!(this.isMultistream && (_streams$screenShare7 = streams.screenShare) !== null && _streams$screenShare7 !== void 0 && _streams$screenShare7.audio)) {
8057
- _context36.next = 10;
8133
+ _context37.next = 10;
8058
8134
  break;
8059
8135
  }
8060
- _context36.next = 9;
8136
+ _context37.next = 9;
8061
8137
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8062
8138
  case 9:
8063
8139
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8064
8140
  case 10:
8065
8141
  if (!((_streams$screenShare8 = streams.screenShare) !== null && _streams$screenShare8 !== void 0 && _streams$screenShare8.video)) {
8066
- _context36.next = 14;
8142
+ _context37.next = 14;
8067
8143
  break;
8068
8144
  }
8069
- _context36.next = 13;
8145
+ _context37.next = 13;
8070
8146
  return this.setLocalShareVideoStream((_streams$screenShare9 = streams.screenShare) === null || _streams$screenShare9 === void 0 ? void 0 : _streams$screenShare9.video);
8071
8147
  case 13:
8072
8148
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8073
8149
  case 14:
8074
8150
  if (!streams.microphone) {
8075
- _context36.next = 17;
8151
+ _context37.next = 17;
8076
8152
  break;
8077
8153
  }
8078
- _context36.next = 17;
8154
+ _context37.next = 17;
8079
8155
  return this.setLocalAudioStream(streams.microphone);
8080
8156
  case 17:
8081
8157
  if (!streams.camera) {
8082
- _context36.next = 20;
8158
+ _context37.next = 20;
8083
8159
  break;
8084
8160
  }
8085
- _context36.next = 20;
8161
+ _context37.next = 20;
8086
8162
  return this.setLocalVideoStream(streams.camera);
8087
8163
  case 20:
8088
8164
  if (this.isMultistream) {
8089
- _context36.next = 23;
8165
+ _context37.next = 23;
8090
8166
  break;
8091
8167
  }
8092
- _context36.next = 23;
8168
+ _context37.next = 23;
8093
8169
  return this.updateTranscodedMediaConnection();
8094
8170
  case 23:
8095
8171
  if (!floorRequestNeeded) {
8096
- _context36.next = 29;
8172
+ _context37.next = 29;
8097
8173
  break;
8098
8174
  }
8099
8175
  this.localShareInstanceId = _uuid.default.v4();
@@ -8117,13 +8193,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8117
8193
  // we're sending the http request to Locus to request the screen share floor
8118
8194
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8119
8195
  // and also if sharing from the start, we need confluence to have been created
8120
- _context36.next = 29;
8196
+ _context37.next = 29;
8121
8197
  return this.enqueueScreenShareFloorRequest();
8122
8198
  case 29:
8123
8199
  case "end":
8124
- return _context36.stop();
8200
+ return _context37.stop();
8125
8201
  }
8126
- }, _callee36, this);
8202
+ }, _callee37, this);
8127
8203
  }));
8128
8204
  function publishStreams(_x38) {
8129
8205
  return _publishStreams.apply(this, arguments);
@@ -8140,10 +8216,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8140
8216
  }, {
8141
8217
  key: "unpublishStreams",
8142
8218
  value: (function () {
8143
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
8219
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8144
8220
  var promises, _iterator, _step, stream;
8145
- return _regenerator.default.wrap(function _callee37$(_context37) {
8146
- while (1) switch (_context37.prev = _context37.next) {
8221
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8222
+ while (1) switch (_context38.prev = _context38.next) {
8147
8223
  case 0:
8148
8224
  this.checkMediaConnection();
8149
8225
  promises = [];
@@ -8174,7 +8250,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8174
8250
  if (!this.isMultistream) {
8175
8251
  promises.push(this.updateTranscodedMediaConnection());
8176
8252
  }
8177
- _context37.next = 7;
8253
+ _context38.next = 7;
8178
8254
  return _promise.default.all(promises);
8179
8255
  case 7:
8180
8256
  // we're allowing for the SDK to support just audio share as well
@@ -8195,9 +8271,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8195
8271
  }
8196
8272
  case 8:
8197
8273
  case "end":
8198
- return _context37.stop();
8274
+ return _context38.stop();
8199
8275
  }
8200
- }, _callee37, this);
8276
+ }, _callee38, this);
8201
8277
  }));
8202
8278
  function unpublishStreams(_x39) {
8203
8279
  return _unpublishStreams.apply(this, arguments);
@@ -8259,27 +8335,27 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8259
8335
  }], [{
8260
8336
  key: "handleDeviceLogging",
8261
8337
  value: (function () {
8262
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38() {
8338
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39() {
8263
8339
  var devices;
8264
- return _regenerator.default.wrap(function _callee38$(_context38) {
8265
- while (1) switch (_context38.prev = _context38.next) {
8340
+ return _regenerator.default.wrap(function _callee39$(_context39) {
8341
+ while (1) switch (_context39.prev = _context39.next) {
8266
8342
  case 0:
8267
- _context38.prev = 0;
8268
- _context38.next = 3;
8343
+ _context39.prev = 0;
8344
+ _context39.next = 3;
8269
8345
  return (0, _mediaHelpers.getDevices)();
8270
8346
  case 3:
8271
- devices = _context38.sent;
8347
+ devices = _context39.sent;
8272
8348
  _util2.default.handleDeviceLogging(devices);
8273
- _context38.next = 9;
8349
+ _context39.next = 9;
8274
8350
  break;
8275
8351
  case 7:
8276
- _context38.prev = 7;
8277
- _context38.t0 = _context38["catch"](0);
8352
+ _context39.prev = 7;
8353
+ _context39.t0 = _context39["catch"](0);
8278
8354
  case 9:
8279
8355
  case "end":
8280
- return _context38.stop();
8356
+ return _context39.stop();
8281
8357
  }
8282
- }, _callee38, null, [[0, 7]]);
8358
+ }, _callee39, null, [[0, 7]]);
8283
8359
  }));
8284
8360
  function handleDeviceLogging() {
8285
8361
  return _handleDeviceLogging.apply(this, arguments);