@webex/plugin-meetings 3.8.1 → 3.9.0-multiple-llm.1

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 (319) 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 +34 -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 +107 -95
  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/media/properties.js +53 -5
  22. package/dist/media/properties.js.map +1 -1
  23. package/dist/meeting/brbState.js +17 -14
  24. package/dist/meeting/brbState.js.map +1 -1
  25. package/dist/meeting/in-meeting-actions.js +13 -1
  26. package/dist/meeting/in-meeting-actions.js.map +1 -1
  27. package/dist/meeting/index.js +555 -296
  28. package/dist/meeting/index.js.map +1 -1
  29. package/dist/meeting/muteState.js +2 -5
  30. package/dist/meeting/muteState.js.map +1 -1
  31. package/dist/meeting/request.js +44 -0
  32. package/dist/meeting/request.js.map +1 -1
  33. package/dist/meeting/request.type.js.map +1 -1
  34. package/dist/{rtcMetrics/constants.js → meeting/type.js} +1 -5
  35. package/dist/meeting/type.js.map +1 -0
  36. package/dist/meeting/util.js +98 -13
  37. package/dist/meeting/util.js.map +1 -1
  38. package/dist/meeting-info/meeting-info-v2.js +29 -21
  39. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  40. package/dist/meetings/index.js +18 -10
  41. package/dist/meetings/index.js.map +1 -1
  42. package/dist/member/types.js.map +1 -1
  43. package/dist/members/collection.js +13 -0
  44. package/dist/members/collection.js.map +1 -1
  45. package/dist/members/index.js +53 -29
  46. package/dist/members/index.js.map +1 -1
  47. package/dist/members/request.js +3 -3
  48. package/dist/members/request.js.map +1 -1
  49. package/dist/members/util.js +25 -8
  50. package/dist/members/util.js.map +1 -1
  51. package/dist/metrics/constants.js +3 -1
  52. package/dist/metrics/constants.js.map +1 -1
  53. package/dist/multistream/mediaRequestManager.js +1 -1
  54. package/dist/multistream/mediaRequestManager.js.map +1 -1
  55. package/dist/multistream/remoteMedia.js +34 -5
  56. package/dist/multistream/remoteMedia.js.map +1 -1
  57. package/dist/multistream/remoteMediaGroup.js +42 -2
  58. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  59. package/dist/multistream/sendSlotManager.js +32 -2
  60. package/dist/multistream/sendSlotManager.js.map +1 -1
  61. package/dist/reachability/index.js +8 -13
  62. package/dist/reachability/index.js.map +1 -1
  63. package/dist/types/constants.d.ts +30 -0
  64. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  65. package/dist/types/controls-options-manager/types.d.ts +4 -1
  66. package/dist/types/locus-info/index.d.ts +54 -10
  67. package/dist/types/media/properties.d.ts +21 -0
  68. package/dist/types/meeting/brbState.d.ts +0 -1
  69. package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
  70. package/dist/types/meeting/index.d.ts +58 -20
  71. package/dist/types/meeting/request.d.ts +18 -1
  72. package/dist/types/meeting/request.type.d.ts +74 -0
  73. package/dist/types/meeting/type.d.ts +9 -0
  74. package/dist/types/meeting/util.d.ts +13 -3
  75. package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
  76. package/dist/types/meetings/index.d.ts +3 -1
  77. package/dist/types/member/types.d.ts +1 -0
  78. package/dist/types/members/collection.d.ts +6 -0
  79. package/dist/types/members/index.d.ts +22 -9
  80. package/dist/types/members/request.d.ts +1 -1
  81. package/dist/types/members/util.d.ts +13 -6
  82. package/dist/types/metrics/constants.d.ts +2 -0
  83. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  84. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  85. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  86. package/dist/types/reachability/index.d.ts +2 -2
  87. package/dist/webinar/index.js +1 -1
  88. package/package.json +25 -26
  89. package/src/constants.ts +34 -2
  90. package/src/controls-options-manager/enums.ts +1 -0
  91. package/src/controls-options-manager/types.ts +6 -1
  92. package/src/controls-options-manager/util.ts +31 -0
  93. package/src/locus-info/controlsUtils.ts +15 -0
  94. package/src/locus-info/index.ts +174 -96
  95. package/src/locus-info/parser.ts +5 -1
  96. package/src/media/index.ts +2 -2
  97. package/src/media/properties.ts +43 -0
  98. package/src/meeting/brbState.ts +13 -9
  99. package/src/meeting/in-meeting-actions.ts +25 -0
  100. package/src/meeting/index.ts +362 -75
  101. package/src/meeting/muteState.ts +2 -6
  102. package/src/meeting/request.ts +39 -0
  103. package/src/meeting/request.type.ts +64 -0
  104. package/src/meeting/type.ts +9 -0
  105. package/src/meeting/util.ts +114 -22
  106. package/src/meeting-info/meeting-info-v2.ts +24 -5
  107. package/src/meetings/index.ts +12 -5
  108. package/src/member/types.ts +1 -0
  109. package/src/members/collection.ts +11 -0
  110. package/src/members/index.ts +51 -15
  111. package/src/members/request.ts +2 -2
  112. package/src/members/util.ts +34 -6
  113. package/src/metrics/constants.ts +2 -0
  114. package/src/multistream/mediaRequestManager.ts +7 -7
  115. package/src/multistream/remoteMedia.ts +34 -4
  116. package/src/multistream/remoteMediaGroup.ts +37 -2
  117. package/src/multistream/sendSlotManager.ts +34 -2
  118. package/src/reachability/index.ts +8 -16
  119. package/test/unit/spec/common/browser-detection.js +0 -24
  120. package/test/unit/spec/controls-options-manager/util.js +58 -0
  121. package/test/unit/spec/locus-info/controlsUtils.js +52 -0
  122. package/test/unit/spec/locus-info/index.js +270 -97
  123. package/test/unit/spec/locus-info/parser.js +3 -2
  124. package/test/unit/spec/media/index.ts +107 -0
  125. package/test/unit/spec/media/properties.ts +137 -0
  126. package/test/unit/spec/meeting/brbState.ts +23 -4
  127. package/test/unit/spec/meeting/in-meeting-actions.ts +12 -0
  128. package/test/unit/spec/meeting/index.js +1194 -97
  129. package/test/unit/spec/meeting/muteState.js +32 -6
  130. package/test/unit/spec/meeting/request.js +92 -0
  131. package/test/unit/spec/meeting/utils.js +167 -17
  132. package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
  133. package/test/unit/spec/meetings/index.js +12 -5
  134. package/test/unit/spec/members/collection.js +120 -0
  135. package/test/unit/spec/members/index.js +140 -12
  136. package/test/unit/spec/members/request.js +57 -2
  137. package/test/unit/spec/members/utils.js +139 -17
  138. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  139. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  140. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  141. package/test/unit/spec/reachability/index.ts +160 -9
  142. package/test/unit/spec/roap/turnDiscovery.ts +3 -3
  143. package/dist/annotation/annotation.types.d.ts +0 -42
  144. package/dist/annotation/constants.d.ts +0 -31
  145. package/dist/annotation/index.d.ts +0 -117
  146. package/dist/breakouts/breakout.d.ts +0 -8
  147. package/dist/breakouts/collection.d.ts +0 -5
  148. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  149. package/dist/breakouts/events.d.ts +0 -8
  150. package/dist/breakouts/index.d.ts +0 -5
  151. package/dist/breakouts/request.d.ts +0 -22
  152. package/dist/breakouts/utils.d.ts +0 -15
  153. package/dist/common/browser-detection.d.ts +0 -9
  154. package/dist/common/collection.d.ts +0 -48
  155. package/dist/common/config.d.ts +0 -2
  156. package/dist/common/errors/captcha-error.d.ts +0 -15
  157. package/dist/common/errors/intent-to-join.d.ts +0 -16
  158. package/dist/common/errors/join-meeting.d.ts +0 -17
  159. package/dist/common/errors/media.d.ts +0 -15
  160. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  161. package/dist/common/errors/parameter.d.ts +0 -15
  162. package/dist/common/errors/password-error.d.ts +0 -15
  163. package/dist/common/errors/permission.d.ts +0 -14
  164. package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
  165. package/dist/common/errors/reclaim-host-role-error.js +0 -158
  166. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  167. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  168. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  169. package/dist/common/errors/reconnection-in-progress.js +0 -35
  170. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  171. package/dist/common/errors/reconnection.d.ts +0 -15
  172. package/dist/common/errors/stats.d.ts +0 -15
  173. package/dist/common/errors/webex-errors.d.ts +0 -81
  174. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  175. package/dist/common/events/events-scope.d.ts +0 -17
  176. package/dist/common/events/events.d.ts +0 -12
  177. package/dist/common/events/trigger-proxy.d.ts +0 -2
  178. package/dist/common/events/util.d.ts +0 -2
  179. package/dist/common/logs/logger-config.d.ts +0 -2
  180. package/dist/common/logs/logger-proxy.d.ts +0 -2
  181. package/dist/common/logs/request.d.ts +0 -34
  182. package/dist/common/queue.d.ts +0 -32
  183. package/dist/config.d.ts +0 -73
  184. package/dist/constants.d.ts +0 -952
  185. package/dist/controls-options-manager/constants.d.ts +0 -4
  186. package/dist/controls-options-manager/enums.d.ts +0 -5
  187. package/dist/controls-options-manager/index.d.ts +0 -120
  188. package/dist/controls-options-manager/types.d.ts +0 -43
  189. package/dist/controls-options-manager/util.d.ts +0 -7
  190. package/dist/index.d.ts +0 -4
  191. package/dist/interceptors/index.d.ts +0 -2
  192. package/dist/interceptors/locusRetry.d.ts +0 -27
  193. package/dist/interpretation/collection.d.ts +0 -5
  194. package/dist/interpretation/index.d.ts +0 -5
  195. package/dist/interpretation/siLanguage.d.ts +0 -5
  196. package/dist/locus-info/controlsUtils.d.ts +0 -2
  197. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  198. package/dist/locus-info/fullState.d.ts +0 -2
  199. package/dist/locus-info/hostUtils.d.ts +0 -2
  200. package/dist/locus-info/index.d.ts +0 -269
  201. package/dist/locus-info/infoUtils.d.ts +0 -2
  202. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  203. package/dist/locus-info/parser.d.ts +0 -212
  204. package/dist/locus-info/selfUtils.d.ts +0 -2
  205. package/dist/media/index.d.ts +0 -32
  206. package/dist/media/properties.d.ts +0 -108
  207. package/dist/media/util.d.ts +0 -2
  208. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  209. package/dist/mediaQualityMetrics/config.js +0 -513
  210. package/dist/mediaQualityMetrics/config.js.map +0 -1
  211. package/dist/meeting/effectsState.d.ts +0 -42
  212. package/dist/meeting/effectsState.js +0 -260
  213. package/dist/meeting/effectsState.js.map +0 -1
  214. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  215. package/dist/meeting/index.d.ts +0 -1622
  216. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  217. package/dist/meeting/muteState.d.ts +0 -116
  218. package/dist/meeting/request.d.ts +0 -257
  219. package/dist/meeting/request.type.d.ts +0 -11
  220. package/dist/meeting/state.d.ts +0 -9
  221. package/dist/meeting/util.d.ts +0 -2
  222. package/dist/meeting/voicea-meeting.d.ts +0 -16
  223. package/dist/meeting-info/collection.d.ts +0 -20
  224. package/dist/meeting-info/index.d.ts +0 -57
  225. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  226. package/dist/meeting-info/request.d.ts +0 -22
  227. package/dist/meeting-info/util.d.ts +0 -2
  228. package/dist/meeting-info/utilv2.d.ts +0 -2
  229. package/dist/meetings/collection.d.ts +0 -23
  230. package/dist/meetings/index.d.ts +0 -296
  231. package/dist/meetings/meetings.types.d.ts +0 -4
  232. package/dist/meetings/request.d.ts +0 -27
  233. package/dist/meetings/util.d.ts +0 -18
  234. package/dist/member/index.d.ts +0 -148
  235. package/dist/member/member.types.d.ts +0 -11
  236. package/dist/member/member.types.js +0 -18
  237. package/dist/member/member.types.js.map +0 -1
  238. package/dist/member/types.d.ts +0 -32
  239. package/dist/member/util.d.ts +0 -2
  240. package/dist/members/collection.d.ts +0 -24
  241. package/dist/members/index.d.ts +0 -308
  242. package/dist/members/request.d.ts +0 -58
  243. package/dist/members/types.d.ts +0 -25
  244. package/dist/members/util.d.ts +0 -2
  245. package/dist/metrics/config.d.ts +0 -169
  246. package/dist/metrics/config.js +0 -289
  247. package/dist/metrics/config.js.map +0 -1
  248. package/dist/metrics/constants.d.ts +0 -59
  249. package/dist/metrics/index.d.ts +0 -152
  250. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  251. package/dist/multistream/receiveSlot.d.ts +0 -68
  252. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  253. package/dist/multistream/remoteMedia.d.ts +0 -72
  254. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  255. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  256. package/dist/multistream/sendSlotManager.d.ts +0 -69
  257. package/dist/networkQualityMonitor/index.d.ts +0 -70
  258. package/dist/networkQualityMonitor/index.js +0 -226
  259. package/dist/networkQualityMonitor/index.js.map +0 -1
  260. package/dist/peer-connection-manager/index.d.ts +0 -6
  261. package/dist/peer-connection-manager/index.js +0 -671
  262. package/dist/peer-connection-manager/index.js.map +0 -1
  263. package/dist/peer-connection-manager/util.d.ts +0 -6
  264. package/dist/peer-connection-manager/util.js +0 -110
  265. package/dist/peer-connection-manager/util.js.map +0 -1
  266. package/dist/personal-meeting-room/index.d.ts +0 -47
  267. package/dist/personal-meeting-room/request.d.ts +0 -14
  268. package/dist/personal-meeting-room/util.d.ts +0 -2
  269. package/dist/reachability/clusterReachability.d.ts +0 -109
  270. package/dist/reachability/index.d.ts +0 -139
  271. package/dist/reachability/request.d.ts +0 -35
  272. package/dist/reachability/util.d.ts +0 -8
  273. package/dist/reactions/constants.d.ts +0 -3
  274. package/dist/reactions/reactions.d.ts +0 -4
  275. package/dist/reactions/reactions.type.d.ts +0 -32
  276. package/dist/reconnection-manager/index.d.ts +0 -112
  277. package/dist/recording-controller/enums.d.ts +0 -7
  278. package/dist/recording-controller/index.d.ts +0 -193
  279. package/dist/recording-controller/util.d.ts +0 -13
  280. package/dist/roap/collection.d.ts +0 -10
  281. package/dist/roap/collection.js +0 -63
  282. package/dist/roap/collection.js.map +0 -1
  283. package/dist/roap/handler.d.ts +0 -47
  284. package/dist/roap/handler.js +0 -279
  285. package/dist/roap/handler.js.map +0 -1
  286. package/dist/roap/index.d.ts +0 -116
  287. package/dist/roap/request.d.ts +0 -35
  288. package/dist/roap/state.d.ts +0 -9
  289. package/dist/roap/state.js +0 -127
  290. package/dist/roap/state.js.map +0 -1
  291. package/dist/roap/turnDiscovery.d.ts +0 -81
  292. package/dist/roap/util.d.ts +0 -2
  293. package/dist/roap/util.js +0 -76
  294. package/dist/roap/util.js.map +0 -1
  295. package/dist/rtcMetrics/constants.d.ts +0 -4
  296. package/dist/rtcMetrics/constants.js.map +0 -1
  297. package/dist/rtcMetrics/index.d.ts +0 -61
  298. package/dist/rtcMetrics/index.js +0 -197
  299. package/dist/rtcMetrics/index.js.map +0 -1
  300. package/dist/statsAnalyzer/global.d.ts +0 -118
  301. package/dist/statsAnalyzer/global.js +0 -127
  302. package/dist/statsAnalyzer/global.js.map +0 -1
  303. package/dist/statsAnalyzer/index.d.ts +0 -193
  304. package/dist/statsAnalyzer/index.js +0 -1019
  305. package/dist/statsAnalyzer/index.js.map +0 -1
  306. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  307. package/dist/statsAnalyzer/mqaUtil.js +0 -181
  308. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  309. package/dist/transcription/index.d.ts +0 -64
  310. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  311. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  312. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  313. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  314. package/dist/types/rtcMetrics/index.d.ts +0 -71
  315. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  316. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  317. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  318. package/dist/webinar/collection.d.ts +0 -16
  319. package/dist/webinar/index.d.ts +0 -5
@@ -269,13 +269,10 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
269
269
  var audioMuted = this.type === _constants.AUDIO ? this.getClientLocalMuteState() : undefined;
270
270
  var videoMuted = this.type === _constants.VIDEO ? this.getClientLocalMuteState() : undefined;
271
271
  _loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(this.type, ": sending local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server"));
272
- return _util.default.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted).then(function (locus) {
272
+ return _util.default.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted).then(function (response) {
273
273
  _loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this2.type, ": local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") applied to server"));
274
274
  _this2.state.server.localMute = _this2.type === _constants.AUDIO ? audioMuted : videoMuted;
275
- if (locus) {
276
- meeting.locusInfo.handleLocusDelta(locus, meeting);
277
- }
278
- return locus;
275
+ return _util.default.updateLocusFromApiResponse(meeting, response);
279
276
  }).catch(function (remoteUpdateError) {
280
277
  _loggerProxy.default.logger.warn("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this2.type, ": failed to apply local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server: ").concat(remoteUpdateError));
281
278
  return _promise.default.reject(remoteUpdateError);
@@ -1 +1 @@
1
- {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_parameter","_util","_constants","createMuteState","exports","type","meeting","enabled","LoggerProxy","logger","info","concat","id","muteState","MuteState","_meeting$remoteVideoM","_meeting$unmuteVideoA","_classCallCheck2","default","_defineProperty2","AUDIO","VIDEO","ParameterError","ignoreMuteStateChange","state","client","localMute","server","remoteMute","remoteMuted","remoteVideoMuted","unmuteAllowed","unmuteVideoAllowed","syncToServerInProgress","_createClass2","key","value","init","_meeting$mediaPropert","_meeting$mediaPropert2","applyUnmuteAllowedToStream","muteLocalStream","initialMute","mediaProperties","audioStream","muted","videoStream","undefined","applyClientStateToServer","handleLocalStreamChange","enable","mute","reason","_meeting$mediaPropert3","setServerMuted","_meeting$mediaPropert4","handleLocalStreamMuteStateChange","newMuteState","userMuteState","systemMuteState","_meeting$mediaPropert5","_meeting$mediaPropert6","_meeting$mediaPropert7","userMuted","systemMuted","_meeting$mediaPropert8","_meeting$mediaPropert9","_meeting$mediaPropert10","applyClientStateLocally","getClientLocalMuteState","_this","localMuteState","localMuteRequiresSync","remoteMuteRequiresSync","localMuteSyncPromise","sendLocalMuteRequestToServer","_promise","resolve","then","sendRemoteMuteRequestToServer","catch","e","warn","_this2","audioMuted","videoMuted","MeetingUtil","remoteUpdateAudioVideo","locus","locusInfo","handleLocusDelta","remoteUpdateError","reject","_this3","members","muteMember","selfId","_meeting$mediaPropert11","setUnmuteAllowed","_meeting$mediaPropert12","handleServerRemoteMuteUpdate","handleServerLocalUnmuteRequired","_meeting$mediaPropert13","_meeting$mediaPropert14","isMuted","isRemotelyMuted","isUnmuteAllowed","isLocallyMuted"],"sources":["muteState.ts"],"sourcesContent":["import {ServerMuteReason} from '@webex/media-helpers';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\nimport MeetingUtil from './util';\nimport {AUDIO, VIDEO} from '../constants';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const createMuteState = (type, meeting, enabled: boolean) => {\n // todo: remove the meeting argument (SPARK-399695)\n\n LoggerProxy.logger.info(\n `Meeting:muteState#createMuteState --> ${type}: creating MuteState for meeting id ${meeting?.id}`\n );\n\n const muteState = new MuteState(type, meeting, enabled);\n\n return muteState;\n};\n\n/** The purpose of this class is to manage the local and remote mute state and make sure that the server state always matches\n the last requested state by the client.\n\n More info about Locus muting API: https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html#\n\n This class is exported only for unit tests. It should never be instantiated directly with new MuteState(), instead createMuteState() should be called\n*/\nexport class MuteState {\n state: {\n client: {\n enabled: boolean; // indicates if audio/video is enabled at all or not\n localMute: boolean;\n };\n server: {localMute: boolean; remoteMute: boolean; unmuteAllowed: boolean};\n syncToServerInProgress: boolean;\n };\n\n type: any;\n ignoreMuteStateChange: boolean;\n\n /**\n * Constructor\n *\n * @param {String} type - audio or video\n * @param {Object} meeting - the meeting object (used for reading current remote mute status)\n * @param {boolean} enabled - whether the client audio/video is enabled at all\n */\n constructor(type: string, meeting: any, enabled: boolean) {\n if (type !== AUDIO && type !== VIDEO) {\n throw new ParameterError('Mute state is designed for handling audio or video only');\n }\n this.type = type;\n this.ignoreMuteStateChange = false;\n this.state = {\n client: {\n enabled,\n localMute: true,\n },\n server: {\n localMute: true,\n // because remoteVideoMuted and unmuteVideoAllowed are updated seperately, they might be undefined\n remoteMute: type === AUDIO ? meeting.remoteMuted : meeting.remoteVideoMuted ?? false,\n unmuteAllowed: type === AUDIO ? meeting.unmuteAllowed : meeting.unmuteVideoAllowed ?? true,\n },\n syncToServerInProgress: false,\n };\n }\n\n /**\n * Starts the mute state machine. Needs to be called after a new MuteState instance is created.\n *\n * @param {Object} meeting - the meeting object\n * @returns {void}\n */\n public init(meeting: any) {\n this.applyUnmuteAllowedToStream(meeting);\n\n // if we are remotely muted, we need to apply that to the local stream now (mute on-entry)\n if (this.state.server.remoteMute) {\n this.muteLocalStream(meeting, this.state.server.remoteMute, 'remotelyMuted');\n }\n\n const initialMute =\n this.type === AUDIO\n ? meeting.mediaProperties.audioStream?.muted\n : meeting.mediaProperties.videoStream?.muted;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#init --> ${this.type}: local stream initial mute state: ${initialMute}`\n );\n\n if (initialMute !== undefined) {\n this.state.client.localMute = initialMute;\n } else {\n // there is no stream, so it's like we are locally muted\n // (this is important especially for transcoded meetings, in which the SDP m-line direction always stays \"sendrecv\")\n this.state.client.localMute = true;\n }\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * This method needs to be called whenever the local audio/video stream has changed.\n * It reapplies the remote mute state onto the new stream and also reads the current\n * local mute state from the stream and updates the internal state machine and sends\n * any required requests to the server.\n *\n * @param {Object} meeting - the meeting object\n * @returns {void}\n */\n public handleLocalStreamChange(meeting: any) {\n return this.init(meeting);\n }\n\n /**\n * Enables/disables audio/video\n *\n * @param {Object} meeting - the meeting object\n * @param {boolean} enable\n * @returns {void}\n */\n public enable(meeting: any, enable: boolean) {\n if (enable !== this.state.client.enabled) {\n this.state.client.enabled = enable;\n\n this.applyClientStateToServer(meeting);\n }\n }\n\n /**\n * Mutes/unmutes local stream\n *\n * @param {Object} meeting - the meeting object\n * @param {Boolean} mute - true to mute the stream, false to unmute it\n * @param {ServerMuteReason} reason - reason for muting/unmuting\n * @returns {void}\n */\n private muteLocalStream(meeting: any, mute: boolean, reason: ServerMuteReason) {\n this.ignoreMuteStateChange = true;\n if (this.type === AUDIO) {\n meeting.mediaProperties.audioStream?.setServerMuted(mute, reason);\n } else {\n meeting.mediaProperties.videoStream?.setServerMuted(mute, reason);\n }\n this.ignoreMuteStateChange = false;\n }\n\n /**\n * This method should be called when the local stream mute state is changed\n * @public\n * @memberof MuteState\n * @param {Object} [meeting] the meeting object\n * @returns {void}\n */\n public handleLocalStreamMuteStateChange(meeting?: any) {\n if (this.ignoreMuteStateChange) {\n return;\n }\n\n // either user or system may have triggered a mute state change, but localMute should reflect both\n let newMuteState: boolean;\n let userMuteState: boolean;\n let systemMuteState: boolean;\n if (this.type === AUDIO) {\n newMuteState = meeting.mediaProperties.audioStream?.muted;\n userMuteState = meeting.mediaProperties.audioStream?.userMuted;\n systemMuteState = meeting.mediaProperties.audioStream?.systemMuted;\n } else {\n newMuteState = meeting.mediaProperties.videoStream?.muted;\n userMuteState = meeting.mediaProperties.videoStream?.userMuted;\n systemMuteState = meeting.mediaProperties.videoStream?.systemMuted;\n }\n\n LoggerProxy.logger.info(\n `Meeting:muteState#handleLocalStreamMuteStateChange --> ${this.type}: local stream new mute state: ${newMuteState} (user mute: ${userMuteState}, system mute: ${systemMuteState})`\n );\n\n this.state.client.localMute = newMuteState;\n\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * Applies the current mute state to the local stream (by enabling or disabling it accordingly)\n *\n * @public\n * @param {Object} [meeting] the meeting object\n * @param {ServerMuteReason} reason - reason why we're applying our client state to the local stream\n * @memberof MuteState\n * @returns {void}\n */\n public applyClientStateLocally(meeting?: any, reason?: ServerMuteReason) {\n this.muteLocalStream(meeting, this.state.client.localMute, reason);\n }\n\n /** Returns true if client is locally muted - it takes into account not just the client local mute state,\n * but also whether audio/video is enabled at all\n *\n * @returns {boolean}\n */\n private getClientLocalMuteState() {\n return this.state.client.enabled ? this.state.client.localMute : true;\n }\n\n /**\n * Updates the server local and remote mute values so that they match the current client desired state.\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {void}\n */\n private applyClientStateToServer(meeting?: any) {\n if (this.state.syncToServerInProgress) {\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: request to server in progress, we need to wait for it to complete`\n );\n\n return;\n }\n\n const localMuteState = this.getClientLocalMuteState();\n const localMuteRequiresSync = localMuteState !== this.state.server.localMute;\n const remoteMuteRequiresSync = !localMuteState && this.state.server.remoteMute;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: localMuteRequiresSync: ${localMuteRequiresSync} (${localMuteState} ?= ${this.state.server.localMute})`\n );\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: remoteMuteRequiresSync: ${remoteMuteRequiresSync}`\n );\n\n if (!localMuteRequiresSync && !remoteMuteRequiresSync) {\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: client state already matching server state, nothing to do`\n );\n\n return;\n }\n\n this.state.syncToServerInProgress = true;\n\n // first sync local mute with server\n const localMuteSyncPromise = localMuteRequiresSync\n ? this.sendLocalMuteRequestToServer(meeting)\n : Promise.resolve();\n\n localMuteSyncPromise\n .then(() =>\n // then follow it up with remote mute sync\n remoteMuteRequiresSync ? this.sendRemoteMuteRequestToServer(meeting) : Promise.resolve()\n )\n .then(() => {\n this.state.syncToServerInProgress = false;\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: sync with server completed`\n );\n\n // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync\n this.applyClientStateToServer(meeting);\n })\n .catch((e) => {\n this.state.syncToServerInProgress = false;\n\n LoggerProxy.logger.warn(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: error: ${e}`\n );\n\n // failed to apply client state to server, so revert stream mute state to server state\n this.muteLocalStream(\n meeting,\n this.state.server.localMute || this.state.server.remoteMute,\n 'clientRequestFailed'\n );\n });\n }\n\n /**\n * Sets the local mute value in the server\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {Promise}\n */\n private sendLocalMuteRequestToServer(meeting?: any) {\n const audioMuted = this.type === AUDIO ? this.getClientLocalMuteState() : undefined;\n const videoMuted = this.type === VIDEO ? this.getClientLocalMuteState() : undefined;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: sending local mute (audio=${audioMuted}, video=${videoMuted}) to server`\n );\n\n return MeetingUtil.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted)\n .then((locus) => {\n LoggerProxy.logger.info(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: local mute (audio=${audioMuted}, video=${videoMuted}) applied to server`\n );\n\n this.state.server.localMute = this.type === AUDIO ? audioMuted : videoMuted;\n\n if (locus) {\n meeting.locusInfo.handleLocusDelta(locus, meeting);\n }\n\n return locus;\n })\n .catch((remoteUpdateError) => {\n LoggerProxy.logger.warn(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: failed to apply local mute (audio=${audioMuted}, video=${videoMuted}) to server: ${remoteUpdateError}`\n );\n\n return Promise.reject(remoteUpdateError);\n });\n }\n\n /**\n * Sets the remote mute value in the server\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {Promise}\n */\n private sendRemoteMuteRequestToServer(meeting?: any) {\n const remoteMute = this.getClientLocalMuteState();\n\n LoggerProxy.logger.info(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: sending remote mute:${remoteMute} to server`\n );\n\n return meeting.members\n .muteMember(meeting.members.selfId, remoteMute, this.type === AUDIO)\n .then(() => {\n LoggerProxy.logger.info(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: remote mute:${remoteMute} applied to server`\n );\n\n this.state.server.remoteMute = remoteMute;\n })\n .catch((remoteUpdateError) => {\n LoggerProxy.logger.warn(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: failed to apply remote mute ${remoteMute} to server: ${remoteUpdateError}`\n );\n\n return Promise.reject(remoteUpdateError);\n });\n }\n\n /** Applies the current value for unmute allowed to the underlying stream\n *\n * @param {Meeting} meeting\n * @returns {void}\n */\n private applyUnmuteAllowedToStream(meeting: any) {\n if (this.type === AUDIO) {\n meeting.mediaProperties.audioStream?.setUnmuteAllowed(this.state.server.unmuteAllowed);\n } else {\n meeting.mediaProperties.videoStream?.setUnmuteAllowed(this.state.server.unmuteAllowed);\n }\n }\n\n /**\n * This method should be called whenever the server remote mute state is changed\n *\n * @public\n * @memberof MuteState\n * @param {Meeting} meeting\n * @param {Boolean} [muted] true if user is remotely muted, false otherwise\n * @param {Boolean} [unmuteAllowed] indicates if user is allowed to unmute self (false when \"hard mute\" feature is used)\n * @returns {undefined}\n */\n public handleServerRemoteMuteUpdate(meeting: any, muted?: boolean, unmuteAllowed?: boolean) {\n LoggerProxy.logger.info(\n `Meeting:muteState#handleServerRemoteMuteUpdate --> ${this.type}: updating server remoteMute to (${muted})`\n );\n if (unmuteAllowed !== undefined) {\n this.state.server.unmuteAllowed = unmuteAllowed;\n this.applyUnmuteAllowedToStream(meeting);\n }\n if (muted !== undefined) {\n this.state.server.remoteMute = muted;\n this.muteLocalStream(meeting, muted, 'remotelyMuted');\n }\n }\n\n /**\n * This method should be called whenever we receive from the server a requirement to locally unmute\n *\n * @public\n * @memberof MuteState\n * @param {Object} [meeting] the meeting object\n * @param {Boolean} [unmuteAllowed] whether the user is allowed to unmute self\n * @returns {undefined}\n */\n public handleServerLocalUnmuteRequired(meeting: any, unmuteAllowed: boolean) {\n if (!this.state.client.enabled) {\n LoggerProxy.logger.warn(\n `Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received while ${this.type} is disabled -> local unmute will not result in ${this.type} being sent`\n );\n } else {\n LoggerProxy.logger.info(\n `Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received -> doing local unmute (unmuteAllowed=${unmuteAllowed})`\n );\n }\n\n // todo: I'm seeing \"you can now unmute yourself \" popup when this happens - but same thing happens on web.w.c so we can ignore for now\n this.state.server.remoteMute = false;\n this.state.server.unmuteAllowed = unmuteAllowed;\n\n this.applyUnmuteAllowedToStream(meeting);\n\n // change user mute state to false, but keep localMute true if overall mute state is still true\n this.muteLocalStream(meeting, false, 'localUnmuteRequired');\n if (this.type === AUDIO) {\n this.state.client.localMute = meeting.mediaProperties.audioStream?.muted;\n } else {\n this.state.client.localMute = meeting.mediaProperties.videoStream?.muted;\n }\n\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * Returns true if the user is locally or remotely muted.\n * It only checks the mute status, ignoring the fact whether audio/video is enabled.\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isMuted() {\n return (\n this.state.client.localMute || this.state.server.localMute || this.state.server.remoteMute\n );\n }\n\n /**\n * Returns true if the user is remotely muted\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isRemotelyMuted() {\n return this.state.server.remoteMute;\n }\n\n /**\n * Returns true if unmute is allowed\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isUnmuteAllowed() {\n return this.state.server.unmuteAllowed;\n }\n\n /**\n * Returns true if the user is locally muted or audio/video is disabled\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isLocallyMuted() {\n return this.getClientLocalMuteState();\n }\n}\n"],"mappings":";;;;;;;;;;;;AACA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA;AACO,IAAMI,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAAlBA,eAAeA,CAAIE,IAAI,EAAEC,OAAO,EAAEC,OAAgB,EAAK;EAClE;;EAEAC,oBAAW,CAACC,MAAM,CAACC,IAAI,0CAAAC,MAAA,CACoBN,IAAI,0CAAAM,MAAA,CAAuCL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,EAAE,CACjG,CAAC;EAED,IAAMC,SAAS,GAAG,IAAIC,SAAS,CAACT,IAAI,EAAEC,OAAO,EAAEC,OAAO,CAAC;EAEvD,OAAOM,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOaC,SAAS,GAAAV,OAAA,CAAAU,SAAA;EAapB;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,UAAYT,IAAY,EAAEC,OAAY,EAAEC,OAAgB,EAAE;IAAA,IAAAQ,qBAAA,EAAAC,qBAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,SAAA;IAAA,IAAAK,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IACxD,IAAIb,IAAI,KAAKe,gBAAK,IAAIf,IAAI,KAAKgB,gBAAK,EAAE;MACpC,MAAM,IAAIC,kBAAc,CAAC,yDAAyD,CAAC;IACrF;IACA,IAAI,CAACjB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACkB,qBAAqB,GAAG,KAAK;IAClC,IAAI,CAACC,KAAK,GAAG;MACXC,MAAM,EAAE;QACNlB,OAAO,EAAPA,OAAO;QACPmB,SAAS,EAAE;MACb,CAAC;MACDC,MAAM,EAAE;QACND,SAAS,EAAE,IAAI;QACf;QACAE,UAAU,EAAEvB,IAAI,KAAKe,gBAAK,GAAGd,OAAO,CAACuB,WAAW,IAAAd,qBAAA,GAAGT,OAAO,CAACwB,gBAAgB,cAAAf,qBAAA,cAAAA,qBAAA,GAAI,KAAK;QACpFgB,aAAa,EAAE1B,IAAI,KAAKe,gBAAK,GAAGd,OAAO,CAACyB,aAAa,IAAAf,qBAAA,GAAGV,OAAO,CAAC0B,kBAAkB,cAAAhB,qBAAA,cAAAA,qBAAA,GAAI;MACxF,CAAC;MACDiB,sBAAsB,EAAE;IAC1B,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE,IAAAC,aAAA,CAAAhB,OAAA,EAAAJ,SAAA;IAAAqB,GAAA;IAAAC,KAAA,EAMA,SAAAC,KAAY/B,OAAY,EAAE;MAAA,IAAAgC,qBAAA,EAAAC,sBAAA;MACxB,IAAI,CAACC,0BAA0B,CAAClC,OAAO,CAAC;;MAExC;MACA,IAAI,IAAI,CAACkB,KAAK,CAACG,MAAM,CAACC,UAAU,EAAE;QAChC,IAAI,CAACa,eAAe,CAACnC,OAAO,EAAE,IAAI,CAACkB,KAAK,CAACG,MAAM,CAACC,UAAU,EAAE,eAAe,CAAC;MAC9E;MAEA,IAAMc,WAAW,GACf,IAAI,CAACrC,IAAI,KAAKe,gBAAK,IAAAkB,qBAAA,GACfhC,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAN,qBAAA,uBAAnCA,qBAAA,CAAqCO,KAAK,IAAAN,sBAAA,GAC1CjC,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAP,sBAAA,uBAAnCA,sBAAA,CAAqCM,KAAK;MAEhDrC,oBAAW,CAACC,MAAM,CAACC,IAAI,+BAAAC,MAAA,CACS,IAAI,CAACN,IAAI,yCAAAM,MAAA,CAAsC+B,WAAW,CAC1F,CAAC;MAED,IAAIA,WAAW,KAAKK,SAAS,EAAE;QAC7B,IAAI,CAACvB,KAAK,CAACC,MAAM,CAACC,SAAS,GAAGgB,WAAW;MAC3C,CAAC,MAAM;QACL;QACA;QACA,IAAI,CAAClB,KAAK,CAACC,MAAM,CAACC,SAAS,GAAG,IAAI;MACpC;MACA,IAAI,CAACsB,wBAAwB,CAAC1C,OAAO,CAAC;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA6B,GAAA;IAAAC,KAAA,EASA,SAAAa,wBAA+B3C,OAAY,EAAE;MAC3C,OAAO,IAAI,CAAC+B,IAAI,CAAC/B,OAAO,CAAC;IAC3B;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA6B,GAAA;IAAAC,KAAA,EAOA,SAAAc,OAAc5C,OAAY,EAAE4C,OAAe,EAAE;MAC3C,IAAIA,OAAM,KAAK,IAAI,CAAC1B,KAAK,CAACC,MAAM,CAAClB,OAAO,EAAE;QACxC,IAAI,CAACiB,KAAK,CAACC,MAAM,CAAClB,OAAO,GAAG2C,OAAM;QAElC,IAAI,CAACF,wBAAwB,CAAC1C,OAAO,CAAC;MACxC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA6B,GAAA;IAAAC,KAAA,EAQA,SAAAK,gBAAwBnC,OAAY,EAAE6C,IAAa,EAAEC,MAAwB,EAAE;MAC7E,IAAI,CAAC7B,qBAAqB,GAAG,IAAI;MACjC,IAAI,IAAI,CAAClB,IAAI,KAAKe,gBAAK,EAAE;QAAA,IAAAiC,sBAAA;QACvB,CAAAA,sBAAA,GAAA/C,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAS,sBAAA,uBAAnCA,sBAAA,CAAqCC,cAAc,CAACH,IAAI,EAAEC,MAAM,CAAC;MACnE,CAAC,MAAM;QAAA,IAAAG,sBAAA;QACL,CAAAA,sBAAA,GAAAjD,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAS,sBAAA,uBAAnCA,sBAAA,CAAqCD,cAAc,CAACH,IAAI,EAAEC,MAAM,CAAC;MACnE;MACA,IAAI,CAAC7B,qBAAqB,GAAG,KAAK;IACpC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAY,GAAA;IAAAC,KAAA,EAOA,SAAAoB,iCAAwClD,OAAa,EAAE;MACrD,IAAI,IAAI,CAACiB,qBAAqB,EAAE;QAC9B;MACF;;MAEA;MACA,IAAIkC,YAAqB;MACzB,IAAIC,aAAsB;MAC1B,IAAIC,eAAwB;MAC5B,IAAI,IAAI,CAACtD,IAAI,KAAKe,gBAAK,EAAE;QAAA,IAAAwC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;QACvBL,YAAY,IAAAG,sBAAA,GAAGtD,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAgB,sBAAA,uBAAnCA,sBAAA,CAAqCf,KAAK;QACzDa,aAAa,IAAAG,sBAAA,GAAGvD,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAiB,sBAAA,uBAAnCA,sBAAA,CAAqCE,SAAS;QAC9DJ,eAAe,IAAAG,sBAAA,GAAGxD,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAkB,sBAAA,uBAAnCA,sBAAA,CAAqCE,WAAW;MACpE,CAAC,MAAM;QAAA,IAAAC,sBAAA,EAAAC,sBAAA,EAAAC,uBAAA;QACLV,YAAY,IAAAQ,sBAAA,GAAG3D,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAmB,sBAAA,uBAAnCA,sBAAA,CAAqCpB,KAAK;QACzDa,aAAa,IAAAQ,sBAAA,GAAG5D,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAoB,sBAAA,uBAAnCA,sBAAA,CAAqCH,SAAS;QAC9DJ,eAAe,IAAAQ,uBAAA,GAAG7D,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAqB,uBAAA,uBAAnCA,uBAAA,CAAqCH,WAAW;MACpE;MAEAxD,oBAAW,CAACC,MAAM,CAACC,IAAI,2DAAAC,MAAA,CACqC,IAAI,CAACN,IAAI,qCAAAM,MAAA,CAAkC8C,YAAY,mBAAA9C,MAAA,CAAgB+C,aAAa,qBAAA/C,MAAA,CAAkBgD,eAAe,MACjL,CAAC;MAED,IAAI,CAACnC,KAAK,CAACC,MAAM,CAACC,SAAS,GAAG+B,YAAY;MAE1C,IAAI,CAACT,wBAAwB,CAAC1C,OAAO,CAAC;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA6B,GAAA;IAAAC,KAAA,EASA,SAAAgC,wBAA+B9D,OAAa,EAAE8C,MAAyB,EAAE;MACvE,IAAI,CAACX,eAAe,CAACnC,OAAO,EAAE,IAAI,CAACkB,KAAK,CAACC,MAAM,CAACC,SAAS,EAAE0B,MAAM,CAAC;IACpE;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAjB,GAAA;IAAAC,KAAA,EAKA,SAAAiC,wBAAA,EAAkC;MAChC,OAAO,IAAI,CAAC7C,KAAK,CAACC,MAAM,CAAClB,OAAO,GAAG,IAAI,CAACiB,KAAK,CAACC,MAAM,CAACC,SAAS,GAAG,IAAI;IACvE;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAS,GAAA;IAAAC,KAAA,EAQA,SAAAY,yBAAiC1C,OAAa,EAAE;MAAA,IAAAgE,KAAA;MAC9C,IAAI,IAAI,CAAC9C,KAAK,CAACS,sBAAsB,EAAE;QACrCzB,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B,IAAI,CAACN,IAAI,wEAC7D,CAAC;QAED;MACF;MAEA,IAAMkE,cAAc,GAAG,IAAI,CAACF,uBAAuB,CAAC,CAAC;MACrD,IAAMG,qBAAqB,GAAGD,cAAc,KAAK,IAAI,CAAC/C,KAAK,CAACG,MAAM,CAACD,SAAS;MAC5E,IAAM+C,sBAAsB,GAAG,CAACF,cAAc,IAAI,IAAI,CAAC/C,KAAK,CAACG,MAAM,CAACC,UAAU;MAE9EpB,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B,IAAI,CAACN,IAAI,+BAAAM,MAAA,CAA4B6D,qBAAqB,QAAA7D,MAAA,CAAK4D,cAAc,UAAA5D,MAAA,CAAO,IAAI,CAACa,KAAK,CAACG,MAAM,CAACD,SAAS,MACnK,CAAC;MACDlB,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B,IAAI,CAACN,IAAI,gCAAAM,MAAA,CAA6B8D,sBAAsB,CAChH,CAAC;MAED,IAAI,CAACD,qBAAqB,IAAI,CAACC,sBAAsB,EAAE;QACrDjE,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B,IAAI,CAACN,IAAI,gEAC7D,CAAC;QAED;MACF;MAEA,IAAI,CAACmB,KAAK,CAACS,sBAAsB,GAAG,IAAI;;MAExC;MACA,IAAMyC,oBAAoB,GAAGF,qBAAqB,GAC9C,IAAI,CAACG,4BAA4B,CAACrE,OAAO,CAAC,GAC1CsE,QAAA,CAAA1D,OAAA,CAAQ2D,OAAO,CAAC,CAAC;MAErBH,oBAAoB,CACjBI,IAAI,CAAC;QAAA;UACJ;UACAL,sBAAsB,GAAGH,KAAI,CAACS,6BAA6B,CAACzE,OAAO,CAAC,GAAGsE,QAAA,CAAA1D,OAAA,CAAQ2D,OAAO,CAAC;QAAC;MAAA,CAC1F,CAAC,CACAC,IAAI,CAAC,YAAM;QACVR,KAAI,CAAC9C,KAAK,CAACS,sBAAsB,GAAG,KAAK;QACzCzB,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B2D,KAAI,CAACjE,IAAI,iCAC7D,CAAC;;QAED;QACAiE,KAAI,CAACtB,wBAAwB,CAAC1C,OAAO,CAAC;MACxC,CAAC,CAAC,CACD0E,KAAK,CAAC,UAACC,CAAC,EAAK;QACZX,KAAI,CAAC9C,KAAK,CAACS,sBAAsB,GAAG,KAAK;QAEzCzB,oBAAW,CAACC,MAAM,CAACyE,IAAI,mDAAAvE,MAAA,CAC6B2D,KAAI,CAACjE,IAAI,eAAAM,MAAA,CAAYsE,CAAC,CAC1E,CAAC;;QAED;QACAX,KAAI,CAAC7B,eAAe,CAClBnC,OAAO,EACPgE,KAAI,CAAC9C,KAAK,CAACG,MAAM,CAACD,SAAS,IAAI4C,KAAI,CAAC9C,KAAK,CAACG,MAAM,CAACC,UAAU,EAC3D,qBACF,CAAC;MACH,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAO,GAAA;IAAAC,KAAA,EAQA,SAAAuC,6BAAqCrE,OAAa,EAAE;MAAA,IAAA6E,MAAA;MAClD,IAAMC,UAAU,GAAG,IAAI,CAAC/E,IAAI,KAAKe,gBAAK,GAAG,IAAI,CAACiD,uBAAuB,CAAC,CAAC,GAAGtB,SAAS;MACnF,IAAMsC,UAAU,GAAG,IAAI,CAAChF,IAAI,KAAKgB,gBAAK,GAAG,IAAI,CAACgD,uBAAuB,CAAC,CAAC,GAAGtB,SAAS;MAEnFvC,oBAAW,CAACC,MAAM,CAACC,IAAI,uDAAAC,MAAA,CACiC,IAAI,CAACN,IAAI,kCAAAM,MAAA,CAA+ByE,UAAU,cAAAzE,MAAA,CAAW0E,UAAU,gBAC/H,CAAC;MAED,OAAOC,aAAW,CAACC,sBAAsB,CAACjF,OAAO,EAAE8E,UAAU,EAAEC,UAAU,CAAC,CACvEP,IAAI,CAAC,UAACU,KAAK,EAAK;QACfhF,oBAAW,CAACC,MAAM,CAACC,IAAI,uDAAAC,MAAA,CACiCwE,MAAI,CAAC9E,IAAI,0BAAAM,MAAA,CAAuByE,UAAU,cAAAzE,MAAA,CAAW0E,UAAU,wBACvH,CAAC;QAEDF,MAAI,CAAC3D,KAAK,CAACG,MAAM,CAACD,SAAS,GAAGyD,MAAI,CAAC9E,IAAI,KAAKe,gBAAK,GAAGgE,UAAU,GAAGC,UAAU;QAE3E,IAAIG,KAAK,EAAE;UACTlF,OAAO,CAACmF,SAAS,CAACC,gBAAgB,CAACF,KAAK,EAAElF,OAAO,CAAC;QACpD;QAEA,OAAOkF,KAAK;MACd,CAAC,CAAC,CACDR,KAAK,CAAC,UAACW,iBAAiB,EAAK;QAC5BnF,oBAAW,CAACC,MAAM,CAACyE,IAAI,uDAAAvE,MAAA,CACiCwE,MAAI,CAAC9E,IAAI,0CAAAM,MAAA,CAAuCyE,UAAU,cAAAzE,MAAA,CAAW0E,UAAU,mBAAA1E,MAAA,CAAgBgF,iBAAiB,CACxK,CAAC;QAED,OAAOf,QAAA,CAAA1D,OAAA,CAAQ0E,MAAM,CAACD,iBAAiB,CAAC;MAC1C,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAxD,GAAA;IAAAC,KAAA,EAQA,SAAA2C,8BAAsCzE,OAAa,EAAE;MAAA,IAAAuF,MAAA;MACnD,IAAMjE,UAAU,GAAG,IAAI,CAACyC,uBAAuB,CAAC,CAAC;MAEjD7D,oBAAW,CAACC,MAAM,CAACC,IAAI,wDAAAC,MAAA,CACkC,IAAI,CAACN,IAAI,4BAAAM,MAAA,CAAyBiB,UAAU,eACrG,CAAC;MAED,OAAOtB,OAAO,CAACwF,OAAO,CACnBC,UAAU,CAACzF,OAAO,CAACwF,OAAO,CAACE,MAAM,EAAEpE,UAAU,EAAE,IAAI,CAACvB,IAAI,KAAKe,gBAAK,CAAC,CACnE0D,IAAI,CAAC,YAAM;QACVtE,oBAAW,CAACC,MAAM,CAACC,IAAI,wDAAAC,MAAA,CACkCkF,MAAI,CAACxF,IAAI,oBAAAM,MAAA,CAAiBiB,UAAU,uBAC7F,CAAC;QAEDiE,MAAI,CAACrE,KAAK,CAACG,MAAM,CAACC,UAAU,GAAGA,UAAU;MAC3C,CAAC,CAAC,CACDoD,KAAK,CAAC,UAACW,iBAAiB,EAAK;QAC5BnF,oBAAW,CAACC,MAAM,CAACyE,IAAI,wDAAAvE,MAAA,CACkCkF,MAAI,CAACxF,IAAI,oCAAAM,MAAA,CAAiCiB,UAAU,kBAAAjB,MAAA,CAAegF,iBAAiB,CAC7I,CAAC;QAED,OAAOf,QAAA,CAAA1D,OAAA,CAAQ0E,MAAM,CAACD,iBAAiB,CAAC;MAC1C,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAxD,GAAA;IAAAC,KAAA,EAKA,SAAAI,2BAAmClC,OAAY,EAAE;MAC/C,IAAI,IAAI,CAACD,IAAI,KAAKe,gBAAK,EAAE;QAAA,IAAA6E,uBAAA;QACvB,CAAAA,uBAAA,GAAA3F,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAqD,uBAAA,uBAAnCA,uBAAA,CAAqCC,gBAAgB,CAAC,IAAI,CAAC1E,KAAK,CAACG,MAAM,CAACI,aAAa,CAAC;MACxF,CAAC,MAAM;QAAA,IAAAoE,uBAAA;QACL,CAAAA,uBAAA,GAAA7F,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAqD,uBAAA,uBAAnCA,uBAAA,CAAqCD,gBAAgB,CAAC,IAAI,CAAC1E,KAAK,CAACG,MAAM,CAACI,aAAa,CAAC;MACxF;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAI,GAAA;IAAAC,KAAA,EAUA,SAAAgE,6BAAoC9F,OAAY,EAAEuC,KAAe,EAAEd,aAAuB,EAAE;MAC1FvB,oBAAW,CAACC,MAAM,CAACC,IAAI,uDAAAC,MAAA,CACiC,IAAI,CAACN,IAAI,uCAAAM,MAAA,CAAoCkC,KAAK,MAC1G,CAAC;MACD,IAAId,aAAa,KAAKgB,SAAS,EAAE;QAC/B,IAAI,CAACvB,KAAK,CAACG,MAAM,CAACI,aAAa,GAAGA,aAAa;QAC/C,IAAI,CAACS,0BAA0B,CAAClC,OAAO,CAAC;MAC1C;MACA,IAAIuC,KAAK,KAAKE,SAAS,EAAE;QACvB,IAAI,CAACvB,KAAK,CAACG,MAAM,CAACC,UAAU,GAAGiB,KAAK;QACpC,IAAI,CAACJ,eAAe,CAACnC,OAAO,EAAEuC,KAAK,EAAE,eAAe,CAAC;MACvD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAAV,GAAA;IAAAC,KAAA,EASA,SAAAiE,gCAAuC/F,OAAY,EAAEyB,aAAsB,EAAE;MAC3E,IAAI,CAAC,IAAI,CAACP,KAAK,CAACC,MAAM,CAAClB,OAAO,EAAE;QAC9BC,oBAAW,CAACC,MAAM,CAACyE,IAAI,0DAAAvE,MAAA,CACoC,IAAI,CAACN,IAAI,gDAAAM,MAAA,CAA6C,IAAI,CAACN,IAAI,sDAAAM,MAAA,CAAmD,IAAI,CAACN,IAAI,gBACtL,CAAC;MACH,CAAC,MAAM;QACLG,oBAAW,CAACC,MAAM,CAACC,IAAI,0DAAAC,MAAA,CACoC,IAAI,CAACN,IAAI,+EAAAM,MAAA,CAA4EoB,aAAa,MAC7J,CAAC;MACH;;MAEA;MACA,IAAI,CAACP,KAAK,CAACG,MAAM,CAACC,UAAU,GAAG,KAAK;MACpC,IAAI,CAACJ,KAAK,CAACG,MAAM,CAACI,aAAa,GAAGA,aAAa;MAE/C,IAAI,CAACS,0BAA0B,CAAClC,OAAO,CAAC;;MAExC;MACA,IAAI,CAACmC,eAAe,CAACnC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC;MAC3D,IAAI,IAAI,CAACD,IAAI,KAAKe,gBAAK,EAAE;QAAA,IAAAkF,uBAAA;QACvB,IAAI,CAAC9E,KAAK,CAACC,MAAM,CAACC,SAAS,IAAA4E,uBAAA,GAAGhG,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAA0D,uBAAA,uBAAnCA,uBAAA,CAAqCzD,KAAK;MAC1E,CAAC,MAAM;QAAA,IAAA0D,uBAAA;QACL,IAAI,CAAC/E,KAAK,CAACC,MAAM,CAACC,SAAS,IAAA6E,uBAAA,GAAGjG,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAyD,uBAAA,uBAAnCA,uBAAA,CAAqC1D,KAAK;MAC1E;MAEA,IAAI,CAACG,wBAAwB,CAAC1C,OAAO,CAAC;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA6B,GAAA;IAAAC,KAAA,EAQA,SAAAoE,QAAA,EAAiB;MACf,OACE,IAAI,CAAChF,KAAK,CAACC,MAAM,CAACC,SAAS,IAAI,IAAI,CAACF,KAAK,CAACG,MAAM,CAACD,SAAS,IAAI,IAAI,CAACF,KAAK,CAACG,MAAM,CAACC,UAAU;IAE9F;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAO,GAAA;IAAAC,KAAA,EAOA,SAAAqE,gBAAA,EAAyB;MACvB,OAAO,IAAI,CAACjF,KAAK,CAACG,MAAM,CAACC,UAAU;IACrC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAO,GAAA;IAAAC,KAAA,EAOA,SAAAsE,gBAAA,EAAyB;MACvB,OAAO,IAAI,CAAClF,KAAK,CAACG,MAAM,CAACI,aAAa;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAI,GAAA;IAAAC,KAAA,EAOA,SAAAuE,eAAA,EAAwB;MACtB,OAAO,IAAI,CAACtC,uBAAuB,CAAC,CAAC;IACvC;EAAC;EAAA,OAAAvD,SAAA;AAAA"}
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_parameter","_util","_constants","createMuteState","exports","type","meeting","enabled","LoggerProxy","logger","info","concat","id","muteState","MuteState","_meeting$remoteVideoM","_meeting$unmuteVideoA","_classCallCheck2","default","_defineProperty2","AUDIO","VIDEO","ParameterError","ignoreMuteStateChange","state","client","localMute","server","remoteMute","remoteMuted","remoteVideoMuted","unmuteAllowed","unmuteVideoAllowed","syncToServerInProgress","_createClass2","key","value","init","_meeting$mediaPropert","_meeting$mediaPropert2","applyUnmuteAllowedToStream","muteLocalStream","initialMute","mediaProperties","audioStream","muted","videoStream","undefined","applyClientStateToServer","handleLocalStreamChange","enable","mute","reason","_meeting$mediaPropert3","setServerMuted","_meeting$mediaPropert4","handleLocalStreamMuteStateChange","newMuteState","userMuteState","systemMuteState","_meeting$mediaPropert5","_meeting$mediaPropert6","_meeting$mediaPropert7","userMuted","systemMuted","_meeting$mediaPropert8","_meeting$mediaPropert9","_meeting$mediaPropert10","applyClientStateLocally","getClientLocalMuteState","_this","localMuteState","localMuteRequiresSync","remoteMuteRequiresSync","localMuteSyncPromise","sendLocalMuteRequestToServer","_promise","resolve","then","sendRemoteMuteRequestToServer","catch","e","warn","_this2","audioMuted","videoMuted","MeetingUtil","remoteUpdateAudioVideo","response","updateLocusFromApiResponse","remoteUpdateError","reject","_this3","members","muteMember","selfId","_meeting$mediaPropert11","setUnmuteAllowed","_meeting$mediaPropert12","handleServerRemoteMuteUpdate","handleServerLocalUnmuteRequired","_meeting$mediaPropert13","_meeting$mediaPropert14","isMuted","isRemotelyMuted","isUnmuteAllowed","isLocallyMuted"],"sources":["muteState.ts"],"sourcesContent":["import {ServerMuteReason} from '@webex/media-helpers';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\nimport MeetingUtil from './util';\nimport {AUDIO, VIDEO} from '../constants';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const createMuteState = (type, meeting, enabled: boolean) => {\n // todo: remove the meeting argument (SPARK-399695)\n\n LoggerProxy.logger.info(\n `Meeting:muteState#createMuteState --> ${type}: creating MuteState for meeting id ${meeting?.id}`\n );\n\n const muteState = new MuteState(type, meeting, enabled);\n\n return muteState;\n};\n\n/** The purpose of this class is to manage the local and remote mute state and make sure that the server state always matches\n the last requested state by the client.\n\n More info about Locus muting API: https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html#\n\n This class is exported only for unit tests. It should never be instantiated directly with new MuteState(), instead createMuteState() should be called\n*/\nexport class MuteState {\n state: {\n client: {\n enabled: boolean; // indicates if audio/video is enabled at all or not\n localMute: boolean;\n };\n server: {localMute: boolean; remoteMute: boolean; unmuteAllowed: boolean};\n syncToServerInProgress: boolean;\n };\n\n type: any;\n ignoreMuteStateChange: boolean;\n\n /**\n * Constructor\n *\n * @param {String} type - audio or video\n * @param {Object} meeting - the meeting object (used for reading current remote mute status)\n * @param {boolean} enabled - whether the client audio/video is enabled at all\n */\n constructor(type: string, meeting: any, enabled: boolean) {\n if (type !== AUDIO && type !== VIDEO) {\n throw new ParameterError('Mute state is designed for handling audio or video only');\n }\n this.type = type;\n this.ignoreMuteStateChange = false;\n this.state = {\n client: {\n enabled,\n localMute: true,\n },\n server: {\n localMute: true,\n // because remoteVideoMuted and unmuteVideoAllowed are updated seperately, they might be undefined\n remoteMute: type === AUDIO ? meeting.remoteMuted : meeting.remoteVideoMuted ?? false,\n unmuteAllowed: type === AUDIO ? meeting.unmuteAllowed : meeting.unmuteVideoAllowed ?? true,\n },\n syncToServerInProgress: false,\n };\n }\n\n /**\n * Starts the mute state machine. Needs to be called after a new MuteState instance is created.\n *\n * @param {Object} meeting - the meeting object\n * @returns {void}\n */\n public init(meeting: any) {\n this.applyUnmuteAllowedToStream(meeting);\n\n // if we are remotely muted, we need to apply that to the local stream now (mute on-entry)\n if (this.state.server.remoteMute) {\n this.muteLocalStream(meeting, this.state.server.remoteMute, 'remotelyMuted');\n }\n\n const initialMute =\n this.type === AUDIO\n ? meeting.mediaProperties.audioStream?.muted\n : meeting.mediaProperties.videoStream?.muted;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#init --> ${this.type}: local stream initial mute state: ${initialMute}`\n );\n\n if (initialMute !== undefined) {\n this.state.client.localMute = initialMute;\n } else {\n // there is no stream, so it's like we are locally muted\n // (this is important especially for transcoded meetings, in which the SDP m-line direction always stays \"sendrecv\")\n this.state.client.localMute = true;\n }\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * This method needs to be called whenever the local audio/video stream has changed.\n * It reapplies the remote mute state onto the new stream and also reads the current\n * local mute state from the stream and updates the internal state machine and sends\n * any required requests to the server.\n *\n * @param {Object} meeting - the meeting object\n * @returns {void}\n */\n public handleLocalStreamChange(meeting: any) {\n return this.init(meeting);\n }\n\n /**\n * Enables/disables audio/video\n *\n * @param {Object} meeting - the meeting object\n * @param {boolean} enable\n * @returns {void}\n */\n public enable(meeting: any, enable: boolean) {\n if (enable !== this.state.client.enabled) {\n this.state.client.enabled = enable;\n\n this.applyClientStateToServer(meeting);\n }\n }\n\n /**\n * Mutes/unmutes local stream\n *\n * @param {Object} meeting - the meeting object\n * @param {Boolean} mute - true to mute the stream, false to unmute it\n * @param {ServerMuteReason} reason - reason for muting/unmuting\n * @returns {void}\n */\n private muteLocalStream(meeting: any, mute: boolean, reason: ServerMuteReason) {\n this.ignoreMuteStateChange = true;\n if (this.type === AUDIO) {\n meeting.mediaProperties.audioStream?.setServerMuted(mute, reason);\n } else {\n meeting.mediaProperties.videoStream?.setServerMuted(mute, reason);\n }\n this.ignoreMuteStateChange = false;\n }\n\n /**\n * This method should be called when the local stream mute state is changed\n * @public\n * @memberof MuteState\n * @param {Object} [meeting] the meeting object\n * @returns {void}\n */\n public handleLocalStreamMuteStateChange(meeting?: any) {\n if (this.ignoreMuteStateChange) {\n return;\n }\n\n // either user or system may have triggered a mute state change, but localMute should reflect both\n let newMuteState: boolean;\n let userMuteState: boolean;\n let systemMuteState: boolean;\n if (this.type === AUDIO) {\n newMuteState = meeting.mediaProperties.audioStream?.muted;\n userMuteState = meeting.mediaProperties.audioStream?.userMuted;\n systemMuteState = meeting.mediaProperties.audioStream?.systemMuted;\n } else {\n newMuteState = meeting.mediaProperties.videoStream?.muted;\n userMuteState = meeting.mediaProperties.videoStream?.userMuted;\n systemMuteState = meeting.mediaProperties.videoStream?.systemMuted;\n }\n\n LoggerProxy.logger.info(\n `Meeting:muteState#handleLocalStreamMuteStateChange --> ${this.type}: local stream new mute state: ${newMuteState} (user mute: ${userMuteState}, system mute: ${systemMuteState})`\n );\n\n this.state.client.localMute = newMuteState;\n\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * Applies the current mute state to the local stream (by enabling or disabling it accordingly)\n *\n * @public\n * @param {Object} [meeting] the meeting object\n * @param {ServerMuteReason} reason - reason why we're applying our client state to the local stream\n * @memberof MuteState\n * @returns {void}\n */\n public applyClientStateLocally(meeting?: any, reason?: ServerMuteReason) {\n this.muteLocalStream(meeting, this.state.client.localMute, reason);\n }\n\n /** Returns true if client is locally muted - it takes into account not just the client local mute state,\n * but also whether audio/video is enabled at all\n *\n * @returns {boolean}\n */\n private getClientLocalMuteState() {\n return this.state.client.enabled ? this.state.client.localMute : true;\n }\n\n /**\n * Updates the server local and remote mute values so that they match the current client desired state.\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {void}\n */\n private applyClientStateToServer(meeting?: any) {\n if (this.state.syncToServerInProgress) {\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: request to server in progress, we need to wait for it to complete`\n );\n\n return;\n }\n\n const localMuteState = this.getClientLocalMuteState();\n const localMuteRequiresSync = localMuteState !== this.state.server.localMute;\n const remoteMuteRequiresSync = !localMuteState && this.state.server.remoteMute;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: localMuteRequiresSync: ${localMuteRequiresSync} (${localMuteState} ?= ${this.state.server.localMute})`\n );\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: remoteMuteRequiresSync: ${remoteMuteRequiresSync}`\n );\n\n if (!localMuteRequiresSync && !remoteMuteRequiresSync) {\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: client state already matching server state, nothing to do`\n );\n\n return;\n }\n\n this.state.syncToServerInProgress = true;\n\n // first sync local mute with server\n const localMuteSyncPromise = localMuteRequiresSync\n ? this.sendLocalMuteRequestToServer(meeting)\n : Promise.resolve();\n\n localMuteSyncPromise\n .then(() =>\n // then follow it up with remote mute sync\n remoteMuteRequiresSync ? this.sendRemoteMuteRequestToServer(meeting) : Promise.resolve()\n )\n .then(() => {\n this.state.syncToServerInProgress = false;\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: sync with server completed`\n );\n\n // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync\n this.applyClientStateToServer(meeting);\n })\n .catch((e) => {\n this.state.syncToServerInProgress = false;\n\n LoggerProxy.logger.warn(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: error: ${e}`\n );\n\n // failed to apply client state to server, so revert stream mute state to server state\n this.muteLocalStream(\n meeting,\n this.state.server.localMute || this.state.server.remoteMute,\n 'clientRequestFailed'\n );\n });\n }\n\n /**\n * Sets the local mute value in the server\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {Promise}\n */\n private sendLocalMuteRequestToServer(meeting?: any) {\n const audioMuted = this.type === AUDIO ? this.getClientLocalMuteState() : undefined;\n const videoMuted = this.type === VIDEO ? this.getClientLocalMuteState() : undefined;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: sending local mute (audio=${audioMuted}, video=${videoMuted}) to server`\n );\n\n return MeetingUtil.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted)\n .then((response) => {\n LoggerProxy.logger.info(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: local mute (audio=${audioMuted}, video=${videoMuted}) applied to server`\n );\n\n this.state.server.localMute = this.type === AUDIO ? audioMuted : videoMuted;\n\n return MeetingUtil.updateLocusFromApiResponse(meeting, response);\n })\n .catch((remoteUpdateError) => {\n LoggerProxy.logger.warn(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: failed to apply local mute (audio=${audioMuted}, video=${videoMuted}) to server: ${remoteUpdateError}`\n );\n\n return Promise.reject(remoteUpdateError);\n });\n }\n\n /**\n * Sets the remote mute value in the server\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {Promise}\n */\n private sendRemoteMuteRequestToServer(meeting?: any) {\n const remoteMute = this.getClientLocalMuteState();\n\n LoggerProxy.logger.info(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: sending remote mute:${remoteMute} to server`\n );\n\n return meeting.members\n .muteMember(meeting.members.selfId, remoteMute, this.type === AUDIO)\n .then(() => {\n LoggerProxy.logger.info(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: remote mute:${remoteMute} applied to server`\n );\n\n this.state.server.remoteMute = remoteMute;\n })\n .catch((remoteUpdateError) => {\n LoggerProxy.logger.warn(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: failed to apply remote mute ${remoteMute} to server: ${remoteUpdateError}`\n );\n\n return Promise.reject(remoteUpdateError);\n });\n }\n\n /** Applies the current value for unmute allowed to the underlying stream\n *\n * @param {Meeting} meeting\n * @returns {void}\n */\n private applyUnmuteAllowedToStream(meeting: any) {\n if (this.type === AUDIO) {\n meeting.mediaProperties.audioStream?.setUnmuteAllowed(this.state.server.unmuteAllowed);\n } else {\n meeting.mediaProperties.videoStream?.setUnmuteAllowed(this.state.server.unmuteAllowed);\n }\n }\n\n /**\n * This method should be called whenever the server remote mute state is changed\n *\n * @public\n * @memberof MuteState\n * @param {Meeting} meeting\n * @param {Boolean} [muted] true if user is remotely muted, false otherwise\n * @param {Boolean} [unmuteAllowed] indicates if user is allowed to unmute self (false when \"hard mute\" feature is used)\n * @returns {undefined}\n */\n public handleServerRemoteMuteUpdate(meeting: any, muted?: boolean, unmuteAllowed?: boolean) {\n LoggerProxy.logger.info(\n `Meeting:muteState#handleServerRemoteMuteUpdate --> ${this.type}: updating server remoteMute to (${muted})`\n );\n if (unmuteAllowed !== undefined) {\n this.state.server.unmuteAllowed = unmuteAllowed;\n this.applyUnmuteAllowedToStream(meeting);\n }\n if (muted !== undefined) {\n this.state.server.remoteMute = muted;\n this.muteLocalStream(meeting, muted, 'remotelyMuted');\n }\n }\n\n /**\n * This method should be called whenever we receive from the server a requirement to locally unmute\n *\n * @public\n * @memberof MuteState\n * @param {Object} [meeting] the meeting object\n * @param {Boolean} [unmuteAllowed] whether the user is allowed to unmute self\n * @returns {undefined}\n */\n public handleServerLocalUnmuteRequired(meeting: any, unmuteAllowed: boolean) {\n if (!this.state.client.enabled) {\n LoggerProxy.logger.warn(\n `Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received while ${this.type} is disabled -> local unmute will not result in ${this.type} being sent`\n );\n } else {\n LoggerProxy.logger.info(\n `Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received -> doing local unmute (unmuteAllowed=${unmuteAllowed})`\n );\n }\n\n // todo: I'm seeing \"you can now unmute yourself \" popup when this happens - but same thing happens on web.w.c so we can ignore for now\n this.state.server.remoteMute = false;\n this.state.server.unmuteAllowed = unmuteAllowed;\n\n this.applyUnmuteAllowedToStream(meeting);\n\n // change user mute state to false, but keep localMute true if overall mute state is still true\n this.muteLocalStream(meeting, false, 'localUnmuteRequired');\n if (this.type === AUDIO) {\n this.state.client.localMute = meeting.mediaProperties.audioStream?.muted;\n } else {\n this.state.client.localMute = meeting.mediaProperties.videoStream?.muted;\n }\n\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * Returns true if the user is locally or remotely muted.\n * It only checks the mute status, ignoring the fact whether audio/video is enabled.\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isMuted() {\n return (\n this.state.client.localMute || this.state.server.localMute || this.state.server.remoteMute\n );\n }\n\n /**\n * Returns true if the user is remotely muted\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isRemotelyMuted() {\n return this.state.server.remoteMute;\n }\n\n /**\n * Returns true if unmute is allowed\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isUnmuteAllowed() {\n return this.state.server.unmuteAllowed;\n }\n\n /**\n * Returns true if the user is locally muted or audio/video is disabled\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isLocallyMuted() {\n return this.getClientLocalMuteState();\n }\n}\n"],"mappings":"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"}
@@ -899,6 +899,50 @@ var MeetingRequest = exports.default = /*#__PURE__*/function (_StatelessWebexPlu
899
899
  }
900
900
  });
901
901
  }
902
+
903
+ /**
904
+ * Synchronize the stage for a meeting
905
+ *
906
+ * @param {LocusUrl} locusUrl The locus URL
907
+ * @param {SetStageVideoLayout} videoLayout The video layout to synchronize
908
+ * @returns {Promise} The locus request
909
+ */
910
+ }, {
911
+ key: "synchronizeStage",
912
+ value: function synchronizeStage(locusUrl, videoLayout) {
913
+ return this.locusDeltaRequest({
914
+ method: _constants.HTTP_VERBS.PATCH,
915
+ uri: "".concat(locusUrl, "/").concat(_constants.CONTROLS),
916
+ body: {
917
+ videoLayout: videoLayout
918
+ }
919
+ });
920
+ }
921
+
922
+ /**
923
+ * Sends a request to notify the host of a meeting.
924
+ * @param {string} siteFullUrl - The site URL.
925
+ * @param {string} locusId - The locus ID.
926
+ * @param {string} meetingUuid - The meeting UUID.
927
+ * @param {Array<string>} displayName - The display names to notify the host about.
928
+ * @returns {Promise}
929
+ */
930
+ }, {
931
+ key: "notifyHost",
932
+ value: function notifyHost(siteFullUrl, locusId, meetingUuid, displayName) {
933
+ // @ts-ignore
934
+ return this.request({
935
+ method: _constants.HTTP_VERBS.POST,
936
+ uri: "https://".concat(siteFullUrl, "/wbxappapi/v1/meetings/").concat(meetingUuid, "/notifyhost"),
937
+ body: {
938
+ displayName: displayName,
939
+ size: displayName === null || displayName === void 0 ? void 0 : displayName.length
940
+ },
941
+ headers: {
942
+ locusId: locusId
943
+ }
944
+ });
945
+ }
902
946
  }]);
903
947
  return MeetingRequest;
904
948
  }(_webexCore.StatelessWebexPlugin);
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","_interopRequireDefault","require","_lodash","_webexCore","_common","_internalPluginMetrics","_loggerProxy","_constants","_util","_excluded","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","MeetingRequest","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","meeting","otherAttrs","_objectWithoutProperties2","_assertThisInitialized2","_asyncToGenerator2","_regenerator","mark","_callee","joinCookieRaw","joinCookie","wrap","_callee$","_context","prev","next","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","sent","JSON","parse","abrupt","t0","LoggerProxy","logger","error","concat","stop","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","debounce","changeVideoLayout","leading","trailing","_createClass2","key","value","_joinMeeting","_callee2","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","reachability","breakoutsSupported","locale","_options$deviceCapabi","deviceCapabilities","liveAnnotationSupported","clientMediaPreferences","alias","url","body","clusterUrl","_callee2$","_context2","info","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","internal","installationId","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","services","waitForCatalog","LOCI","CALL","invitee","address","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","localSdp","_stringify","request","method","HTTP_VERBS","POST","uri","joinMeeting","_x","refreshCaptcha","_ref2","captchaRefreshUrl","captchaId","err","dialIn","_ref3","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOut","_ref4","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","getLocusDTO","GET","_promise","reject","disconnectPhoneAudio","_ref5","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","_ref6","leaveMeeting","_ref7","buildLeaveMeetingRequestOptions","acknowledgeMeeting","ALERT","lockMeeting","CONTROLS","lock","locked","PATCH","declineMeeting","DECLINE","reason","changeMeetingFloor","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","shareInstanceId","resourceToken","annotationInfo","annotation","sendDTMF","_ref8","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","_ref9","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","endMeetingForAll","_ref10","END","keepAlive","_ref11","keepAliveUrl","sendReaction","_ref12","reactionChannelUrl","reaction","participantId","sender","toggleReactions","_ref13","enable","requestingParticipantId","reactions","enabled","getLocusStatusByUrl","setBrb","_ref14","brb","setPostMeetingDataConsent","_ref15","postMeetingDataConsent","consent","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n} from '../constants';\nimport {\n SendReactionOptions,\n BrbOptions,\n ToggleReactionsOptions,\n PostMeetingDataConsentOptions,\n} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\nimport {ClientMediaPreferences} from '../reachability/reachability.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @param {String} options.alias\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n reachability: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n alias?: string;\n clientMediaPreferences: ClientMediaPreferences;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n reachability,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n clientMediaPreferences,\n alias,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences,\n };\n\n if (alias) {\n body.alias = alias;\n }\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n // append installationId to device config if it exists\n // @ts-ignore\n if (this.webex.internal.device.config.installationId) {\n // @ts-ignore\n body.device.installationId = this.webex.internal.device.config.installationId;\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage || reachability) {\n body.localMedias = [\n {\n localSdp: JSON.stringify({\n roapMessage,\n reachability,\n }),\n },\n ];\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @param {String} options.shareInstanceId id for current share\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n shareInstanceId: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.shareInstanceId) {\n body.floor.shareInstanceId = options.shareInstanceId;\n }\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n\n /**\n * Sends a request to set be right back status.\n *\n * @param {Object} options - The options for brb request.\n * @param {boolean} options.enabled - Whether brb status is enabled.\n * @param {string} options.locusUrl - The URL of the locus.\n * @param {string} options.deviceUrl - The URL of the device.\n * @param {string} options.selfId - The ID of the participant.\n * @returns {Promise}\n */\n setBrb({enabled, locusUrl, deviceUrl, selfId}: BrbOptions) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${CONTROLS}`;\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body: {\n brb: {\n enabled,\n deviceUrl,\n },\n },\n });\n }\n\n /**\n * Sends a request to set post meeting data consent.\n *\n * @param {Object} options - The options for post meeting data consent request.\n * @param {boolean} options.consent - Whether accepted or declined.\n * @param {string} options.locusUrl - The URL of the locus.\n * @param {string} options.deviceUrl - The URL of the device.\n * @param {string} options.selfId - The ID of the participant.\n * @returns {Promise}\n */\n setPostMeetingDataConsent({\n postMeetingDataConsent,\n locusUrl,\n deviceUrl,\n selfId,\n }: PostMeetingDataConsentOptions) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${CONTROLS}`;\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body: {\n consent: {\n postMeetingDataConsent,\n deviceUrl,\n },\n },\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_uuid","_interopRequireDefault","require","_lodash","_webexCore","_common","_internalPluginMetrics","_loggerProxy","_constants","_util","_excluded","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","MeetingRequest","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","meeting","otherAttrs","_objectWithoutProperties2","_assertThisInitialized2","_asyncToGenerator2","_regenerator","mark","_callee","joinCookieRaw","joinCookie","wrap","_callee$","_context","prev","next","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","sent","JSON","parse","abrupt","t0","LoggerProxy","logger","error","concat","stop","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","debounce","changeVideoLayout","leading","trailing","_createClass2","key","value","_joinMeeting","_callee2","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","reachability","breakoutsSupported","locale","_options$deviceCapabi","deviceCapabilities","liveAnnotationSupported","clientMediaPreferences","alias","url","body","clusterUrl","_callee2$","_context2","info","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","internal","installationId","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","services","waitForCatalog","LOCI","CALL","invitee","address","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","localSdp","_stringify","request","method","HTTP_VERBS","POST","uri","joinMeeting","_x","refreshCaptcha","_ref2","captchaRefreshUrl","captchaId","err","dialIn","_ref3","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOut","_ref4","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","getLocusDTO","GET","_promise","reject","disconnectPhoneAudio","_ref5","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","_ref6","leaveMeeting","_ref7","buildLeaveMeetingRequestOptions","acknowledgeMeeting","ALERT","lockMeeting","CONTROLS","lock","locked","PATCH","declineMeeting","DECLINE","reason","changeMeetingFloor","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","shareInstanceId","resourceToken","annotationInfo","annotation","sendDTMF","_ref8","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","_ref9","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","endMeetingForAll","_ref10","END","keepAlive","_ref11","keepAliveUrl","sendReaction","_ref12","reactionChannelUrl","reaction","participantId","sender","toggleReactions","_ref13","enable","requestingParticipantId","reactions","enabled","getLocusStatusByUrl","setBrb","_ref14","brb","setPostMeetingDataConsent","_ref15","postMeetingDataConsent","consent","synchronizeStage","videoLayout","notifyHost","siteFullUrl","locusId","meetingUuid","displayName","size","headers","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n} from '../constants';\nimport {\n SendReactionOptions,\n BrbOptions,\n ToggleReactionsOptions,\n PostMeetingDataConsentOptions,\n SynchronizeVideoLayout,\n} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\nimport {ClientMediaPreferences} from '../reachability/reachability.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @param {String} options.alias\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n reachability: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n alias?: string;\n clientMediaPreferences: ClientMediaPreferences;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n reachability,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n clientMediaPreferences,\n alias,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences,\n };\n\n if (alias) {\n body.alias = alias;\n }\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n // append installationId to device config if it exists\n // @ts-ignore\n if (this.webex.internal.device.config.installationId) {\n // @ts-ignore\n body.device.installationId = this.webex.internal.device.config.installationId;\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage || reachability) {\n body.localMedias = [\n {\n localSdp: JSON.stringify({\n roapMessage,\n reachability,\n }),\n },\n ];\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @param {String} options.shareInstanceId id for current share\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n shareInstanceId: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.shareInstanceId) {\n body.floor.shareInstanceId = options.shareInstanceId;\n }\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n\n /**\n * Sends a request to set be right back status.\n *\n * @param {Object} options - The options for brb request.\n * @param {boolean} options.enabled - Whether brb status is enabled.\n * @param {string} options.locusUrl - The URL of the locus.\n * @param {string} options.deviceUrl - The URL of the device.\n * @param {string} options.selfId - The ID of the participant.\n * @returns {Promise}\n */\n setBrb({enabled, locusUrl, deviceUrl, selfId}: BrbOptions) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${CONTROLS}`;\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body: {\n brb: {\n enabled,\n deviceUrl,\n },\n },\n });\n }\n\n /**\n * Sends a request to set post meeting data consent.\n *\n * @param {Object} options - The options for post meeting data consent request.\n * @param {boolean} options.consent - Whether accepted or declined.\n * @param {string} options.locusUrl - The URL of the locus.\n * @param {string} options.deviceUrl - The URL of the device.\n * @param {string} options.selfId - The ID of the participant.\n * @returns {Promise}\n */\n setPostMeetingDataConsent({\n postMeetingDataConsent,\n locusUrl,\n deviceUrl,\n selfId,\n }: PostMeetingDataConsentOptions) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${CONTROLS}`;\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body: {\n consent: {\n postMeetingDataConsent,\n deviceUrl,\n },\n },\n });\n }\n\n /**\n * Synchronize the stage for a meeting\n *\n * @param {LocusUrl} locusUrl The locus URL\n * @param {SetStageVideoLayout} videoLayout The video layout to synchronize\n * @returns {Promise} The locus request\n */\n synchronizeStage(locusUrl: string, videoLayout: SynchronizeVideoLayout) {\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {videoLayout},\n });\n }\n\n /**\n * Sends a request to notify the host of a meeting.\n * @param {string} siteFullUrl - The site URL.\n * @param {string} locusId - The locus ID.\n * @param {string} meetingUuid - The meeting UUID.\n * @param {Array<string>} displayName - The display names to notify the host about.\n * @returns {Promise}\n */\n notifyHost(siteFullUrl: string, locusId: string, meetingUuid: string, displayName: string[]) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `https://${siteFullUrl}/wbxappapi/v1/meetings/${meetingUuid}/notifyhost`,\n body: {\n displayName,\n size: displayName?.length,\n },\n headers: {\n locusId,\n },\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["request.type.ts"],"sourcesContent":["import {Reaction} from '../reactions/reactions.type';\n\nexport type SendReactionOptions = {\n reactionChannelUrl: string;\n reaction: Reaction;\n participantId: string;\n};\n\nexport type ToggleReactionsOptions = {\n enable: boolean;\n locusUrl: string;\n requestingParticipantId: string;\n};\n\nexport type BrbOptions = {\n enabled: boolean;\n locusUrl: string;\n deviceUrl: string;\n selfId: string;\n};\n\nexport type PostMeetingDataConsentOptions = {\n postMeetingDataConsent: boolean;\n locusUrl: string;\n deviceUrl: string;\n selfId: string;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["request.type.ts"],"sourcesContent":["import {Reaction} from '../reactions/reactions.type';\n\nexport type SendReactionOptions = {\n reactionChannelUrl: string;\n reaction: Reaction;\n participantId: string;\n};\n\nexport type ToggleReactionsOptions = {\n enable: boolean;\n locusUrl: string;\n requestingParticipantId: string;\n};\n\nexport type BrbOptions = {\n enabled: boolean;\n locusUrl: string;\n deviceUrl: string;\n selfId: string;\n};\n\nexport type PostMeetingDataConsentOptions = {\n postMeetingDataConsent: boolean;\n locusUrl: string;\n deviceUrl: string;\n selfId: string;\n};\n\nexport type StageCustomLogoPositions =\n | 'LowerLeft'\n | 'LowerMiddle'\n | 'LowerRight'\n | 'UpperLeft'\n | 'UpperMiddle'\n | 'UpperRight';\n\nexport type StageNameLabelType = 'Primary' | 'PrimaryInverted' | 'Secondary' | 'SecondaryInverted';\n\nexport type StageCustomBackground = {\n url: string;\n [others: string]: unknown;\n};\n\nexport type StageCustomLogo = {\n url: string;\n position: StageCustomLogoPositions;\n [others: string]: unknown;\n};\n\nexport type StageCustomNameLabel = {\n accentColor: string;\n background: {color: string};\n border: {color: string};\n content: {displayName: {color: string}; subtitle: {color: string}};\n decoration: {color: string};\n fadeOut?: {delay: number};\n type: StageNameLabelType;\n [others: string]: unknown;\n};\n\nexport type SetStageOptions = {\n activeSpeakerProportion?: number;\n customBackground?: StageCustomBackground;\n customLogo?: StageCustomLogo;\n customNameLabel?: StageCustomNameLabel;\n importantParticipants?: {mainCsi: number; participantId: string}[];\n lockAttendeeViewOnStage?: boolean;\n showActiveSpeaker?: boolean;\n};\n\nexport type SetStageVideoLayout = {\n overrideDefault: true;\n lockAttendeeViewOnStageOnly: boolean;\n stageParameters: {\n importantParticipants?: {participantId: string; mainCsi: number; order: number}[];\n showActiveSpeaker: {show: boolean; order: number};\n activeSpeakerProportion: number;\n stageManagerType: number;\n };\n customLayouts?: {\n background?: StageCustomBackground;\n logo?: StageCustomLogo;\n };\n nameLabelStyle?: StageCustomNameLabel;\n};\n\nexport type UnsetStageVideoLayout = {\n overrideDefault: false;\n};\n\nexport type SynchronizeVideoLayout = SetStageVideoLayout | UnsetStageVideoLayout;\n"],"mappings":""}
@@ -4,8 +4,4 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
4
4
  _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
8
- var RTC_METRICS = exports.default = {
9
- APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'
10
- };
11
- //# sourceMappingURL=constants.js.map
7
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["type.ts"],"sourcesContent":["export type Invitee = {\n memberId: string;\n emailAddress: string;\n email: string;\n phoneNumber: string;\n roles: Array<string>;\n skipEmailValidation?: boolean;\n isInternalNumber?: boolean;\n};\n"],"mappings":""}