@webex/plugin-meetings 3.8.1 → 3.9.0-next.10

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 (294) hide show
  1. package/README.md +26 -13
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.js +32 -3
  5. package/dist/constants.js.map +1 -1
  6. package/dist/controls-options-manager/enums.js +1 -0
  7. package/dist/controls-options-manager/enums.js.map +1 -1
  8. package/dist/controls-options-manager/types.js.map +1 -1
  9. package/dist/controls-options-manager/util.js +26 -0
  10. package/dist/controls-options-manager/util.js.map +1 -1
  11. package/dist/interpretation/index.js +1 -1
  12. package/dist/interpretation/siLanguage.js +1 -1
  13. package/dist/locus-info/controlsUtils.js +11 -3
  14. package/dist/locus-info/controlsUtils.js.map +1 -1
  15. package/dist/locus-info/index.js +84 -91
  16. package/dist/locus-info/index.js.map +1 -1
  17. package/dist/locus-info/parser.js +4 -1
  18. package/dist/locus-info/parser.js.map +1 -1
  19. package/dist/media/index.js +2 -2
  20. package/dist/media/index.js.map +1 -1
  21. package/dist/meeting/brbState.js +17 -14
  22. package/dist/meeting/brbState.js.map +1 -1
  23. package/dist/meeting/in-meeting-actions.js +11 -1
  24. package/dist/meeting/in-meeting-actions.js.map +1 -1
  25. package/dist/meeting/index.js +484 -287
  26. package/dist/meeting/index.js.map +1 -1
  27. package/dist/meeting/request.js +19 -0
  28. package/dist/meeting/request.js.map +1 -1
  29. package/dist/meeting/request.type.js.map +1 -1
  30. package/dist/{rtcMetrics/constants.js → meeting/type.js} +1 -5
  31. package/dist/meeting/type.js.map +1 -0
  32. package/dist/meeting/util.js +68 -2
  33. package/dist/meeting/util.js.map +1 -1
  34. package/dist/meetings/index.js +35 -33
  35. package/dist/meetings/index.js.map +1 -1
  36. package/dist/members/index.js +14 -11
  37. package/dist/members/index.js.map +1 -1
  38. package/dist/members/request.js +3 -3
  39. package/dist/members/request.js.map +1 -1
  40. package/dist/members/util.js +25 -8
  41. package/dist/members/util.js.map +1 -1
  42. package/dist/metrics/constants.js +1 -0
  43. package/dist/metrics/constants.js.map +1 -1
  44. package/dist/multistream/mediaRequestManager.js +1 -1
  45. package/dist/multistream/mediaRequestManager.js.map +1 -1
  46. package/dist/multistream/remoteMedia.js +34 -5
  47. package/dist/multistream/remoteMedia.js.map +1 -1
  48. package/dist/multistream/remoteMediaGroup.js +42 -2
  49. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  50. package/dist/multistream/sendSlotManager.js +32 -2
  51. package/dist/multistream/sendSlotManager.js.map +1 -1
  52. package/dist/reachability/index.js +8 -13
  53. package/dist/reachability/index.js.map +1 -1
  54. package/dist/types/constants.d.ts +28 -0
  55. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  56. package/dist/types/controls-options-manager/types.d.ts +4 -1
  57. package/dist/types/locus-info/index.d.ts +2 -9
  58. package/dist/types/meeting/brbState.d.ts +0 -1
  59. package/dist/types/meeting/in-meeting-actions.d.ts +10 -0
  60. package/dist/types/meeting/index.d.ts +47 -19
  61. package/dist/types/meeting/request.d.ts +9 -1
  62. package/dist/types/meeting/request.type.d.ts +74 -0
  63. package/dist/types/meeting/type.d.ts +9 -0
  64. package/dist/types/meeting/util.d.ts +3 -0
  65. package/dist/types/members/index.d.ts +12 -8
  66. package/dist/types/members/request.d.ts +1 -1
  67. package/dist/types/members/util.d.ts +13 -6
  68. package/dist/types/metrics/constants.d.ts +1 -0
  69. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  70. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  71. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  72. package/dist/types/reachability/index.d.ts +2 -2
  73. package/dist/webinar/index.js +1 -1
  74. package/package.json +24 -25
  75. package/src/constants.ts +32 -2
  76. package/src/controls-options-manager/enums.ts +1 -0
  77. package/src/controls-options-manager/types.ts +6 -1
  78. package/src/controls-options-manager/util.ts +31 -0
  79. package/src/locus-info/controlsUtils.ts +15 -0
  80. package/src/locus-info/index.ts +103 -92
  81. package/src/locus-info/parser.ts +5 -1
  82. package/src/media/index.ts +2 -2
  83. package/src/meeting/brbState.ts +13 -9
  84. package/src/meeting/in-meeting-actions.ts +21 -0
  85. package/src/meeting/index.ts +278 -73
  86. package/src/meeting/request.ts +16 -0
  87. package/src/meeting/request.type.ts +64 -0
  88. package/src/meeting/type.ts +9 -0
  89. package/src/meeting/util.ts +73 -2
  90. package/src/meetings/index.ts +3 -2
  91. package/src/members/index.ts +22 -12
  92. package/src/members/request.ts +2 -2
  93. package/src/members/util.ts +34 -6
  94. package/src/metrics/constants.ts +1 -0
  95. package/src/multistream/mediaRequestManager.ts +7 -7
  96. package/src/multistream/remoteMedia.ts +34 -4
  97. package/src/multistream/remoteMediaGroup.ts +37 -2
  98. package/src/multistream/sendSlotManager.ts +34 -2
  99. package/src/reachability/index.ts +8 -16
  100. package/test/unit/spec/controls-options-manager/util.js +58 -0
  101. package/test/unit/spec/locus-info/controlsUtils.js +52 -0
  102. package/test/unit/spec/locus-info/index.js +247 -89
  103. package/test/unit/spec/locus-info/parser.js +3 -2
  104. package/test/unit/spec/media/index.ts +107 -0
  105. package/test/unit/spec/meeting/brbState.ts +23 -4
  106. package/test/unit/spec/meeting/in-meeting-actions.ts +10 -0
  107. package/test/unit/spec/meeting/index.js +976 -91
  108. package/test/unit/spec/meeting/request.js +71 -0
  109. package/test/unit/spec/meeting/utils.js +122 -1
  110. package/test/unit/spec/meetings/index.js +2 -0
  111. package/test/unit/spec/members/index.js +98 -11
  112. package/test/unit/spec/members/request.js +57 -2
  113. package/test/unit/spec/members/utils.js +139 -17
  114. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  115. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  116. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  117. package/test/unit/spec/reachability/index.ts +160 -9
  118. package/dist/annotation/annotation.types.d.ts +0 -42
  119. package/dist/annotation/constants.d.ts +0 -31
  120. package/dist/annotation/index.d.ts +0 -117
  121. package/dist/breakouts/breakout.d.ts +0 -8
  122. package/dist/breakouts/collection.d.ts +0 -5
  123. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  124. package/dist/breakouts/events.d.ts +0 -8
  125. package/dist/breakouts/index.d.ts +0 -5
  126. package/dist/breakouts/request.d.ts +0 -22
  127. package/dist/breakouts/utils.d.ts +0 -15
  128. package/dist/common/browser-detection.d.ts +0 -9
  129. package/dist/common/collection.d.ts +0 -48
  130. package/dist/common/config.d.ts +0 -2
  131. package/dist/common/errors/captcha-error.d.ts +0 -15
  132. package/dist/common/errors/intent-to-join.d.ts +0 -16
  133. package/dist/common/errors/join-meeting.d.ts +0 -17
  134. package/dist/common/errors/media.d.ts +0 -15
  135. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  136. package/dist/common/errors/parameter.d.ts +0 -15
  137. package/dist/common/errors/password-error.d.ts +0 -15
  138. package/dist/common/errors/permission.d.ts +0 -14
  139. package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
  140. package/dist/common/errors/reclaim-host-role-error.js +0 -158
  141. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  142. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  143. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  144. package/dist/common/errors/reconnection-in-progress.js +0 -35
  145. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  146. package/dist/common/errors/reconnection.d.ts +0 -15
  147. package/dist/common/errors/stats.d.ts +0 -15
  148. package/dist/common/errors/webex-errors.d.ts +0 -81
  149. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  150. package/dist/common/events/events-scope.d.ts +0 -17
  151. package/dist/common/events/events.d.ts +0 -12
  152. package/dist/common/events/trigger-proxy.d.ts +0 -2
  153. package/dist/common/events/util.d.ts +0 -2
  154. package/dist/common/logs/logger-config.d.ts +0 -2
  155. package/dist/common/logs/logger-proxy.d.ts +0 -2
  156. package/dist/common/logs/request.d.ts +0 -34
  157. package/dist/common/queue.d.ts +0 -32
  158. package/dist/config.d.ts +0 -73
  159. package/dist/constants.d.ts +0 -952
  160. package/dist/controls-options-manager/constants.d.ts +0 -4
  161. package/dist/controls-options-manager/enums.d.ts +0 -5
  162. package/dist/controls-options-manager/index.d.ts +0 -120
  163. package/dist/controls-options-manager/types.d.ts +0 -43
  164. package/dist/controls-options-manager/util.d.ts +0 -7
  165. package/dist/index.d.ts +0 -4
  166. package/dist/interceptors/index.d.ts +0 -2
  167. package/dist/interceptors/locusRetry.d.ts +0 -27
  168. package/dist/interpretation/collection.d.ts +0 -5
  169. package/dist/interpretation/index.d.ts +0 -5
  170. package/dist/interpretation/siLanguage.d.ts +0 -5
  171. package/dist/locus-info/controlsUtils.d.ts +0 -2
  172. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  173. package/dist/locus-info/fullState.d.ts +0 -2
  174. package/dist/locus-info/hostUtils.d.ts +0 -2
  175. package/dist/locus-info/index.d.ts +0 -269
  176. package/dist/locus-info/infoUtils.d.ts +0 -2
  177. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  178. package/dist/locus-info/parser.d.ts +0 -212
  179. package/dist/locus-info/selfUtils.d.ts +0 -2
  180. package/dist/media/index.d.ts +0 -32
  181. package/dist/media/properties.d.ts +0 -108
  182. package/dist/media/util.d.ts +0 -2
  183. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  184. package/dist/mediaQualityMetrics/config.js +0 -513
  185. package/dist/mediaQualityMetrics/config.js.map +0 -1
  186. package/dist/meeting/effectsState.d.ts +0 -42
  187. package/dist/meeting/effectsState.js +0 -260
  188. package/dist/meeting/effectsState.js.map +0 -1
  189. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  190. package/dist/meeting/index.d.ts +0 -1622
  191. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  192. package/dist/meeting/muteState.d.ts +0 -116
  193. package/dist/meeting/request.d.ts +0 -257
  194. package/dist/meeting/request.type.d.ts +0 -11
  195. package/dist/meeting/state.d.ts +0 -9
  196. package/dist/meeting/util.d.ts +0 -2
  197. package/dist/meeting/voicea-meeting.d.ts +0 -16
  198. package/dist/meeting-info/collection.d.ts +0 -20
  199. package/dist/meeting-info/index.d.ts +0 -57
  200. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  201. package/dist/meeting-info/request.d.ts +0 -22
  202. package/dist/meeting-info/util.d.ts +0 -2
  203. package/dist/meeting-info/utilv2.d.ts +0 -2
  204. package/dist/meetings/collection.d.ts +0 -23
  205. package/dist/meetings/index.d.ts +0 -296
  206. package/dist/meetings/meetings.types.d.ts +0 -4
  207. package/dist/meetings/request.d.ts +0 -27
  208. package/dist/meetings/util.d.ts +0 -18
  209. package/dist/member/index.d.ts +0 -148
  210. package/dist/member/member.types.d.ts +0 -11
  211. package/dist/member/member.types.js +0 -18
  212. package/dist/member/member.types.js.map +0 -1
  213. package/dist/member/types.d.ts +0 -32
  214. package/dist/member/util.d.ts +0 -2
  215. package/dist/members/collection.d.ts +0 -24
  216. package/dist/members/index.d.ts +0 -308
  217. package/dist/members/request.d.ts +0 -58
  218. package/dist/members/types.d.ts +0 -25
  219. package/dist/members/util.d.ts +0 -2
  220. package/dist/metrics/config.d.ts +0 -169
  221. package/dist/metrics/config.js +0 -289
  222. package/dist/metrics/config.js.map +0 -1
  223. package/dist/metrics/constants.d.ts +0 -59
  224. package/dist/metrics/index.d.ts +0 -152
  225. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  226. package/dist/multistream/receiveSlot.d.ts +0 -68
  227. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  228. package/dist/multistream/remoteMedia.d.ts +0 -72
  229. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  230. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  231. package/dist/multistream/sendSlotManager.d.ts +0 -69
  232. package/dist/networkQualityMonitor/index.d.ts +0 -70
  233. package/dist/networkQualityMonitor/index.js +0 -226
  234. package/dist/networkQualityMonitor/index.js.map +0 -1
  235. package/dist/peer-connection-manager/index.d.ts +0 -6
  236. package/dist/peer-connection-manager/index.js +0 -671
  237. package/dist/peer-connection-manager/index.js.map +0 -1
  238. package/dist/peer-connection-manager/util.d.ts +0 -6
  239. package/dist/peer-connection-manager/util.js +0 -110
  240. package/dist/peer-connection-manager/util.js.map +0 -1
  241. package/dist/personal-meeting-room/index.d.ts +0 -47
  242. package/dist/personal-meeting-room/request.d.ts +0 -14
  243. package/dist/personal-meeting-room/util.d.ts +0 -2
  244. package/dist/reachability/clusterReachability.d.ts +0 -109
  245. package/dist/reachability/index.d.ts +0 -139
  246. package/dist/reachability/request.d.ts +0 -35
  247. package/dist/reachability/util.d.ts +0 -8
  248. package/dist/reactions/constants.d.ts +0 -3
  249. package/dist/reactions/reactions.d.ts +0 -4
  250. package/dist/reactions/reactions.type.d.ts +0 -32
  251. package/dist/reconnection-manager/index.d.ts +0 -112
  252. package/dist/recording-controller/enums.d.ts +0 -7
  253. package/dist/recording-controller/index.d.ts +0 -193
  254. package/dist/recording-controller/util.d.ts +0 -13
  255. package/dist/roap/collection.d.ts +0 -10
  256. package/dist/roap/collection.js +0 -63
  257. package/dist/roap/collection.js.map +0 -1
  258. package/dist/roap/handler.d.ts +0 -47
  259. package/dist/roap/handler.js +0 -279
  260. package/dist/roap/handler.js.map +0 -1
  261. package/dist/roap/index.d.ts +0 -116
  262. package/dist/roap/request.d.ts +0 -35
  263. package/dist/roap/state.d.ts +0 -9
  264. package/dist/roap/state.js +0 -127
  265. package/dist/roap/state.js.map +0 -1
  266. package/dist/roap/turnDiscovery.d.ts +0 -81
  267. package/dist/roap/util.d.ts +0 -2
  268. package/dist/roap/util.js +0 -76
  269. package/dist/roap/util.js.map +0 -1
  270. package/dist/rtcMetrics/constants.d.ts +0 -4
  271. package/dist/rtcMetrics/constants.js.map +0 -1
  272. package/dist/rtcMetrics/index.d.ts +0 -61
  273. package/dist/rtcMetrics/index.js +0 -197
  274. package/dist/rtcMetrics/index.js.map +0 -1
  275. package/dist/statsAnalyzer/global.d.ts +0 -118
  276. package/dist/statsAnalyzer/global.js +0 -127
  277. package/dist/statsAnalyzer/global.js.map +0 -1
  278. package/dist/statsAnalyzer/index.d.ts +0 -193
  279. package/dist/statsAnalyzer/index.js +0 -1019
  280. package/dist/statsAnalyzer/index.js.map +0 -1
  281. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  282. package/dist/statsAnalyzer/mqaUtil.js +0 -181
  283. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  284. package/dist/transcription/index.d.ts +0 -64
  285. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  286. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  287. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  288. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  289. package/dist/types/rtcMetrics/index.d.ts +0 -71
  290. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  291. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  292. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  293. package/dist/webinar/collection.d.ts +0 -16
  294. package/dist/webinar/index.d.ts +0 -5
@@ -382,10 +382,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
382
382
  /**
383
383
  * @param {Object} attrs
384
384
  * @param {Object} options
385
+ * @param {Function} callback - if provided, it will be called with the newly created meeting object as soon as the meeting.id is set
385
386
  * @constructor
386
387
  * @memberof Meeting
387
388
  */
388
- function Meeting(attrs, _options) {
389
+ function Meeting(attrs, _options, callback) {
389
390
  var _attrs$callStateForMe, _attrs$callStateForMe2, _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
390
391
  var _this;
391
392
  (0, _classCallCheck2.default)(this, Meeting);
@@ -1071,10 +1072,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1071
1072
  }
1072
1073
  }
1073
1074
 
1074
- // Count members that are in the meeting.
1075
+ // Count members that are in the meeting or in the lobby.
1075
1076
  var members = _this.getMembers().membersCollection.members;
1076
1077
  event.data.intervalMetadata.meetingUserCount = (0, _values.default)(members).filter(function (member) {
1077
- return member.isInMeeting;
1078
+ return member.isInMeeting || member.isInLobby;
1078
1079
  }).length;
1079
1080
 
1080
1081
  // @ts-ignore
@@ -1489,6 +1490,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1489
1490
  * @memberof Meeting
1490
1491
  */
1491
1492
  _this.id = _uuid.default.v4();
1493
+ if (callback) {
1494
+ callback((0, _assertThisInitialized2.default)(_this));
1495
+ }
1496
+
1492
1497
  /**
1493
1498
  * Call state used for metrics
1494
1499
  * @instance
@@ -2042,7 +2047,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2042
2047
  captions: [],
2043
2048
  isListening: false,
2044
2049
  commandText: '',
2045
- languageOptions: {},
2050
+ languageOptions: {
2051
+ currentSpokenLanguage: 'en'
2052
+ },
2046
2053
  showCaptionBox: false,
2047
2054
  transcribingRequestStatus: 'INACTIVE',
2048
2055
  isCaptioning: false,
@@ -2375,6 +2382,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2375
2382
  this.callStateForMetrics.correlationId = correlationId;
2376
2383
  }
2377
2384
 
2385
+ /**
2386
+ * Getter - Returns callStateForMetrics.pstnCorrelationId
2387
+ * @returns {string | undefined}
2388
+ */
2389
+ }, {
2390
+ key: "pstnCorrelationId",
2391
+ get: function get() {
2392
+ return this.callStateForMetrics.pstnCorrelationId;
2393
+ }
2394
+
2395
+ /**
2396
+ * Setter - sets callStateForMetrics.pstnCorrelationId
2397
+ * @param {string | undefined} correlationId
2398
+ */,
2399
+ set: function set(correlationId) {
2400
+ this.callStateForMetrics.pstnCorrelationId = correlationId;
2401
+ }
2402
+
2378
2403
  /**
2379
2404
  * Getter - Returns callStateForMetrics.userNameInput
2380
2405
  * @returns {string}
@@ -3400,8 +3425,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3400
3425
  }
3401
3426
  }
3402
3427
  });
3403
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref12) {
3404
- var enable = _ref12.enable;
3428
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, function (_ref12) {
3429
+ var spokenLanguage = _ref12.spokenLanguage;
3430
+ if (spokenLanguage) {
3431
+ var _this14$transcription;
3432
+ if ((_this14$transcription = _this14.transcription) !== null && _this14$transcription !== void 0 && _this14$transcription.languageOptions) {
3433
+ _this14.transcription.languageOptions.currentSpokenLanguage = spokenLanguage;
3434
+ }
3435
+ // @ts-ignore
3436
+ _this14.webex.internal.voicea.onSpokenLanguageUpdate(spokenLanguage, _this14.id);
3437
+ _triggerProxy.default.trigger(_this14, {
3438
+ file: 'meeting/index',
3439
+ function: 'setupLocusControlsListener'
3440
+ }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, {
3441
+ spokenLanguage: spokenLanguage,
3442
+ meetingId: _this14.id
3443
+ });
3444
+ }
3445
+ });
3446
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref13) {
3447
+ var enable = _ref13.enable;
3405
3448
  _triggerProxy.default.trigger(_this14, {
3406
3449
  file: 'meeting/index',
3407
3450
  function: 'setupLocusControlsListener'
@@ -3409,24 +3452,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3409
3452
  enable: enable
3410
3453
  });
3411
3454
  });
3412
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref13) {
3413
- var breakout = _ref13.breakout;
3455
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref14) {
3456
+ var breakout = _ref14.breakout;
3414
3457
  _this14.breakouts.updateBreakout(breakout);
3415
3458
  _triggerProxy.default.trigger(_this14, {
3416
3459
  file: 'meeting/index',
3417
3460
  function: 'setupLocusControlsListener'
3418
3461
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3419
3462
  });
3420
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref14) {
3421
- var interpretation = _ref14.interpretation;
3463
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref15) {
3464
+ var interpretation = _ref15.interpretation;
3422
3465
  _this14.simultaneousInterpretation.updateInterpretation(interpretation);
3423
3466
  _triggerProxy.default.trigger(_this14, {
3424
3467
  file: 'meeting/index',
3425
3468
  function: 'setupLocusControlsListener'
3426
3469
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3427
3470
  });
3428
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref15) {
3429
- var entryExitTone = _ref15.entryExitTone;
3471
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref16) {
3472
+ var entryExitTone = _ref16.entryExitTone;
3430
3473
  _triggerProxy.default.trigger(_this14, {
3431
3474
  file: 'meeting/index',
3432
3475
  function: 'setupLocusControlsListener'
@@ -3434,8 +3477,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3434
3477
  entryExitTone: entryExitTone
3435
3478
  });
3436
3479
  });
3437
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref16) {
3438
- var state = _ref16.state;
3480
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref17) {
3481
+ var state = _ref17.state;
3439
3482
  _triggerProxy.default.trigger(_this14, {
3440
3483
  file: 'meeting/index',
3441
3484
  function: 'setupLocusControlsListener'
@@ -3443,8 +3486,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3443
3486
  state: state
3444
3487
  });
3445
3488
  });
3446
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref17) {
3447
- var state = _ref17.state;
3489
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref18) {
3490
+ var state = _ref18.state;
3448
3491
  _triggerProxy.default.trigger(_this14, {
3449
3492
  file: 'meeting/index',
3450
3493
  function: 'setupLocusControlsListener'
@@ -3452,8 +3495,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3452
3495
  state: state
3453
3496
  });
3454
3497
  });
3455
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref18) {
3456
- var state = _ref18.state;
3498
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref19) {
3499
+ var state = _ref19.state;
3457
3500
  _triggerProxy.default.trigger(_this14, {
3458
3501
  file: 'meeting/index',
3459
3502
  function: 'setupLocusControlsListener'
@@ -3461,8 +3504,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3461
3504
  state: state
3462
3505
  });
3463
3506
  });
3464
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref19) {
3465
- var state = _ref19.state;
3507
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref20) {
3508
+ var state = _ref20.state;
3466
3509
  _triggerProxy.default.trigger(_this14, {
3467
3510
  file: 'meeting/index',
3468
3511
  function: 'setupLocusControlsListener'
@@ -3470,8 +3513,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3470
3513
  state: state
3471
3514
  });
3472
3515
  });
3473
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref20) {
3474
- var state = _ref20.state;
3516
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref21) {
3517
+ var state = _ref21.state;
3475
3518
  _triggerProxy.default.trigger(_this14, {
3476
3519
  file: 'meeting/index',
3477
3520
  function: 'setupLocusControlsListener'
@@ -3479,8 +3522,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3479
3522
  state: state
3480
3523
  });
3481
3524
  });
3482
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref21) {
3483
- var state = _ref21.state;
3525
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref22) {
3526
+ var state = _ref22.state;
3484
3527
  _triggerProxy.default.trigger(_this14, {
3485
3528
  file: 'meeting/index',
3486
3529
  function: 'setupLocusControlsListener'
@@ -3488,8 +3531,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3488
3531
  state: state
3489
3532
  });
3490
3533
  });
3491
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3492
- var state = _ref22.state;
3534
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref23) {
3535
+ var state = _ref23.state;
3493
3536
  _triggerProxy.default.trigger(_this14, {
3494
3537
  file: 'meeting/index',
3495
3538
  function: 'setupLocusControlsListener'
@@ -3497,8 +3540,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3497
3540
  state: state
3498
3541
  });
3499
3542
  });
3500
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref23) {
3501
- var state = _ref23.state;
3543
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref24) {
3544
+ var state = _ref24.state;
3502
3545
  _triggerProxy.default.trigger(_this14, {
3503
3546
  file: 'meeting/index',
3504
3547
  function: 'setupLocusControlsListener'
@@ -3506,8 +3549,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3506
3549
  state: state
3507
3550
  });
3508
3551
  });
3509
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref24) {
3510
- var state = _ref24.state;
3552
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref25) {
3553
+ var state = _ref25.state;
3511
3554
  _this14.webinar.updatePracticeSessionStatus(state);
3512
3555
  _triggerProxy.default.trigger(_this14, {
3513
3556
  file: 'meeting/index',
@@ -3516,8 +3559,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3516
3559
  state: state
3517
3560
  });
3518
3561
  });
3519
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3520
- var state = _ref25.state;
3562
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref26) {
3563
+ var state = _ref26.state;
3521
3564
  _triggerProxy.default.trigger(_this14, {
3522
3565
  file: 'meeting/index',
3523
3566
  function: 'setupLocusControlsListener'
@@ -3525,8 +3568,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3525
3568
  state: state
3526
3569
  });
3527
3570
  });
3528
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3529
- var state = _ref26.state;
3571
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref27) {
3572
+ var state = _ref27.state;
3530
3573
  _triggerProxy.default.trigger(_this14, {
3531
3574
  file: 'meeting/index',
3532
3575
  function: 'setupLocusControlsListener'
@@ -3534,8 +3577,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3534
3577
  state: state
3535
3578
  });
3536
3579
  });
3537
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref27) {
3538
- var state = _ref27.state;
3580
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref28) {
3581
+ var state = _ref28.state;
3539
3582
  _triggerProxy.default.trigger(_this14, {
3540
3583
  file: 'meeting/index',
3541
3584
  function: 'setupLocusControlsListener'
@@ -3543,8 +3586,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3543
3586
  state: state
3544
3587
  });
3545
3588
  });
3546
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref28) {
3547
- var state = _ref28.state;
3589
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref29) {
3590
+ var state = _ref29.state;
3548
3591
  _triggerProxy.default.trigger(_this14, {
3549
3592
  file: 'meeting/index',
3550
3593
  function: 'setupLocusControlsListener'
@@ -3552,6 +3595,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3552
3595
  state: state
3553
3596
  });
3554
3597
  });
3598
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, function (_ref30) {
3599
+ var state = _ref30.state;
3600
+ _triggerProxy.default.trigger(_this14, {
3601
+ file: 'meeting/index',
3602
+ function: 'setupLocusControlsListener'
3603
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_POLLING_QA_UPDATED, {
3604
+ state: state
3605
+ });
3606
+ });
3555
3607
  }
3556
3608
 
3557
3609
  /**
@@ -3591,7 +3643,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3591
3643
  var _this15 = this;
3592
3644
  // Will get triggered on local and remote share
3593
3645
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3594
- var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3646
+ var _ref31 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3595
3647
  var _payload$previous, _payload$previous2;
3596
3648
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this15$locusInfo, _this15$locusInfo$inf, _this15$webinar, oldShareStatus, sendStartedSharingRemote, _this15$mediaProperti;
3597
3649
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3626,9 +3678,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3626
3678
  // There is no concept of local/remote share for whiteboard
3627
3679
  // It does not matter who requested to share the whiteboard, everyone gets the same view
3628
3680
  else if (whiteboardShare.disposition === _constants.FLOOR_ACTION.GRANTED) {
3629
- // WHITEBOARD - sharing whiteboard
3630
- // Webinar attendee should receive whiteboard as remote share
3631
- newShareStatus = (_this15$locusInfo = _this15.locusInfo) !== null && _this15$locusInfo !== void 0 && (_this15$locusInfo$inf = _this15$locusInfo.info) !== null && _this15$locusInfo$inf !== void 0 && _this15$locusInfo$inf.isWebinar && (_this15$webinar = _this15.webinar) !== null && _this15$webinar !== void 0 && _this15$webinar.selfIsAttendee ? _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE : _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE;
3681
+ if ((_this15$locusInfo = _this15.locusInfo) !== null && _this15$locusInfo !== void 0 && (_this15$locusInfo$inf = _this15$locusInfo.info) !== null && _this15$locusInfo$inf !== void 0 && _this15$locusInfo$inf.isWebinar && (_this15$webinar = _this15.webinar) !== null && _this15$webinar !== void 0 && _this15$webinar.selfIsAttendee) {
3682
+ // WHITEBOARD - sharing whiteboard
3683
+ // Webinar attendee should receive whiteboard as remote share
3684
+ newShareStatus = _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE;
3685
+ } else if (_this15.guest) {
3686
+ // If user is a guest to a meeting, they should receive whiteboard as remote share
3687
+ newShareStatus = _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE;
3688
+ } else {
3689
+ newShareStatus = _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE;
3690
+ }
3632
3691
  }
3633
3692
  // or if content share is either released or null and whiteboard share is either released or null, no one is sharing
3634
3693
  else if ((previousContentShare && contentShare.disposition === _constants.FLOOR_ACTION.RELEASED || contentShare.disposition === null) && (previousWhiteboardShare && whiteboardShare.disposition === _constants.FLOOR_ACTION.RELEASED || whiteboardShare.disposition === null)) {
@@ -3636,7 +3695,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3636
3695
  }
3637
3696
  _loggerProxy.default.logger.info("Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=".concat(_this15.shareStatus, " newShareStatus=").concat(newShareStatus));
3638
3697
  if (!(newShareStatus !== _this15.shareStatus)) {
3639
- _context8.next = 46;
3698
+ _context8.next = 48;
3640
3699
  break;
3641
3700
  }
3642
3701
  oldShareStatus = _this15.shareStatus; // update our state before we send out any notifications
@@ -3644,14 +3703,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3644
3703
 
3645
3704
  // send out "stop" notifications for the old state
3646
3705
  _context8.t0 = oldShareStatus;
3647
- _context8.next = _context8.t0 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 15 : _context8.t0 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 17 : _context8.t0 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 19 : _context8.t0 === _constants.SHARE_STATUS.NO_SHARE ? 21 : 22;
3706
+ _context8.next = _context8.t0 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 15 : _context8.t0 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 17 : _context8.t0 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 19 : _context8.t0 === _constants.SHARE_STATUS.NO_SHARE ? 23 : 24;
3648
3707
  break;
3649
3708
  case 15:
3650
3709
  _triggerProxy.default.trigger(_this15, {
3651
3710
  file: 'meetings/index',
3652
3711
  function: 'remoteShare'
3653
3712
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE);
3654
- return _context8.abrupt("break", 23);
3713
+ return _context8.abrupt("break", 25);
3655
3714
  case 17:
3656
3715
  _triggerProxy.default.trigger(_this15, {
3657
3716
  file: 'meeting/index',
@@ -3659,22 +3718,39 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3659
3718
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
3660
3719
  reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
3661
3720
  });
3662
- return _context8.abrupt("break", 23);
3721
+ return _context8.abrupt("break", 25);
3663
3722
  case 19:
3664
3723
  _triggerProxy.default.trigger(_this15, {
3665
3724
  file: 'meeting/index',
3666
3725
  function: 'stopWhiteboardShare'
3667
3726
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD);
3668
- return _context8.abrupt("break", 23);
3669
- case 21:
3670
- return _context8.abrupt("break", 23);
3671
- case 22:
3672
- return _context8.abrupt("break", 23);
3727
+ // @ts-ignore
3728
+ _this15.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
3729
+ key: 'internal.client.share.stopped'
3730
+ });
3731
+ // @ts-ignore
3732
+ _this15.webex.internal.newMetrics.submitClientEvent({
3733
+ name: 'client.share.stopped',
3734
+ payload: {
3735
+ mediaType: 'whiteboard',
3736
+ shareDuration:
3737
+ // @ts-ignore
3738
+ _this15.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration()
3739
+ },
3740
+ options: {
3741
+ meetingId: _this15.id
3742
+ }
3743
+ });
3744
+ return _context8.abrupt("break", 25);
3673
3745
  case 23:
3746
+ return _context8.abrupt("break", 25);
3747
+ case 24:
3748
+ return _context8.abrupt("break", 25);
3749
+ case 25:
3674
3750
  _context8.t1 = newShareStatus;
3675
- _context8.next = _context8.t1 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 26 : _context8.t1 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 35 : _context8.t1 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 38 : _context8.t1 === _constants.SHARE_STATUS.NO_SHARE ? 41 : 42;
3751
+ _context8.next = _context8.t1 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 28 : _context8.t1 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 37 : _context8.t1 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 40 : _context8.t1 === _constants.SHARE_STATUS.NO_SHARE ? 43 : 44;
3676
3752
  break;
3677
- case 26:
3753
+ case 28:
3678
3754
  sendStartedSharingRemote = function sendStartedSharingRemote() {
3679
3755
  _this15.remoteShareInstanceId = contentShare.shareInstanceId;
3680
3756
  _this15.shareCAEventSentStatus.receiveStart = false;
@@ -3690,20 +3766,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3690
3766
  resourceType: contentShare.resourceType
3691
3767
  });
3692
3768
  };
3693
- _context8.prev = 27;
3769
+ _context8.prev = 29;
3694
3770
  if (!((_this15$mediaProperti = _this15.mediaProperties.mediaDirection) !== null && _this15$mediaProperti !== void 0 && _this15$mediaProperti.sendShare && oldShareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE)) {
3695
- _context8.next = 31;
3771
+ _context8.next = 33;
3696
3772
  break;
3697
3773
  }
3698
- _context8.next = 31;
3774
+ _context8.next = 33;
3699
3775
  return _this15.unpublishStreams([_this15.mediaProperties.shareVideoStream, _this15.mediaProperties.shareAudioStream]);
3700
- case 31:
3701
- _context8.prev = 31;
3776
+ case 33:
3777
+ _context8.prev = 33;
3702
3778
  sendStartedSharingRemote();
3703
- return _context8.finish(31);
3704
- case 34:
3705
- return _context8.abrupt("break", 43);
3706
- case 35:
3779
+ return _context8.finish(33);
3780
+ case 36:
3781
+ return _context8.abrupt("break", 45);
3782
+ case 37:
3707
3783
  _triggerProxy.default.trigger(_this15, {
3708
3784
  file: 'meeting/index',
3709
3785
  function: 'share'
@@ -3719,8 +3795,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3719
3795
  meetingId: _this15.id
3720
3796
  }
3721
3797
  });
3722
- return _context8.abrupt("break", 43);
3723
- case 38:
3798
+ return _context8.abrupt("break", 45);
3799
+ case 40:
3724
3800
  _triggerProxy.default.trigger(_this15, {
3725
3801
  file: 'meeting/index',
3726
3802
  function: 'startWhiteboardShare'
@@ -3738,16 +3814,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3738
3814
  meetingId: _this15.id
3739
3815
  }
3740
3816
  });
3741
- return _context8.abrupt("break", 43);
3742
- case 41:
3743
- return _context8.abrupt("break", 43);
3744
- case 42:
3745
- return _context8.abrupt("break", 43);
3817
+ return _context8.abrupt("break", 45);
3746
3818
  case 43:
3819
+ return _context8.abrupt("break", 45);
3820
+ case 44:
3821
+ return _context8.abrupt("break", 45);
3822
+ case 45:
3747
3823
  _this15.members.locusMediaSharesUpdate(payload);
3748
- _context8.next = 47;
3824
+ _context8.next = 49;
3749
3825
  break;
3750
- case 46:
3826
+ case 48:
3751
3827
  if (newShareStatus === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE) {
3752
3828
  // if we got here, then some remote participant has stolen
3753
3829
  // the presentation from another remote participant
@@ -3787,14 +3863,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3787
3863
  });
3788
3864
  _this15.members.locusMediaSharesUpdate(payload);
3789
3865
  }
3790
- case 47:
3866
+ case 49:
3791
3867
  case "end":
3792
3868
  return _context8.stop();
3793
3869
  }
3794
- }, _callee8, null, [[27,, 31, 34]]);
3870
+ }, _callee8, null, [[29,, 33, 36]]);
3795
3871
  }));
3796
3872
  return function (_x8) {
3797
- return _ref29.apply(this, arguments);
3873
+ return _ref31.apply(this, arguments);
3798
3874
  };
3799
3875
  }());
3800
3876
  }
@@ -3908,8 +3984,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3908
3984
  });
3909
3985
  }
3910
3986
  });
3911
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref30) {
3912
- var isInitializing = _ref30.isInitializing;
3987
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref32) {
3988
+ var isInitializing = _ref32.isInitializing;
3913
3989
  _this19.updateMeetingActions();
3914
3990
  _this19.recordingController.setDisplayHints(_this19.userDisplayHints);
3915
3991
  _this19.recordingController.setUserPolicy(_this19.selfUserPolicies);
@@ -4047,7 +4123,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4047
4123
  _this21.updateLLMConnection();
4048
4124
  });
4049
4125
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
4050
- var _ref31 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
4126
+ var _ref33 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
4051
4127
  var _this21$rtcMetrics;
4052
4128
  return _regenerator.default.wrap(function _callee9$(_context9) {
4053
4129
  while (1) switch (_context9.prev = _context9.next) {
@@ -4081,7 +4157,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4081
4157
  }, _callee9);
4082
4158
  }));
4083
4159
  return function (_x9) {
4084
- return _ref31.apply(this, arguments);
4160
+ return _ref33.apply(this, arguments);
4085
4161
  };
4086
4162
  }());
4087
4163
 
@@ -4200,7 +4276,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4200
4276
  }
4201
4277
  });
4202
4278
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
4203
- var _ref32 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
4279
+ var _ref34 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
4204
4280
  return _regenerator.default.wrap(function _callee10$(_context10) {
4205
4281
  while (1) switch (_context10.prev = _context10.next) {
4206
4282
  case 0:
@@ -4260,7 +4336,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4260
4336
  }, _callee10, null, [[8, 14]]);
4261
4337
  }));
4262
4338
  return function (_x10) {
4263
- return _ref32.apply(this, arguments);
4339
+ return _ref34.apply(this, arguments);
4264
4340
  };
4265
4341
  }());
4266
4342
  }
@@ -4289,11 +4365,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4289
4365
 
4290
4366
  /**
4291
4367
  * Invite a guest to the call that isn't normally part of this call
4292
- * @param {Object} invitee
4368
+ * @param {Invitee} invitee
4293
4369
  * @param {String} invitee.emailAddress
4294
4370
  * @param {String} invitee.email
4295
4371
  * @param {String} invitee.phoneNumber
4296
4372
  * @param {Boolean} [alertIfActive]
4373
+ * @param {Boolean} [invitee.skipEmailValidation]
4374
+ * @param {Boolean} [invitee.isInternalNumber]
4297
4375
  * @returns {Promise} see #members.addMember
4298
4376
  * @public
4299
4377
  * @memberof Meeting
@@ -4307,7 +4385,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4307
4385
 
4308
4386
  /**
4309
4387
  * Cancel an outgoing phone call invitation made during a meeting
4310
- * @param {Object} invitee
4388
+ * @param {Invitee} invitee
4311
4389
  * @param {String} invitee.phoneNumber
4312
4390
  * @returns {Promise} see #members.cancelPhoneInvite
4313
4391
  * @public
@@ -4320,17 +4398,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4320
4398
  }
4321
4399
 
4322
4400
  /**
4323
- * Cancel an SIP call invitation made during a meeting
4324
- * @param {Object} invitee
4401
+ * Cancel an SIP/phone call invitation made during a meeting
4402
+ * @param {Invitee} invitee
4325
4403
  * @param {String} invitee.memberId
4326
- * @returns {Promise} see #members.cancelSIPInvite
4404
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
4405
+ * @returns {Promise} see #members.cancelInviteByMemberId
4327
4406
  * @public
4328
4407
  * @memberof Meeting
4329
4408
  */
4330
4409
  }, {
4331
- key: "cancelSIPInvite",
4332
- value: function cancelSIPInvite(invitee) {
4333
- return this.members.cancelSIPInvite(invitee);
4410
+ key: "cancelInviteByMemberId",
4411
+ value: function cancelInviteByMemberId(invitee) {
4412
+ return this.members.cancelInviteByMemberId(invitee);
4334
4413
  }
4335
4414
 
4336
4415
  /**
@@ -4405,6 +4484,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4405
4484
  // so we need to explicitly update remote mute for correct logic flow
4406
4485
  _this24.audio.handleServerRemoteMuteUpdate(_this24, enabled);
4407
4486
  }
4487
+ }).catch(function (error) {
4488
+ return _promise.default.reject(error);
4408
4489
  }));
4409
4490
  case 11:
4410
4491
  case "end":
@@ -4613,6 +4694,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4613
4694
  isClosedCaptionActive: _util2.default.isClosedCaptionActive(this.userDisplayHints),
4614
4695
  canStartManualCaption: _util2.default.canStartManualCaption(this.userDisplayHints),
4615
4696
  canStopManualCaption: _util2.default.canStopManualCaption(this.userDisplayHints),
4697
+ isLocalRecordingStarted: _util2.default.isLocalRecordingStarted(this.userDisplayHints),
4698
+ isLocalRecordingStopped: _util2.default.isLocalRecordingStopped(this.userDisplayHints),
4699
+ isLocalRecordingPaused: _util2.default.isLocalRecordingPaused(this.userDisplayHints),
4616
4700
  isManualCaptionActive: _util2.default.isManualCaptionActive(this.userDisplayHints),
4617
4701
  isSaveTranscriptsEnabled: _util2.default.isSaveTranscriptsEnabled(this.userDisplayHints),
4618
4702
  isWebexAssistantActive: _util2.default.isWebexAssistantActive(this.userDisplayHints),
@@ -4822,6 +4906,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4822
4906
  canDisableRemoteDesktopControl: _util5.default.hasHints({
4823
4907
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_RDC_MEETING_OPTION],
4824
4908
  displayHints: this.userDisplayHints
4909
+ }),
4910
+ canEnablePollingQA: _util5.default.hasHints({
4911
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_ATTENDEE_START_POLLING_QA],
4912
+ displayHints: this.userDisplayHints
4913
+ }),
4914
+ canDisablePollingQA: _util5.default.hasHints({
4915
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],
4916
+ displayHints: this.userDisplayHints
4825
4917
  })
4826
4918
  }) || changed;
4827
4919
  }
@@ -5343,13 +5435,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5343
5435
 
5344
5436
  // Only send restore event when it was disconnected before and for connected later
5345
5437
  if (!_this27.hasWebsocketConnected) {
5346
- // @ts-ignore
5347
- _this27.webex.internal.newMetrics.submitClientEvent({
5348
- name: 'client.mercury.connection.restored',
5349
- options: {
5350
- meetingId: _this27.id
5351
- }
5352
- });
5353
5438
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
5354
5439
  correlation_id: _this27.correlationId
5355
5440
  });
@@ -5360,13 +5445,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5360
5445
  // @ts-ignore
5361
5446
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
5362
5447
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
5363
- // @ts-ignore
5364
- _this27.webex.internal.newMetrics.submitClientEvent({
5365
- name: 'client.mercury.connection.lost',
5366
- options: {
5367
- meetingId: _this27.id
5368
- }
5369
- });
5370
5448
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
5371
5449
  correlation_id: _this27.correlationId
5372
5450
  });
@@ -6293,24 +6371,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6293
6371
  _this36.deferJoin = undefined;
6294
6372
  return join;
6295
6373
  }).catch(function (error) {
6296
- var _this36$meetingInfo, _error$error;
6374
+ var _error$error;
6297
6375
  _this36.meetingFiniteStateMachine.fail(error);
6298
6376
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
6299
6377
 
6300
- // @ts-ignore
6301
- _this36.webex.internal.newMetrics.submitClientEvent({
6302
- name: 'client.locus.join.response',
6303
- payload: {
6304
- identifiers: {
6305
- meetingLookupUrl: (_this36$meetingInfo = _this36.meetingInfo) === null || _this36$meetingInfo === void 0 ? void 0 : _this36$meetingInfo.meetingLookupUrl
6306
- }
6307
- },
6308
- options: {
6309
- meetingId: _this36.id,
6310
- rawError: error
6311
- }
6312
- });
6313
-
6314
6378
  // TODO: change this to error codes and pre defined dictionary
6315
6379
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
6316
6380
  correlation_id: _this36.correlationId,
@@ -6464,14 +6528,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6464
6528
  value: function dialInPstn() {
6465
6529
  var _this38 = this;
6466
6530
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
6467
-
6468
- var correlationId = this.correlationId,
6531
+ this.pstnCorrelationId = _uuid.default.v4();
6532
+ var pstnCorrelationId = this.pstnCorrelationId,
6469
6533
  locusUrl = this.locusUrl;
6470
6534
  if (!this.dialInUrl) this.dialInUrl = "dialin:///".concat(_uuid.default.v4());
6471
6535
  return this.meetingRequest
6472
6536
  // @ts-ignore
6473
6537
  .dialIn({
6474
- correlationId: correlationId,
6538
+ correlationId: pstnCorrelationId,
6475
6539
  dialInUrl: this.dialInUrl,
6476
6540
  locusUrl: locusUrl,
6477
6541
  clientUrl: this.deviceUrl
@@ -6480,11 +6544,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6480
6544
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
6481
6545
  correlation_id: _this38.correlationId,
6482
6546
  dial_in_url: _this38.dialInUrl,
6547
+ dial_in_correlation_id: pstnCorrelationId,
6483
6548
  locus_id: locusUrl.split('/').pop(),
6484
6549
  client_url: _this38.deviceUrl,
6485
6550
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
6486
6551
  stack: error.stack
6487
6552
  });
6553
+ if (_this38.pstnCorrelationId === pstnCorrelationId) {
6554
+ _this38.pstnCorrelationId = undefined;
6555
+ }
6488
6556
  return _promise.default.reject(error);
6489
6557
  });
6490
6558
  }
@@ -6501,14 +6569,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6501
6569
  value: function dialOutPstn(phoneNumber) {
6502
6570
  var _this39 = this;
6503
6571
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
6504
-
6505
- var correlationId = this.correlationId,
6506
- locusUrl = this.locusUrl;
6572
+ this.pstnCorrelationId = _uuid.default.v4();
6573
+ var locusUrl = this.locusUrl,
6574
+ pstnCorrelationId = this.pstnCorrelationId;
6507
6575
  if (!this.dialOutUrl) this.dialOutUrl = "dialout:///".concat(_uuid.default.v4());
6508
6576
  return this.meetingRequest
6509
6577
  // @ts-ignore
6510
6578
  .dialOut({
6511
- correlationId: correlationId,
6579
+ correlationId: pstnCorrelationId,
6512
6580
  dialOutUrl: this.dialOutUrl,
6513
6581
  phoneNumber: phoneNumber,
6514
6582
  locusUrl: locusUrl,
@@ -6518,11 +6586,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6518
6586
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
6519
6587
  correlation_id: _this39.correlationId,
6520
6588
  dial_out_url: _this39.dialOutUrl,
6589
+ dial_out_correlation_id: pstnCorrelationId,
6521
6590
  locus_id: locusUrl.split('/').pop(),
6522
6591
  client_url: _this39.deviceUrl,
6523
6592
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
6524
6593
  stack: error.stack
6525
6594
  });
6595
+ if (_this39.pstnCorrelationId === pstnCorrelationId) {
6596
+ _this39.pstnCorrelationId = undefined;
6597
+ }
6526
6598
  return _promise.default.reject(error);
6527
6599
  });
6528
6600
  }
@@ -6537,7 +6609,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6537
6609
  }, {
6538
6610
  key: "disconnectPhoneAudio",
6539
6611
  value: function disconnectPhoneAudio() {
6540
- return _promise.default.all([this.isPhoneProvisioned(this.dialInDeviceStatus) ? _util2.default.disconnectPhoneAudio(this, this.dialInUrl) : _promise.default.resolve(), this.isPhoneProvisioned(this.dialOutDeviceStatus) ? _util2.default.disconnectPhoneAudio(this, this.dialOutUrl) : _promise.default.resolve()]);
6612
+ var _this40 = this;
6613
+ var correlationToClear = this.pstnCorrelationId;
6614
+ return _promise.default.all([this.isPhoneProvisioned(this.dialInDeviceStatus) ? _util2.default.disconnectPhoneAudio(this, this.dialInUrl) : _promise.default.resolve(), this.isPhoneProvisioned(this.dialOutDeviceStatus) ? _util2.default.disconnectPhoneAudio(this, this.dialOutUrl) : _promise.default.resolve()]).then(function () {
6615
+ if (_this40.pstnCorrelationId === correlationToClear) {
6616
+ _this40.pstnCorrelationId = undefined;
6617
+ }
6618
+ });
6541
6619
  }
6542
6620
 
6543
6621
  /**
@@ -6550,7 +6628,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6550
6628
  }, {
6551
6629
  key: "moveTo",
6552
6630
  value: function moveTo(resourceId) {
6553
- var _this40 = this;
6631
+ var _this41 = this;
6554
6632
  if (!resourceId) {
6555
6633
  throw new _parameter.default('Cannot move call without a resourceId.');
6556
6634
  }
@@ -6594,12 +6672,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6594
6672
  while (1) switch (_context21.prev = _context21.next) {
6595
6673
  case 0:
6596
6674
  _context21.prev = 0;
6597
- if (!(_this40.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6675
+ if (!(_this41.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6598
6676
  _context21.next = 4;
6599
6677
  break;
6600
6678
  }
6601
6679
  _context21.next = 4;
6602
- return _this40.releaseScreenShareFloor();
6680
+ return _this41.releaseScreenShareFloor();
6603
6681
  case 4:
6604
6682
  mediaSettings = {
6605
6683
  mediaDirection: {
@@ -6611,37 +6689,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6611
6689
  receiveShare: true
6612
6690
  }
6613
6691
  };
6614
- _this40.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6615
- _this40.mediaProperties.unsetRemoteMedia();
6692
+ _this41.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6693
+ _this41.mediaProperties.unsetRemoteMedia();
6616
6694
 
6617
6695
  // 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
6618
6696
  // once the device answers we close the old connection and create new media server connection with only share enabled
6619
- if (!_this40.statsAnalyzer) {
6697
+ if (!_this41.statsAnalyzer) {
6620
6698
  _context21.next = 10;
6621
6699
  break;
6622
6700
  }
6623
6701
  _context21.next = 10;
6624
- return _this40.statsAnalyzer.stopAnalyzer();
6702
+ return _this41.statsAnalyzer.stopAnalyzer();
6625
6703
  case 10:
6626
6704
  _context21.next = 12;
6627
- return _this40.closeRemoteStreams();
6705
+ return _this41.closeRemoteStreams();
6628
6706
  case 12:
6629
6707
  _context21.next = 14;
6630
- return _this40.closePeerConnections();
6708
+ return _this41.closePeerConnections();
6631
6709
  case 14:
6632
- _this40.cleanupLocalStreams();
6633
- _this40.unsetRemoteStreams();
6634
- _this40.unsetPeerConnections();
6635
- _this40.reconnectionManager.cleanUp();
6710
+ _this41.cleanupLocalStreams();
6711
+ _this41.unsetRemoteStreams();
6712
+ _this41.unsetPeerConnections();
6713
+ _this41.reconnectionManager.cleanUp();
6636
6714
  _context21.next = 20;
6637
- return _this40.addMedia({
6715
+ return _this41.addMedia({
6638
6716
  audioEnabled: false,
6639
6717
  videoEnabled: false,
6640
6718
  shareVideoEnabled: true
6641
6719
  });
6642
6720
  case 20:
6643
6721
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6644
- _this40.isMoveToInProgress = false;
6722
+ _this41.isMoveToInProgress = false;
6645
6723
  _context21.next = 29;
6646
6724
  break;
6647
6725
  case 24:
@@ -6649,12 +6727,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6649
6727
  _context21.t0 = _context21["catch"](0);
6650
6728
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context21.t0);
6651
6729
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6652
- correlation_id: _this40.correlationId,
6653
- locus_id: _this40.locusUrl.split('/').pop(),
6730
+ correlation_id: _this41.correlationId,
6731
+ locus_id: _this41.locusUrl.split('/').pop(),
6654
6732
  reason: _context21.t0.message,
6655
6733
  stack: _context21.t0.stack
6656
6734
  });
6657
- _this40.isMoveToInProgress = false;
6735
+ _this41.isMoveToInProgress = false;
6658
6736
  case 29:
6659
6737
  case "end":
6660
6738
  return _context21.stop();
@@ -6670,17 +6748,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6670
6748
  resourceId: resourceId,
6671
6749
  moveToResource: true
6672
6750
  }).then(function () {
6673
- _this40.meetingFiniteStateMachine.join();
6751
+ _this41.meetingFiniteStateMachine.join();
6674
6752
  }).catch(function (error) {
6675
- _this40.meetingFiniteStateMachine.fail(error);
6753
+ _this41.meetingFiniteStateMachine.fail(error);
6676
6754
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6677
- correlation_id: _this40.correlationId,
6678
- locus_id: _this40.locusUrl.split('/').pop(),
6755
+ correlation_id: _this41.correlationId,
6756
+ locus_id: _this41.locusUrl.split('/').pop(),
6679
6757
  reason: error.message,
6680
6758
  stack: error.stack
6681
6759
  });
6682
6760
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6683
- _this40.isMoveToInProgress = false;
6761
+ _this41.isMoveToInProgress = false;
6684
6762
  return _promise.default.reject(error);
6685
6763
  });
6686
6764
  }
@@ -6695,7 +6773,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6695
6773
  }, {
6696
6774
  key: "moveFrom",
6697
6775
  value: function moveFrom(resourceId) {
6698
- var _this41 = this;
6776
+ var _this42 = this;
6699
6777
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6700
6778
  if (!resourceId) {
6701
6779
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6710,19 +6788,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6710
6788
  }
6711
6789
  });
6712
6790
  return _util2.default.joinMeetingOptions(this).then(function () {
6713
- return _util2.default.leaveMeeting(_this41, {
6791
+ return _util2.default.leaveMeeting(_this42, {
6714
6792
  resourceId: resourceId,
6715
6793
  correlationId: oldCorrelationId,
6716
6794
  moveMeeting: true
6717
6795
  }).then(function () {
6718
- _this41.resourceId = '';
6796
+ _this42.resourceId = '';
6719
6797
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6720
6798
  });
6721
6799
  }).catch(function (error) {
6722
- _this41.meetingFiniteStateMachine.fail(error);
6800
+ _this42.meetingFiniteStateMachine.fail(error);
6723
6801
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6724
- correlation_id: _this41.correlationId,
6725
- locus_id: _this41.locusUrl.split('/').pop(),
6802
+ correlation_id: _this42.correlationId,
6803
+ locus_id: _this42.locusUrl.split('/').pop(),
6726
6804
  reason: error.message,
6727
6805
  stack: error.stack
6728
6806
  });
@@ -6845,9 +6923,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6845
6923
  }, {
6846
6924
  key: "forwardEvent",
6847
6925
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6848
- var _this42 = this;
6926
+ var _this43 = this;
6849
6927
  eventEmitter.on(eventTypeToForward, function (data) {
6850
- return _triggerProxy.default.trigger(_this42, {
6928
+ return _triggerProxy.default.trigger(_this43, {
6851
6929
  file: 'meetings',
6852
6930
  function: 'addMedia'
6853
6931
  }, meetingEventType, data);
@@ -7033,7 +7111,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7033
7111
  key: "waitForRemoteSDPAnswer",
7034
7112
  value: (function () {
7035
7113
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25() {
7036
- var _this43 = this;
7114
+ var _this44 = this;
7037
7115
  var LOG_HEADER, deferSDPAnswer;
7038
7116
  return _regenerator.default.wrap(function _callee25$(_context25) {
7039
7117
  while (1) switch (_context25.prev = _context25.next) {
@@ -7052,18 +7130,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7052
7130
  var error = new Error('Timed out waiting for REMOTE SDP ANSWER');
7053
7131
 
7054
7132
  // @ts-ignore
7055
- _this43.webex.internal.newMetrics.submitClientEvent({
7133
+ _this44.webex.internal.newMetrics.submitClientEvent({
7056
7134
  name: 'client.media-engine.remote-sdp-received',
7057
7135
  payload: {
7058
7136
  canProceed: false,
7059
7137
  errors: [
7060
7138
  // @ts-ignore
7061
- _this43.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
7139
+ _this44.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
7062
7140
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
7063
7141
  })]
7064
7142
  },
7065
7143
  options: {
7066
- meetingId: _this43.id,
7144
+ meetingId: _this44.id,
7067
7145
  rawError: error
7068
7146
  }
7069
7147
  });
@@ -7570,10 +7648,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7570
7648
  }, {
7571
7649
  key: "addMedia",
7572
7650
  value: function addMedia() {
7573
- var _this44 = this;
7651
+ var _this45 = this;
7574
7652
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7575
7653
  return this.addMediaInternal(function () {
7576
- return _this44.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7654
+ return _this45.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7577
7655
  }, undefined, false, options);
7578
7656
  }
7579
7657
 
@@ -7606,6 +7684,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7606
7684
  remoteMediaManagerConfig,
7607
7685
  _options$bundlePolicy,
7608
7686
  bundlePolicy,
7687
+ _options$additionalMe,
7688
+ additionalMediaOptions,
7689
+ rawSendVideo,
7690
+ rawReceiveVideo,
7691
+ rawSendAudio,
7692
+ rawReceiveAudio,
7693
+ sendVideo,
7694
+ receiveVideo,
7695
+ sendAudio,
7696
+ receiveAudio,
7697
+ ipver,
7609
7698
  _this$remoteMediaMana,
7610
7699
  _yield$this$mediaProp,
7611
7700
  connectionType,
@@ -7662,17 +7751,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7662
7751
  }
7663
7752
  throw new _webexErrors.UserNotJoinedError();
7664
7753
  case 10:
7665
- localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy;
7754
+ localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy, _options$additionalMe = options.additionalMediaOptions, additionalMediaOptions = _options$additionalMe === void 0 ? {} : _options$additionalMe;
7755
+ rawSendVideo = additionalMediaOptions.sendVideo, rawReceiveVideo = additionalMediaOptions.receiveVideo, rawSendAudio = additionalMediaOptions.sendAudio, rawReceiveAudio = additionalMediaOptions.receiveAudio;
7756
+ sendVideo = videoEnabled && (rawSendVideo !== null && rawSendVideo !== void 0 ? rawSendVideo : true);
7757
+ receiveVideo = videoEnabled && (rawReceiveVideo !== null && rawReceiveVideo !== void 0 ? rawReceiveVideo : true);
7758
+ sendAudio = audioEnabled && (rawSendAudio !== null && rawSendAudio !== void 0 ? rawSendAudio : true);
7759
+ receiveAudio = audioEnabled && (rawReceiveAudio !== null && rawReceiveAudio !== void 0 ? rawReceiveAudio : true);
7666
7760
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
7667
7761
 
7762
+ // @ts-ignore
7763
+ ipver = _util2.default.getIpVersion(this.webex); // used just for metrics
7668
7764
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
7669
7765
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
7670
7766
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
7671
- _context35.next = 14;
7767
+ _context35.next = 20;
7672
7768
  break;
7673
7769
  }
7674
7770
  throw new _webexErrors.UserInLobbyError();
7675
- case 14:
7771
+ case 20:
7676
7772
  // @ts-ignore
7677
7773
  this.webex.internal.newMetrics.submitClientEvent({
7678
7774
  name: 'client.media.capabilities',
@@ -7702,73 +7798,74 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7702
7798
  // when audioEnabled/videoEnabled is true, we set sendAudio/sendVideo to true even before any streams are published
7703
7799
  // to avoid doing an extra SDP exchange when they are published for the first time
7704
7800
  this.mediaProperties.setMediaDirection({
7705
- sendAudio: audioEnabled,
7706
- sendVideo: videoEnabled,
7801
+ sendAudio: sendAudio,
7802
+ sendVideo: sendVideo,
7707
7803
  sendShare: false,
7708
- receiveAudio: audioEnabled,
7709
- receiveVideo: videoEnabled,
7804
+ receiveAudio: receiveAudio,
7805
+ receiveVideo: receiveVideo,
7710
7806
  receiveShare: shareAudioEnabled || shareVideoEnabled
7711
7807
  });
7712
7808
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7713
7809
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7714
7810
  this.brbState = (0, _brbState.createBrbState)(this, false);
7715
- _context35.prev = 19;
7716
- _context35.next = 22;
7811
+ _context35.prev = 25;
7812
+ _context35.next = 28;
7717
7813
  return this.setUpLocalStreamReferences(localStreams);
7718
- case 22:
7814
+ case 28:
7719
7815
  this.setMercuryListener();
7720
7816
  this.createStatsAnalyzer();
7721
- _context35.prev = 24;
7722
- _context35.next = 27;
7817
+ _context35.prev = 30;
7818
+ _context35.next = 33;
7723
7819
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7724
- case 27:
7725
- _context35.next = 40;
7820
+ case 33:
7821
+ _context35.next = 46;
7726
7822
  break;
7727
- case 29:
7728
- _context35.prev = 29;
7729
- _context35.t0 = _context35["catch"](24);
7823
+ case 35:
7824
+ _context35.prev = 35;
7825
+ _context35.t0 = _context35["catch"](30);
7730
7826
  if (!(_context35.t0 instanceof _multistreamNotSupportedError.default)) {
7731
- _context35.next = 39;
7827
+ _context35.next = 45;
7732
7828
  break;
7733
7829
  }
7734
7830
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " we asked for multistream backend (Homer), but got transcoded backend, recreating media connection..."));
7735
- _context35.next = 35;
7831
+ _context35.next = 41;
7736
7832
  return this.downgradeFromMultistreamToTranscoded();
7737
- case 35:
7738
- _context35.next = 37;
7833
+ case 41:
7834
+ _context35.next = 43;
7739
7835
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true, undefined);
7740
- case 37:
7741
- _context35.next = 40;
7836
+ case 43:
7837
+ _context35.next = 46;
7742
7838
  break;
7743
- case 39:
7839
+ case 45:
7744
7840
  throw _context35.t0;
7745
- case 40:
7841
+ case 46:
7746
7842
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connected, finalizing..."));
7747
7843
  if (!this.mediaProperties.hasLocalShareStream()) {
7748
- _context35.next = 44;
7844
+ _context35.next = 50;
7749
7845
  break;
7750
7846
  }
7751
- _context35.next = 44;
7847
+ _context35.next = 50;
7752
7848
  return this.enqueueScreenShareFloorRequest();
7753
- case 44:
7754
- _context35.next = 46;
7849
+ case 50:
7850
+ _context35.next = 52;
7755
7851
  return this.mediaProperties.getCurrentConnectionInfo();
7756
- case 46:
7852
+ case 52:
7757
7853
  _yield$this$mediaProp = _context35.sent;
7758
7854
  connectionType = _yield$this$mediaProp.connectionType;
7759
7855
  ipVersion = _yield$this$mediaProp.ipVersion;
7760
7856
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7761
7857
  numTransports = _yield$this$mediaProp.numTransports;
7762
7858
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7763
- _context35.next = 54;
7859
+ _context35.next = 60;
7764
7860
  return this.getMediaReachabilityMetricFields();
7765
- case 54:
7861
+ case 60:
7766
7862
  reachabilityMetrics = _context35.sent;
7767
7863
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7768
7864
  correlation_id: this.correlationId,
7769
7865
  locus_id: this.locusUrl.split('/').pop(),
7770
7866
  connectionType: connectionType,
7771
7867
  ipVersion: ipVersion,
7868
+ ipver: ipver,
7772
7869
  selectedCandidatePairChanges: selectedCandidatePairChanges,
7773
7870
  numTransports: numTransports,
7774
7871
  isMultistream: this.isMultistream,
@@ -7792,21 +7889,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7792
7889
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7793
7890
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7794
7891
  this.startPeriodicLogUpload();
7795
- _context35.next = 80;
7892
+ _context35.next = 86;
7796
7893
  break;
7797
- case 62:
7798
- _context35.prev = 62;
7799
- _context35.t1 = _context35["catch"](19);
7894
+ case 68:
7895
+ _context35.prev = 68;
7896
+ _context35.t1 = _context35["catch"](25);
7800
7897
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context35.t1);
7801
7898
 
7802
7899
  // @ts-ignore
7803
- _context35.next = 67;
7900
+ _context35.next = 73;
7804
7901
  return this.getMediaReachabilityMetricFields();
7805
- case 67:
7902
+ case 73:
7806
7903
  _reachabilityMetrics = _context35.sent;
7807
- _context35.next = 70;
7904
+ _context35.next = 76;
7808
7905
  return this.mediaProperties.getCurrentConnectionInfo();
7809
- case 70:
7906
+ case 76:
7810
7907
  _yield$this$mediaProp2 = _context35.sent;
7811
7908
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7812
7909
  _numTransports = _yield$this$mediaProp2.numTransports;
@@ -7828,11 +7925,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7828
7925
  connectionState: ((_this$mediaProperties22 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.multistreamConnection) === null || _this$mediaProperties23 === void 0 ? void 0 : (_this$mediaProperties24 = _this$mediaProperties23.pc) === null || _this$mediaProperties24 === void 0 ? void 0 : (_this$mediaProperties25 = _this$mediaProperties24.pc) === null || _this$mediaProperties25 === void 0 ? void 0 : _this$mediaProperties25.connectionState) || ((_this$mediaProperties26 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties26 === void 0 ? void 0 : (_this$mediaProperties27 = _this$mediaProperties26.mediaConnection) === null || _this$mediaProperties27 === void 0 ? void 0 : (_this$mediaProperties28 = _this$mediaProperties27.pc) === null || _this$mediaProperties28 === void 0 ? void 0 : _this$mediaProperties28.connectionState) || 'unknown',
7829
7926
  iceConnectionState: ((_this$mediaProperties29 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.multistreamConnection) === null || _this$mediaProperties30 === void 0 ? void 0 : (_this$mediaProperties31 = _this$mediaProperties30.pc) === null || _this$mediaProperties31 === void 0 ? void 0 : (_this$mediaProperties32 = _this$mediaProperties31.pc) === null || _this$mediaProperties32 === void 0 ? void 0 : _this$mediaProperties32.iceConnectionState) || ((_this$mediaProperties33 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties33 === void 0 ? void 0 : (_this$mediaProperties34 = _this$mediaProperties33.mediaConnection) === null || _this$mediaProperties34 === void 0 ? void 0 : (_this$mediaProperties35 = _this$mediaProperties34.pc) === null || _this$mediaProperties35 === void 0 ? void 0 : _this$mediaProperties35.iceConnectionState) || 'unknown'
7830
7927
  }, _reachabilityMetrics), _iceCandidateErrors), {}, {
7831
- iceCandidatesCount: this.iceCandidatesCount
7928
+ iceCandidatesCount: this.iceCandidatesCount,
7929
+ ipver: ipver
7832
7930
  }));
7833
- _context35.next = 77;
7931
+ _context35.next = 83;
7834
7932
  return this.cleanUpOnAddMediaFailure();
7835
- case 77:
7933
+ case 83:
7836
7934
  // Upload logs on error while adding media
7837
7935
  _triggerProxy.default.trigger(this, {
7838
7936
  file: 'meeting/index',
@@ -7844,15 +7942,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7844
7942
  });
7845
7943
  }
7846
7944
  throw _context35.t1;
7847
- case 80:
7848
- _context35.prev = 80;
7945
+ case 86:
7946
+ _context35.prev = 86;
7849
7947
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7850
- return _context35.finish(80);
7851
- case 83:
7948
+ return _context35.finish(86);
7949
+ case 89:
7852
7950
  case "end":
7853
7951
  return _context35.stop();
7854
7952
  }
7855
- }, _callee35, this, [[19, 62, 80, 83], [24, 29]]);
7953
+ }, _callee35, this, [[25, 68, 86, 89], [30, 35]]);
7856
7954
  }));
7857
7955
  function addMediaInternal(_x33, _x34, _x35) {
7858
7956
  return _addMediaInternal.apply(this, arguments);
@@ -7884,7 +7982,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7884
7982
  * @memberof Meeting
7885
7983
  */
7886
7984
  function enqueueMediaUpdate(mediaUpdateType) {
7887
- var _this45 = this;
7985
+ var _this46 = this;
7888
7986
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7889
7987
  var canUpdateMediaNow = this.canUpdateMedia();
7890
7988
  return new _promise.default(function (resolve, reject) {
@@ -7895,9 +7993,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7895
7993
  options: options
7896
7994
  };
7897
7995
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7898
- _this45.queuedMediaUpdates.push(queueItem);
7996
+ _this46.queuedMediaUpdates.push(queueItem);
7899
7997
  if (canUpdateMediaNow) {
7900
- _this45.processNextQueuedMediaUpdate();
7998
+ _this46.processNextQueuedMediaUpdate();
7901
7999
  }
7902
8000
  });
7903
8001
  }
@@ -8002,7 +8100,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8002
8100
  }, {
8003
8101
  key: "acknowledge",
8004
8102
  value: function acknowledge(type) {
8005
- var _this46 = this;
8103
+ var _this47 = this;
8006
8104
  if (!type) {
8007
8105
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
8008
8106
  }
@@ -8014,12 +8112,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8014
8112
  }).then(function (response) {
8015
8113
  return _promise.default.resolve(response);
8016
8114
  }).then(function (response) {
8017
- _this46.meetingFiniteStateMachine.ring(type);
8115
+ _this47.meetingFiniteStateMachine.ring(type);
8018
8116
  // @ts-ignore
8019
- _this46.webex.internal.newMetrics.submitClientEvent({
8117
+ _this47.webex.internal.newMetrics.submitClientEvent({
8020
8118
  name: 'client.alert.displayed',
8021
8119
  options: {
8022
- meetingId: _this46.id
8120
+ meetingId: _this47.id
8023
8121
  }
8024
8122
  });
8025
8123
  return _promise.default.resolve({
@@ -8044,12 +8142,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8044
8142
  }, {
8045
8143
  key: "decline",
8046
8144
  value: function decline(reason) {
8047
- var _this47 = this;
8145
+ var _this48 = this;
8048
8146
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
8049
- _this47.meetingFiniteStateMachine.decline();
8147
+ _this48.meetingFiniteStateMachine.decline();
8050
8148
  return _promise.default.resolve(decline);
8051
8149
  }).catch(function (error) {
8052
- _this47.meetingFiniteStateMachine.fail(error);
8150
+ _this48.meetingFiniteStateMachine.fail(error);
8053
8151
  return _promise.default.reject(error);
8054
8152
  });
8055
8153
  }
@@ -8100,7 +8198,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8100
8198
  }, {
8101
8199
  key: "leave",
8102
8200
  value: function leave() {
8103
- var _this48 = this;
8201
+ var _this49 = this;
8104
8202
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8105
8203
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
8106
8204
 
@@ -8112,7 +8210,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8112
8210
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8113
8211
  return (
8114
8212
  // @ts-ignore
8115
- _this48.webex.internal.newMetrics.submitClientEvent({
8213
+ _this49.webex.internal.newMetrics.submitClientEvent({
8116
8214
  name: 'client.call.leave',
8117
8215
  payload: _objectSpread({
8118
8216
  trigger: 'user-interaction',
@@ -8120,7 +8218,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8120
8218
  leaveReason: options.clientEventLeaveReason
8121
8219
  }, payload),
8122
8220
  options: {
8123
- meetingId: _this48.id
8221
+ meetingId: _this49.id
8124
8222
  }
8125
8223
  })
8126
8224
  );
@@ -8129,24 +8227,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8129
8227
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
8130
8228
  // CA team recommends submitting this *after* locus /leave
8131
8229
  submitLeaveMetric();
8132
- _this48.meetingFiniteStateMachine.leave();
8133
- _this48.clearMeetingData();
8230
+ _this49.meetingFiniteStateMachine.leave();
8231
+ _this49.clearMeetingData();
8134
8232
 
8135
8233
  // upload logs on leave irrespective of meeting delete
8136
- _triggerProxy.default.trigger(_this48, {
8234
+ _triggerProxy.default.trigger(_this49, {
8137
8235
  file: 'meeting/index',
8138
8236
  function: 'leave'
8139
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this48);
8237
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8140
8238
 
8141
8239
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
8142
- if (_this48.wirelessShare || _this48.guest) {
8240
+ if (_this49.wirelessShare || _this49.guest) {
8143
8241
  // If screen sharing clean the meeting object
8144
- _triggerProxy.default.trigger(_this48, {
8242
+ _triggerProxy.default.trigger(_this49, {
8145
8243
  file: 'meeting/index',
8146
8244
  function: 'leave'
8147
8245
  }, _constants.EVENTS.DESTROY_MEETING, {
8148
8246
  reason: options.reason,
8149
- meetingId: _this48.id
8247
+ meetingId: _this49.id
8150
8248
  });
8151
8249
  }
8152
8250
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -8163,16 +8261,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8163
8261
  shownToUser: false
8164
8262
  }]
8165
8263
  });
8166
- _this48.meetingFiniteStateMachine.fail(error);
8264
+ _this49.meetingFiniteStateMachine.fail(error);
8167
8265
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
8168
8266
  // upload logs on leave irrespective of meeting delete
8169
- _triggerProxy.default.trigger(_this48, {
8267
+ _triggerProxy.default.trigger(_this49, {
8170
8268
  file: 'meeting/index',
8171
8269
  function: 'leave'
8172
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this48);
8270
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8173
8271
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
8174
- correlation_id: _this48.correlationId,
8175
- locus_id: _this48.locusUrl.split('/').pop(),
8272
+ correlation_id: _this49.correlationId,
8273
+ locus_id: _this49.locusUrl.split('/').pop(),
8176
8274
  reason: error.message,
8177
8275
  stack: error.stack,
8178
8276
  code: error.code
@@ -8192,7 +8290,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8192
8290
  }, {
8193
8291
  key: "startWhiteboardShare",
8194
8292
  value: function startWhiteboardShare(channelUrl, resourceToken) {
8195
- var _this49 = this;
8293
+ var _this50 = this;
8196
8294
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
8197
8295
  return element.name === 'whiteboard';
8198
8296
  });
@@ -8200,6 +8298,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8200
8298
  return _promise.default.reject(new _parameter.default('Cannot share without channelUrl.'));
8201
8299
  }
8202
8300
  if (whiteboard) {
8301
+ // @ts-ignore
8302
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
8303
+ key: 'internal.client.share.initiated'
8304
+ });
8203
8305
  // @ts-ignore
8204
8306
  this.webex.internal.newMetrics.submitClientEvent({
8205
8307
  name: 'client.share.initiated',
@@ -8221,13 +8323,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8221
8323
  body.resourceToken = resourceToken;
8222
8324
  }
8223
8325
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
8224
- _this49.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8326
+ _this50.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8225
8327
  return _promise.default.resolve();
8226
8328
  }).catch(function (error) {
8227
8329
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
8228
8330
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
8229
- correlation_id: _this49.correlationId,
8230
- locus_id: _this49.locusUrl.split('/').pop(),
8331
+ correlation_id: _this50.correlationId,
8332
+ locus_id: _this50.locusUrl.split('/').pop(),
8231
8333
  reason: error.message,
8232
8334
  stack: error.stack,
8233
8335
  board: {
@@ -8250,16 +8352,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8250
8352
  }, {
8251
8353
  key: "stopWhiteboardShare",
8252
8354
  value: function stopWhiteboardShare(channelUrl) {
8253
- var _this50 = this;
8355
+ var _this51 = this;
8254
8356
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
8255
8357
  return element.name === 'whiteboard';
8256
8358
  });
8257
8359
  if (whiteboard) {
8360
+ // @ts-ignore
8361
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
8362
+ key: 'internal.client.share.stopped'
8363
+ });
8258
8364
  // @ts-ignore
8259
8365
  this.webex.internal.newMetrics.submitClientEvent({
8260
8366
  name: 'client.share.stopped',
8261
8367
  payload: {
8262
- mediaType: 'whiteboard'
8368
+ mediaType: 'whiteboard',
8369
+ // @ts-ignore
8370
+ shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration()
8263
8371
  },
8264
8372
  options: {
8265
8373
  meetingId: this.id
@@ -8273,8 +8381,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8273
8381
  }).catch(function (error) {
8274
8382
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
8275
8383
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
8276
- correlation_id: _this50.correlationId,
8277
- locus_id: _this50.locusUrl.split('/').pop(),
8384
+ correlation_id: _this51.correlationId,
8385
+ locus_id: _this51.locusUrl.split('/').pop(),
8278
8386
  reason: error.message,
8279
8387
  stack: error.stack,
8280
8388
  board: {
@@ -8296,7 +8404,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8296
8404
  }, {
8297
8405
  key: "requestScreenShareFloor",
8298
8406
  value: function requestScreenShareFloor() {
8299
- var _this51 = this;
8407
+ var _this52 = this;
8300
8408
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
8301
8409
  _loggerProxy.default.logger.log("Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=".concat(this.mediaProperties.shareVideoStream ? 'yes' : 'no', ", sendShare=").concat(this.mediaProperties.mediaDirection.sendShare, ")"));
8302
8410
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -8327,34 +8435,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8327
8435
  resourceUrl: this.resourceUrl,
8328
8436
  shareInstanceId: this.localShareInstanceId
8329
8437
  }).then(function () {
8330
- _this51.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
8438
+ _this52.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
8331
8439
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
8332
- correlation_id: _this51.correlationId,
8333
- locus_id: _this51.locusUrl.split('/').pop()
8440
+ correlation_id: _this52.correlationId,
8441
+ locus_id: _this52.locusUrl.split('/').pop()
8334
8442
  });
8335
8443
  return _promise.default.resolve();
8336
8444
  }).catch(function (error) {
8337
8445
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
8338
8446
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
8339
- correlation_id: _this51.correlationId,
8340
- locus_id: _this51.locusUrl.split('/').pop(),
8447
+ correlation_id: _this52.correlationId,
8448
+ locus_id: _this52.locusUrl.split('/').pop(),
8341
8449
  reason: error.message,
8342
8450
  stack: error.stack
8343
8451
  });
8344
8452
 
8345
8453
  // @ts-ignore
8346
- _this51.webex.internal.newMetrics.submitClientEvent({
8454
+ _this52.webex.internal.newMetrics.submitClientEvent({
8347
8455
  name: 'client.share.floor-granted.local',
8348
8456
  payload: {
8349
8457
  mediaType: 'share',
8350
8458
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
8351
- shareInstanceId: _this51.localShareInstanceId
8459
+ shareInstanceId: _this52.localShareInstanceId
8352
8460
  },
8353
8461
  options: {
8354
- meetingId: _this51.id
8462
+ meetingId: _this52.id
8355
8463
  }
8356
8464
  });
8357
- _this51.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8465
+ _this52.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8358
8466
  return _promise.default.reject(error);
8359
8467
  });
8360
8468
  }
@@ -8377,10 +8485,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8377
8485
  }, {
8378
8486
  key: "requestScreenShareFloorIfPending",
8379
8487
  value: function requestScreenShareFloorIfPending() {
8380
- var _this52 = this;
8488
+ var _this53 = this;
8381
8489
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
8382
8490
  this.requestScreenShareFloor().then(function () {
8383
- _this52.floorGrantPending = false;
8491
+ _this53.floorGrantPending = false;
8384
8492
  });
8385
8493
  }
8386
8494
  }
@@ -8394,7 +8502,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8394
8502
  }, {
8395
8503
  key: "releaseScreenShareFloor",
8396
8504
  value: function releaseScreenShareFloor() {
8397
- var _this53 = this;
8505
+ var _this54 = this;
8398
8506
  var content = this.locusInfo.mediaShares.find(function (element) {
8399
8507
  return element.name === _constants.CONTENT;
8400
8508
  });
@@ -8405,11 +8513,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8405
8513
  if (content) {
8406
8514
  var _content$floor;
8407
8515
  // @ts-ignore
8516
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
8517
+ key: 'internal.client.share.stopped'
8518
+ });
8519
+ // @ts-ignore
8408
8520
  this.webex.internal.newMetrics.submitClientEvent({
8409
8521
  name: 'client.share.stopped',
8410
8522
  payload: {
8411
8523
  mediaType: 'share',
8412
- shareInstanceId: this.localShareInstanceId
8524
+ shareInstanceId: this.localShareInstanceId,
8525
+ // @ts-ignore
8526
+ shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration()
8413
8527
  },
8414
8528
  options: {
8415
8529
  meetingId: this.id
@@ -8429,8 +8543,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8429
8543
  }).catch(function (error) {
8430
8544
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
8431
8545
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
8432
- correlation_id: _this53.correlationId,
8433
- locus_id: _this53.locusUrl.split('/').pop(),
8546
+ correlation_id: _this54.correlationId,
8547
+ locus_id: _this54.locusUrl.split('/').pop(),
8434
8548
  reason: error.message,
8435
8549
  stack: error.stack
8436
8550
  });
@@ -8610,7 +8724,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8610
8724
  }, {
8611
8725
  key: "changeVideoLayout",
8612
8726
  value: function changeVideoLayout(layoutType) {
8613
- var _this54 = this;
8727
+ var _this55 = this;
8614
8728
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8615
8729
  var main = renderInfo.main,
8616
8730
  content = renderInfo.content;
@@ -8664,7 +8778,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8664
8778
  }
8665
8779
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
8666
8780
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
8667
- _triggerProxy.default.trigger(_this54, {
8781
+ _triggerProxy.default.trigger(_this55, {
8668
8782
  file: 'meeting/index',
8669
8783
  function: 'changeVideoLayout'
8670
8784
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8780,7 +8894,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8780
8894
  }, {
8781
8895
  key: "endMeetingForAll",
8782
8896
  value: function endMeetingForAll() {
8783
- var _this55 = this;
8897
+ var _this56 = this;
8784
8898
  // @ts-ignore
8785
8899
  this.webex.internal.newMetrics.submitClientEvent({
8786
8900
  name: 'client.call.leave',
@@ -8798,25 +8912,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8798
8912
  locus_id: this.locusId
8799
8913
  });
8800
8914
  return _util2.default.endMeetingForAll(this).then(function (end) {
8801
- _this55.meetingFiniteStateMachine.end();
8802
- _this55.clearMeetingData();
8915
+ _this56.meetingFiniteStateMachine.end();
8916
+ _this56.clearMeetingData();
8803
8917
  // upload logs on leave irrespective of meeting delete
8804
- _triggerProxy.default.trigger(_this55, {
8918
+ _triggerProxy.default.trigger(_this56, {
8805
8919
  file: 'meeting/index',
8806
8920
  function: 'endMeetingForAll'
8807
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this55);
8921
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
8808
8922
  return end;
8809
8923
  }).catch(function (error) {
8810
- _this55.meetingFiniteStateMachine.fail(error);
8924
+ _this56.meetingFiniteStateMachine.fail(error);
8811
8925
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8812
8926
  // upload logs on leave irrespective of meeting delete
8813
- _triggerProxy.default.trigger(_this55, {
8927
+ _triggerProxy.default.trigger(_this56, {
8814
8928
  file: 'meeting/index',
8815
8929
  function: 'endMeetingForAll'
8816
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this55);
8930
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
8817
8931
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8818
- correlation_id: _this55.correlationId,
8819
- locus_id: _this55.locusUrl.split('/').pop(),
8932
+ correlation_id: _this56.correlationId,
8933
+ locus_id: _this56.locusUrl.split('/').pop(),
8820
8934
  reason: error.message,
8821
8935
  stack: error.stack,
8822
8936
  code: error.code
@@ -8977,7 +9091,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8977
9091
  _this$mediaProperties43,
8978
9092
  _this$mediaProperties44,
8979
9093
  _this$mediaProperties45,
8980
- _this56 = this;
9094
+ _this57 = this;
8981
9095
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8982
9096
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8983
9097
  if (!this.canUpdateMedia()) {
@@ -9002,8 +9116,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9002
9116
  }).catch(function (error) {
9003
9117
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
9004
9118
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
9005
- correlation_id: _this56.correlationId,
9006
- locus_id: _this56.locusUrl.split('/').pop(),
9119
+ correlation_id: _this57.correlationId,
9120
+ locus_id: _this57.locusUrl.split('/').pop(),
9007
9121
  reason: error.message,
9008
9122
  stack: error.stack
9009
9123
  });
@@ -9225,13 +9339,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9225
9339
  return this.updateTranscodedMediaConnection();
9226
9340
  case 31:
9227
9341
  if (!floorRequestNeeded) {
9228
- _context40.next = 39;
9342
+ _context40.next = 40;
9229
9343
  break;
9230
9344
  }
9231
9345
  this.localShareInstanceId = _uuid.default.v4();
9232
9346
  this.shareCAEventSentStatus.transmitStart = false;
9233
9347
  this.shareCAEventSentStatus.transmitStop = false;
9234
9348
 
9349
+ // @ts-ignore
9350
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
9351
+ key: 'internal.client.share.initiated'
9352
+ });
9353
+
9235
9354
  // @ts-ignore
9236
9355
  this.webex.internal.newMetrics.submitClientEvent({
9237
9356
  name: 'client.share.initiated',
@@ -9251,9 +9370,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9251
9370
  // we're sending the http request to Locus to request the screen share floor
9252
9371
  // only after the SDP update, because that's how it's always been done for transcoded meetings
9253
9372
  // and also if sharing from the start, we need confluence to have been created
9254
- _context40.next = 39;
9373
+ _context40.next = 40;
9255
9374
  return this.enqueueScreenShareFloorRequest();
9256
- case 39:
9375
+ case 40:
9257
9376
  case "end":
9258
9377
  return _context40.stop();
9259
9378
  }
@@ -9401,7 +9520,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9401
9520
  key: "getMediaReachabilityMetricFields",
9402
9521
  value: (function () {
9403
9522
  var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee42() {
9404
- var reachabilityMetrics, successKeys, totalSuccessCases, isSubnetReachable, selectedCluster;
9523
+ var _this$mediaServerIp, _this$mediaConnection, _this$mediaConnection2, _this$mediaConnection3;
9524
+ var reachabilityMetrics, successKeys, totalSuccessCases, selectedSubnetFirstOctet, isSubnetReachable, selectedCluster;
9405
9525
  return _regenerator.default.wrap(function _callee42$(_context42) {
9406
9526
  while (1) switch (_context42.prev = _context42.next) {
9407
9527
  case 0:
@@ -9417,18 +9537,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9417
9537
  }
9418
9538
  return total;
9419
9539
  }, 0);
9540
+ selectedSubnetFirstOctet = (_this$mediaServerIp = this.mediaServerIp) === null || _this$mediaServerIp === void 0 ? void 0 : _this$mediaServerIp.split('.')[0];
9420
9541
  isSubnetReachable = null;
9421
- if (totalSuccessCases > 0) {
9542
+ if (totalSuccessCases > 0 && selectedSubnetFirstOctet) {
9543
+ isSubnetReachable =
9422
9544
  // @ts-ignore
9423
- isSubnetReachable = this.webex.meetings.reachability.isSubnetReachable(this.mediaServerIp);
9424
- }
9425
- selectedCluster = null;
9426
- if (this.mediaConnections && this.mediaConnections.length > 0) {
9427
- selectedCluster = this.mediaConnections[0].mediaAgentCluster;
9545
+ this.webex.meetings.reachability.isSubnetReachable(selectedSubnetFirstOctet);
9428
9546
  }
9547
+ selectedCluster = (_this$mediaConnection = (_this$mediaConnection2 = this.mediaConnections) === null || _this$mediaConnection2 === void 0 ? void 0 : (_this$mediaConnection3 = _this$mediaConnection2[0]) === null || _this$mediaConnection3 === void 0 ? void 0 : _this$mediaConnection3.mediaAgentCluster) !== null && _this$mediaConnection !== void 0 ? _this$mediaConnection : null;
9429
9548
  return _context42.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
9430
- isSubnetReachable: isSubnetReachable,
9431
- selectedCluster: selectedCluster
9549
+ subnet_reachable: isSubnetReachable,
9550
+ selected_cluster: selectedCluster,
9551
+ selected_subnet: selectedSubnetFirstOctet ? "".concat(selectedSubnetFirstOctet, ".X.X.X") : null
9432
9552
  }));
9433
9553
  case 10:
9434
9554
  case "end":
@@ -9440,7 +9560,84 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9440
9560
  return _getMediaReachabilityMetricFields.apply(this, arguments);
9441
9561
  }
9442
9562
  return getMediaReachabilityMetricFields;
9443
- }())
9563
+ }()
9564
+ /**
9565
+ * Set the stage for the meeting
9566
+ *
9567
+ * @param {SetStageOptions} options Options to use when setting the stage
9568
+ * @returns {Promise} The locus request
9569
+ */
9570
+ )
9571
+ }, {
9572
+ key: "setStage",
9573
+ value: function setStage() {
9574
+ var _ref37 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9575
+ _ref37$activeSpeakerP = _ref37.activeSpeakerProportion,
9576
+ activeSpeakerProportion = _ref37$activeSpeakerP === void 0 ? 0.5 : _ref37$activeSpeakerP,
9577
+ customBackground = _ref37.customBackground,
9578
+ customLogo = _ref37.customLogo,
9579
+ customNameLabel = _ref37.customNameLabel,
9580
+ importantParticipants = _ref37.importantParticipants,
9581
+ _ref37$lockAttendeeVi = _ref37.lockAttendeeViewOnStage,
9582
+ lockAttendeeViewOnStage = _ref37$lockAttendeeVi === void 0 ? false : _ref37$lockAttendeeVi,
9583
+ _ref37$showActiveSpea = _ref37.showActiveSpeaker,
9584
+ showActiveSpeaker = _ref37$showActiveSpea === void 0 ? false : _ref37$showActiveSpea;
9585
+ var videoLayout = {
9586
+ overrideDefault: true,
9587
+ lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,
9588
+ stageParameters: {
9589
+ activeSpeakerProportion: activeSpeakerProportion,
9590
+ showActiveSpeaker: {
9591
+ show: showActiveSpeaker,
9592
+ order: 0
9593
+ },
9594
+ stageManagerType: 0
9595
+ }
9596
+ };
9597
+ if (importantParticipants !== null && importantParticipants !== void 0 && importantParticipants.length) {
9598
+ videoLayout.stageParameters.importantParticipants = importantParticipants.map(function (importantParticipant, index) {
9599
+ return _objectSpread(_objectSpread({}, importantParticipant), {}, {
9600
+ order: index + 1
9601
+ });
9602
+ });
9603
+ }
9604
+ if (customLogo) {
9605
+ if (!videoLayout.customLayouts) {
9606
+ videoLayout.customLayouts = {};
9607
+ }
9608
+ videoLayout.customLayouts.logo = customLogo;
9609
+ // eslint-disable-next-line no-bitwise
9610
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.LOGO;
9611
+ }
9612
+ if (customBackground) {
9613
+ if (!videoLayout.customLayouts) {
9614
+ videoLayout.customLayouts = {};
9615
+ }
9616
+ videoLayout.customLayouts.background = customBackground;
9617
+ // eslint-disable-next-line no-bitwise
9618
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.BACKGROUND;
9619
+ }
9620
+ if (customNameLabel) {
9621
+ videoLayout.nameLabelStyle = customNameLabel;
9622
+ // eslint-disable-next-line no-bitwise
9623
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.NAME_LABEL;
9624
+ }
9625
+ return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
9626
+ }
9627
+
9628
+ /**
9629
+ * Unset the stage for the meeting
9630
+ *
9631
+ * @returns {Promise} The locus request
9632
+ */
9633
+ }, {
9634
+ key: "unsetStage",
9635
+ value: function unsetStage() {
9636
+ var videoLayout = {
9637
+ overrideDefault: false
9638
+ };
9639
+ return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
9640
+ }
9444
9641
  }]);
9445
9642
  return Meeting;
9446
9643
  }(_webexCore.StatelessWebexPlugin);