@webex/plugin-meetings 3.6.0 → 3.7.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/README.md +2 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/webinar-registration-error.js +50 -0
  5. package/dist/common/errors/webinar-registration-error.js.map +1 -0
  6. package/dist/config.js +4 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +40 -2
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +1 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/index.js +10 -3
  13. package/dist/controls-options-manager/index.js.map +1 -1
  14. package/dist/controls-options-manager/types.js.map +1 -1
  15. package/dist/controls-options-manager/util.js +12 -0
  16. package/dist/controls-options-manager/util.js.map +1 -1
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/interpretation/index.js +1 -1
  20. package/dist/interpretation/siLanguage.js +1 -1
  21. package/dist/locus-info/controlsUtils.js +28 -4
  22. package/dist/locus-info/controlsUtils.js.map +1 -1
  23. package/dist/locus-info/fullState.js +2 -1
  24. package/dist/locus-info/fullState.js.map +1 -1
  25. package/dist/locus-info/index.js +61 -3
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/parser.js +5 -1
  28. package/dist/locus-info/parser.js.map +1 -1
  29. package/dist/meeting/in-meeting-actions.js +29 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +786 -528
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/locusMediaRequest.js +2 -6
  34. package/dist/meeting/locusMediaRequest.js.map +1 -1
  35. package/dist/meeting/muteState.js +5 -2
  36. package/dist/meeting/muteState.js.map +1 -1
  37. package/dist/meeting/request.js +21 -29
  38. package/dist/meeting/request.js.map +1 -1
  39. package/dist/meeting/util.js +98 -61
  40. package/dist/meeting/util.js.map +1 -1
  41. package/dist/meeting-info/meeting-info-v2.js +68 -17
  42. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  43. package/dist/meetings/index.js +29 -2
  44. package/dist/meetings/index.js.map +1 -1
  45. package/dist/members/index.js +3 -2
  46. package/dist/members/index.js.map +1 -1
  47. package/dist/members/util.js +13 -7
  48. package/dist/members/util.js.map +1 -1
  49. package/dist/metrics/constants.js +4 -1
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/multistream/remoteMedia.js +4 -0
  52. package/dist/multistream/remoteMedia.js.map +1 -1
  53. package/dist/reachability/clusterReachability.js +12 -15
  54. package/dist/reachability/clusterReachability.js.map +1 -1
  55. package/dist/reachability/index.js +433 -136
  56. package/dist/reachability/index.js.map +1 -1
  57. package/dist/{rtcMetrics/constants.js → reachability/reachability.types.js} +1 -5
  58. package/dist/reachability/reachability.types.js.map +1 -0
  59. package/dist/reachability/request.js +23 -9
  60. package/dist/reachability/request.js.map +1 -1
  61. package/dist/recording-controller/enums.js +8 -4
  62. package/dist/recording-controller/enums.js.map +1 -1
  63. package/dist/recording-controller/index.js +18 -9
  64. package/dist/recording-controller/index.js.map +1 -1
  65. package/dist/recording-controller/util.js +13 -9
  66. package/dist/recording-controller/util.js.map +1 -1
  67. package/dist/roap/index.js +5 -7
  68. package/dist/roap/index.js.map +1 -1
  69. package/dist/roap/request.js +45 -79
  70. package/dist/roap/request.js.map +1 -1
  71. package/dist/roap/turnDiscovery.js +3 -6
  72. package/dist/roap/turnDiscovery.js.map +1 -1
  73. package/dist/{common/errors/parameter.d.ts → types/common/errors/webinar-registration-error.d.ts} +4 -5
  74. package/dist/types/config.d.ts +3 -0
  75. package/dist/types/constants.d.ts +33 -0
  76. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  77. package/dist/types/controls-options-manager/index.d.ts +2 -1
  78. package/dist/types/controls-options-manager/types.d.ts +2 -0
  79. package/dist/types/index.d.ts +2 -1
  80. package/dist/types/locus-info/index.d.ts +9 -0
  81. package/dist/types/meeting/in-meeting-actions.d.ts +28 -0
  82. package/dist/types/meeting/index.d.ts +34 -3
  83. package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
  84. package/dist/types/meeting/muteState.d.ts +2 -1
  85. package/dist/types/meeting/request.d.ts +2 -2
  86. package/dist/types/meeting/util.d.ts +2 -2
  87. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  88. package/dist/types/meetings/index.d.ts +13 -1
  89. package/dist/types/members/index.d.ts +2 -1
  90. package/dist/types/members/util.d.ts +5 -1
  91. package/dist/types/metrics/constants.d.ts +3 -0
  92. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  93. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  94. package/dist/types/reachability/index.d.ts +74 -35
  95. package/dist/types/reachability/reachability.types.d.ts +64 -0
  96. package/dist/types/reachability/request.d.ts +5 -1
  97. package/dist/types/recording-controller/enums.d.ts +5 -2
  98. package/dist/types/recording-controller/index.d.ts +1 -0
  99. package/dist/types/recording-controller/util.d.ts +2 -1
  100. package/dist/types/roap/request.d.ts +1 -13
  101. package/dist/webinar/index.js +64 -19
  102. package/dist/webinar/index.js.map +1 -1
  103. package/package.json +22 -22
  104. package/src/common/errors/webinar-registration-error.ts +27 -0
  105. package/src/config.ts +3 -0
  106. package/src/constants.ts +41 -0
  107. package/src/controls-options-manager/enums.ts +1 -0
  108. package/src/controls-options-manager/index.ts +19 -2
  109. package/src/controls-options-manager/types.ts +2 -0
  110. package/src/controls-options-manager/util.ts +12 -0
  111. package/src/index.ts +2 -0
  112. package/src/locus-info/controlsUtils.ts +46 -2
  113. package/src/locus-info/fullState.ts +1 -0
  114. package/src/locus-info/index.ts +60 -0
  115. package/src/locus-info/parser.ts +8 -1
  116. package/src/meeting/in-meeting-actions.ts +58 -0
  117. package/src/meeting/index.ts +247 -22
  118. package/src/meeting/locusMediaRequest.ts +4 -8
  119. package/src/meeting/muteState.ts +6 -2
  120. package/src/meeting/request.ts +4 -11
  121. package/src/meeting/util.ts +31 -6
  122. package/src/meeting-info/meeting-info-v2.ts +51 -0
  123. package/src/meetings/index.ts +74 -40
  124. package/src/members/index.ts +4 -2
  125. package/src/members/util.ts +4 -1
  126. package/src/metrics/constants.ts +3 -0
  127. package/src/multistream/remoteMedia.ts +5 -0
  128. package/src/reachability/clusterReachability.ts +5 -15
  129. package/src/reachability/index.ts +285 -77
  130. package/src/reachability/reachability.types.ts +85 -0
  131. package/src/reachability/request.ts +55 -30
  132. package/src/recording-controller/enums.ts +5 -2
  133. package/src/recording-controller/index.ts +17 -4
  134. package/src/recording-controller/util.ts +20 -5
  135. package/src/roap/index.ts +4 -5
  136. package/src/roap/request.ts +32 -44
  137. package/src/roap/turnDiscovery.ts +2 -4
  138. package/src/webinar/index.ts +62 -16
  139. package/test/unit/spec/controls-options-manager/index.js +56 -32
  140. package/test/unit/spec/controls-options-manager/util.js +44 -0
  141. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  142. package/test/unit/spec/locus-info/index.js +88 -2
  143. package/test/unit/spec/meeting/in-meeting-actions.ts +31 -1
  144. package/test/unit/spec/meeting/index.js +346 -82
  145. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  146. package/test/unit/spec/meeting/muteState.js +8 -4
  147. package/test/unit/spec/meeting/request.js +3 -26
  148. package/test/unit/spec/meeting/utils.js +71 -14
  149. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  150. package/test/unit/spec/meetings/index.js +41 -6
  151. package/test/unit/spec/members/index.js +25 -2
  152. package/test/unit/spec/members/request.js +37 -3
  153. package/test/unit/spec/members/utils.js +110 -1
  154. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
  155. package/test/unit/spec/reachability/clusterReachability.ts +7 -0
  156. package/test/unit/spec/reachability/index.ts +265 -1
  157. package/test/unit/spec/reachability/request.js +56 -15
  158. package/test/unit/spec/recording-controller/index.js +61 -5
  159. package/test/unit/spec/recording-controller/util.js +39 -3
  160. package/test/unit/spec/roap/index.ts +1 -1
  161. package/test/unit/spec/roap/request.ts +51 -109
  162. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  163. package/test/unit/spec/webinar/index.ts +128 -15
  164. package/dist/annotation/annotation.types.d.ts +0 -42
  165. package/dist/annotation/constants.d.ts +0 -31
  166. package/dist/annotation/index.d.ts +0 -117
  167. package/dist/breakouts/breakout.d.ts +0 -8
  168. package/dist/breakouts/collection.d.ts +0 -5
  169. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  170. package/dist/breakouts/events.d.ts +0 -8
  171. package/dist/breakouts/index.d.ts +0 -5
  172. package/dist/breakouts/request.d.ts +0 -22
  173. package/dist/breakouts/utils.d.ts +0 -15
  174. package/dist/common/browser-detection.d.ts +0 -9
  175. package/dist/common/collection.d.ts +0 -48
  176. package/dist/common/config.d.ts +0 -2
  177. package/dist/common/errors/captcha-error.d.ts +0 -15
  178. package/dist/common/errors/intent-to-join.d.ts +0 -16
  179. package/dist/common/errors/join-meeting.d.ts +0 -17
  180. package/dist/common/errors/media.d.ts +0 -15
  181. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  182. package/dist/common/errors/password-error.d.ts +0 -15
  183. package/dist/common/errors/permission.d.ts +0 -14
  184. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  185. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  186. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  187. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  188. package/dist/common/errors/reconnection-in-progress.js +0 -33
  189. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  190. package/dist/common/errors/reconnection.d.ts +0 -15
  191. package/dist/common/errors/stats.d.ts +0 -15
  192. package/dist/common/errors/webex-errors.d.ts +0 -93
  193. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  194. package/dist/common/events/events-scope.d.ts +0 -17
  195. package/dist/common/events/events.d.ts +0 -12
  196. package/dist/common/events/trigger-proxy.d.ts +0 -2
  197. package/dist/common/events/util.d.ts +0 -2
  198. package/dist/common/logs/logger-config.d.ts +0 -2
  199. package/dist/common/logs/logger-proxy.d.ts +0 -2
  200. package/dist/common/logs/request.d.ts +0 -36
  201. package/dist/common/queue.d.ts +0 -34
  202. package/dist/config.d.ts +0 -72
  203. package/dist/constants.d.ts +0 -1088
  204. package/dist/controls-options-manager/constants.d.ts +0 -4
  205. package/dist/controls-options-manager/enums.d.ts +0 -15
  206. package/dist/controls-options-manager/index.d.ts +0 -136
  207. package/dist/controls-options-manager/types.d.ts +0 -43
  208. package/dist/controls-options-manager/util.d.ts +0 -1
  209. package/dist/index.d.ts +0 -7
  210. package/dist/interceptors/index.d.ts +0 -2
  211. package/dist/interceptors/locusRetry.d.ts +0 -27
  212. package/dist/interpretation/collection.d.ts +0 -5
  213. package/dist/interpretation/index.d.ts +0 -5
  214. package/dist/interpretation/siLanguage.d.ts +0 -5
  215. package/dist/locus-info/controlsUtils.d.ts +0 -2
  216. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  217. package/dist/locus-info/fullState.d.ts +0 -2
  218. package/dist/locus-info/hostUtils.d.ts +0 -2
  219. package/dist/locus-info/index.d.ts +0 -322
  220. package/dist/locus-info/infoUtils.d.ts +0 -2
  221. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  222. package/dist/locus-info/parser.d.ts +0 -272
  223. package/dist/locus-info/selfUtils.d.ts +0 -2
  224. package/dist/media/index.d.ts +0 -34
  225. package/dist/media/properties.d.ts +0 -93
  226. package/dist/media/util.d.ts +0 -2
  227. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  228. package/dist/mediaQualityMetrics/config.js +0 -502
  229. package/dist/mediaQualityMetrics/config.js.map +0 -1
  230. package/dist/meeting/effectsState.js +0 -260
  231. package/dist/meeting/effectsState.js.map +0 -1
  232. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  233. package/dist/meeting/index.d.ts +0 -1825
  234. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  235. package/dist/meeting/muteState.d.ts +0 -178
  236. package/dist/meeting/request.d.ts +0 -295
  237. package/dist/meeting/request.type.d.ts +0 -11
  238. package/dist/meeting/state.d.ts +0 -9
  239. package/dist/meeting/util.d.ts +0 -119
  240. package/dist/meeting/voicea-meeting.d.ts +0 -16
  241. package/dist/meeting-info/collection.d.ts +0 -20
  242. package/dist/meeting-info/index.d.ts +0 -69
  243. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  244. package/dist/meeting-info/request.d.ts +0 -22
  245. package/dist/meeting-info/util.d.ts +0 -2
  246. package/dist/meeting-info/utilv2.d.ts +0 -2
  247. package/dist/meetings/collection.d.ts +0 -40
  248. package/dist/meetings/index.d.ts +0 -390
  249. package/dist/meetings/meetings.types.d.ts +0 -4
  250. package/dist/meetings/request.d.ts +0 -27
  251. package/dist/meetings/util.d.ts +0 -18
  252. package/dist/member/index.d.ts +0 -160
  253. package/dist/member/member.types.js +0 -17
  254. package/dist/member/member.types.js.map +0 -1
  255. package/dist/member/types.d.ts +0 -32
  256. package/dist/member/util.d.ts +0 -2
  257. package/dist/members/collection.d.ts +0 -29
  258. package/dist/members/index.d.ts +0 -353
  259. package/dist/members/request.d.ts +0 -114
  260. package/dist/members/types.d.ts +0 -25
  261. package/dist/members/util.d.ts +0 -215
  262. package/dist/metrics/config.js +0 -276
  263. package/dist/metrics/config.js.map +0 -1
  264. package/dist/metrics/constants.d.ts +0 -70
  265. package/dist/metrics/index.d.ts +0 -45
  266. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  267. package/dist/multistream/receiveSlot.d.ts +0 -68
  268. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  269. package/dist/multistream/remoteMedia.d.ts +0 -72
  270. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  271. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  272. package/dist/multistream/sendSlotManager.d.ts +0 -69
  273. package/dist/networkQualityMonitor/index.d.ts +0 -70
  274. package/dist/networkQualityMonitor/index.js +0 -221
  275. package/dist/networkQualityMonitor/index.js.map +0 -1
  276. package/dist/peer-connection-manager/index.js +0 -671
  277. package/dist/peer-connection-manager/index.js.map +0 -1
  278. package/dist/peer-connection-manager/util.js +0 -109
  279. package/dist/peer-connection-manager/util.js.map +0 -1
  280. package/dist/personal-meeting-room/index.d.ts +0 -47
  281. package/dist/personal-meeting-room/request.d.ts +0 -14
  282. package/dist/personal-meeting-room/util.d.ts +0 -2
  283. package/dist/reachability/clusterReachability.d.ts +0 -109
  284. package/dist/reachability/index.d.ts +0 -105
  285. package/dist/reachability/request.d.ts +0 -39
  286. package/dist/reachability/util.d.ts +0 -8
  287. package/dist/reactions/constants.d.ts +0 -3
  288. package/dist/reactions/reactions.d.ts +0 -4
  289. package/dist/reactions/reactions.type.d.ts +0 -52
  290. package/dist/reconnection-manager/index.d.ts +0 -136
  291. package/dist/recording-controller/enums.d.ts +0 -7
  292. package/dist/recording-controller/index.d.ts +0 -207
  293. package/dist/recording-controller/util.d.ts +0 -14
  294. package/dist/roap/collection.js +0 -62
  295. package/dist/roap/collection.js.map +0 -1
  296. package/dist/roap/handler.js +0 -275
  297. package/dist/roap/handler.js.map +0 -1
  298. package/dist/roap/index.d.ts +0 -86
  299. package/dist/roap/request.d.ts +0 -39
  300. package/dist/roap/state.js +0 -126
  301. package/dist/roap/state.js.map +0 -1
  302. package/dist/roap/turnDiscovery.d.ts +0 -155
  303. package/dist/roap/util.js +0 -75
  304. package/dist/roap/util.js.map +0 -1
  305. package/dist/rtcMetrics/constants.d.ts +0 -4
  306. package/dist/rtcMetrics/constants.js.map +0 -1
  307. package/dist/rtcMetrics/index.d.ts +0 -61
  308. package/dist/rtcMetrics/index.js +0 -197
  309. package/dist/rtcMetrics/index.js.map +0 -1
  310. package/dist/statsAnalyzer/global.d.ts +0 -36
  311. package/dist/statsAnalyzer/global.js +0 -126
  312. package/dist/statsAnalyzer/global.js.map +0 -1
  313. package/dist/statsAnalyzer/index.d.ts +0 -217
  314. package/dist/statsAnalyzer/index.js +0 -1013
  315. package/dist/statsAnalyzer/index.js.map +0 -1
  316. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  317. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  318. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  319. package/dist/transcription/index.d.ts +0 -64
  320. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  321. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  322. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  323. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  324. package/dist/types/rtcMetrics/index.d.ts +0 -71
  325. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  326. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  327. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  328. package/dist/webinar/collection.d.ts +0 -16
  329. package/dist/webinar/index.d.ts +0 -5
@@ -71,6 +71,9 @@ export type BasicMeetingInformation = {
71
71
  };
72
72
  meetingInfo: any;
73
73
  sessionCorrelationId: string;
74
+ roles: string[];
75
+ getCurUserType: () => string | null;
76
+ callStateForMetrics: CallStateForMetrics;
74
77
  };
75
78
  /**
76
79
  * Maintain a cache of meetings and sync with services.
@@ -207,6 +210,15 @@ export default class Meetings extends WebexPlugin {
207
210
  * @returns {undefined}
208
211
  */
209
212
  private _toggleTlsReachability;
213
+ /**
214
+ * API to toggle backend ipv6 native support config, needs to be called before webex.meetings.register()
215
+ *
216
+ * @param {Boolean} newValue
217
+ * @private
218
+ * @memberof Meetings
219
+ * @returns {undefined}
220
+ */
221
+ private _toggleIpv6BackendNativeSupport;
210
222
  /**
211
223
  * Explicitly sets up the meetings plugin by registering
212
224
  * the device, connecting to mercury, and listening for locus events.
@@ -281,7 +293,7 @@ export default class Meetings extends WebexPlugin {
281
293
  * @public
282
294
  * @memberof Meetings
283
295
  */
284
- startReachability(trigger?: string): Promise<import("../reachability").ReachabilityResults>;
296
+ startReachability(trigger?: string): Promise<import("../reachability/reachability.types").ReachabilityResults>;
285
297
  /**
286
298
  * Get geoHint for info for meetings
287
299
  * @returns {Promise}
@@ -302,11 +302,12 @@ export default class Members extends StatelessWebexPlugin {
302
302
  /**
303
303
  * Lower all hands of members in a meeting
304
304
  * @param {String} requestingMemberId - id of the participant which requested the lower all hands
305
+ * @param {array} roles which should be lowered
305
306
  * @returns {Promise}
306
307
  * @public
307
308
  * @memberof Members
308
309
  */
309
- lowerAllHands(requestingMemberId: string): any;
310
+ lowerAllHands(requestingMemberId: string, roles: Array<string>): any;
310
311
  /**
311
312
  * Transfers the host to another member
312
313
  * @param {String} memberId
@@ -26,6 +26,7 @@ declare const MembersUtil: {
26
26
  */
27
27
  getAddMemberBody: (options: any) => {
28
28
  invitees: {
29
+ roles?: any;
29
30
  address: any;
30
31
  }[];
31
32
  alertIfActive: any;
@@ -54,6 +55,7 @@ declare const MembersUtil: {
54
55
  uri: any;
55
56
  body: {
56
57
  invitees: {
58
+ roles?: any;
57
59
  address: any;
58
60
  }[];
59
61
  alertIfActive: any;
@@ -95,7 +97,8 @@ declare const MembersUtil: {
95
97
  * @returns {RoleAssignmentOptions}
96
98
  */
97
99
  generateRoleAssignmentMemberOptions: (memberId: string, roles: Array<ServerRoleShape>, locusUrl: string) => RoleAssignmentOptions;
98
- generateLowerAllHandsMemberOptions: (requestingParticipantId: any, locusUrl: any) => {
100
+ generateLowerAllHandsMemberOptions: (requestingParticipantId: any, locusUrl: any, roles: any) => {
101
+ roles: any;
99
102
  requestingParticipantId: any;
100
103
  locusUrl: any;
101
104
  };
@@ -145,6 +148,7 @@ declare const MembersUtil: {
145
148
  uri: string;
146
149
  body: {
147
150
  hand: {
151
+ roles: any;
148
152
  raised: boolean;
149
153
  };
150
154
  requestingParticipantId: any;
@@ -67,5 +67,8 @@ declare const BEHAVIORAL_METRICS: {
67
67
  ROAP_HTTP_RESPONSE_MISSING: string;
68
68
  TURN_DISCOVERY_REQUIRES_OK: string;
69
69
  REACHABILITY_COMPLETED: string;
70
+ WEBINAR_REGISTRATION_ERROR: string;
71
+ GUEST_ENTERED_LOBBY: string;
72
+ GUEST_EXITED_LOBBY: string;
70
73
  };
71
74
  export { BEHAVIORAL_METRICS as default };
@@ -42,6 +42,7 @@ export declare class RemoteMedia extends EventsScope {
42
42
  * to restrict the requested resolution to this size
43
43
  * @param width width of the video element
44
44
  * @param height height of the video element
45
+ * @note width/height of 0 will be ignored
45
46
  */
46
47
  setSizeHint(width: any, height: any): void;
47
48
  /**
@@ -1,16 +1,7 @@
1
1
  import { ClusterNode } from './request';
2
2
  import EventsScope from '../common/events/events-scope';
3
3
  import { Enum } from '../constants';
4
- export type TransportResult = {
5
- result: 'reachable' | 'unreachable' | 'untested';
6
- latencyInMilliseconds?: number;
7
- clientMediaIPs?: string[];
8
- };
9
- export type ClusterReachabilityResult = {
10
- udp: TransportResult;
11
- tcp: TransportResult;
12
- xtls: TransportResult;
13
- };
4
+ import { ClusterReachabilityResult } from './reachability.types';
14
5
  export type ResultEventData = {
15
6
  protocol: 'udp' | 'tcp' | 'xtls';
16
7
  result: 'reachable' | 'unreachable' | 'untested';
@@ -2,42 +2,11 @@
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
4
  import { Defer } from '@webex/common';
5
+ import { IP_VERSION } from '../constants';
5
6
  import ReachabilityRequest, { ClusterList } from './request';
6
- import { ClusterReachability, ClusterReachabilityResult } from './clusterReachability';
7
+ import { ClusterReachabilityResult, ClientMediaPreferences, ReachabilityMetrics, ReachabilityReportV0, ReachabilityReportV1, ReachabilityResults, ReachabilityResultsForBackend, GetClustersTrigger } from './reachability.types';
8
+ import { ClusterReachability } from './clusterReachability';
7
9
  import EventsScope from '../common/events/events-scope';
8
- export type ReachabilityMetrics = {
9
- reachability_public_udp_success: number;
10
- reachability_public_udp_failed: number;
11
- reachability_public_tcp_success: number;
12
- reachability_public_tcp_failed: number;
13
- reachability_public_xtls_success: number;
14
- reachability_public_xtls_failed: number;
15
- reachability_vmn_udp_success: number;
16
- reachability_vmn_udp_failed: number;
17
- reachability_vmn_tcp_success: number;
18
- reachability_vmn_tcp_failed: number;
19
- reachability_vmn_xtls_success: number;
20
- reachability_vmn_xtls_failed: number;
21
- };
22
- /**
23
- * This is the type that matches what backend expects us to send to them. It is a bit weird, because
24
- * it uses strings instead of booleans and numbers, but that's what they require.
25
- */
26
- export type TransportResultForBackend = {
27
- reachable?: 'true' | 'false';
28
- latencyInMilliseconds?: string;
29
- clientMediaIPs?: string[];
30
- untested?: 'true';
31
- };
32
- export type ReachabilityResultForBackend = {
33
- udp: TransportResultForBackend;
34
- tcp: TransportResultForBackend;
35
- xtls: TransportResultForBackend;
36
- };
37
- export type ReachabilityResultsForBackend = Record<string, ReachabilityResultForBackend>;
38
- export type ReachabilityResults = Record<string, ClusterReachabilityResult & {
39
- isVideoMesh?: boolean;
40
- }>;
41
10
  /**
42
11
  * @class Reachability
43
12
  * @export
@@ -49,6 +18,8 @@ export default class Reachability extends EventsScope {
49
18
  clusterReachability: {
50
19
  [key: string]: ClusterReachability;
51
20
  };
21
+ minRequiredClusters?: number;
22
+ orpheusApiVersion?: number;
52
23
  reachabilityDefer?: Defer;
53
24
  vmnTimer?: ReturnType<typeof setTimeout>;
54
25
  publicCloudTimer?: ReturnType<typeof setTimeout>;
@@ -73,6 +44,8 @@ export default class Reachability extends EventsScope {
73
44
  xtls: number;
74
45
  };
75
46
  };
47
+ startTime: any;
48
+ totalDuration: any;
76
49
  protected lastTrigger?: string;
77
50
  /**
78
51
  * Creates an instance of Reachability.
@@ -82,11 +55,13 @@ export default class Reachability extends EventsScope {
82
55
  constructor(webex: object);
83
56
  /**
84
57
  * Fetches the list of media clusters from the backend
58
+ * @param {string} trigger - explains the reason for starting reachability, used by Orpheus
59
+ * @param {Object} previousReport - last reachability report
85
60
  * @param {boolean} isRetry
86
61
  * @private
87
62
  * @returns {Promise<{clusters: ClusterList, joinCookie: any}>}
88
63
  */
89
- getClusters(isRetry?: boolean): Promise<{
64
+ getClusters(trigger: GetClustersTrigger, previousReport?: any, isRetry?: boolean): Promise<{
90
65
  clusters: ClusterList;
91
66
  joinCookie: any;
92
67
  }>;
@@ -98,6 +73,32 @@ export default class Reachability extends EventsScope {
98
73
  * @memberof Reachability
99
74
  */
100
75
  gatherReachability(trigger: string): Promise<ReachabilityResults>;
76
+ /**
77
+ * Gets the last join cookie we got from Orpheus
78
+ *
79
+ * @returns {Promise<Object>} join cookie
80
+ */
81
+ getJoinCookie(): Promise<any>;
82
+ /**
83
+ * Returns the reachability report that needs to be attached to the ROAP messages
84
+ * that we send to the backend.
85
+ *
86
+ * @returns {Promise<Object>}
87
+ */
88
+ getReachabilityReport(): Promise<{
89
+ joinCookie: any;
90
+ reachability?: ReachabilityReportV1;
91
+ } | {
92
+ reachability: ReachabilityReportV0;
93
+ }>;
94
+ /**
95
+ * This method is called when we don't succeed in reaching the minimum number of clusters
96
+ * required by Orpheus. It sends the results to Orpheus and gets a new list that it tries to reach again.
97
+ * @returns {Promise<ReachabilityResults>} reachability results
98
+ * @public
99
+ * @memberof Reachability
100
+ */
101
+ gatherReachabilityFallback(): Promise<void>;
101
102
  /**
102
103
  * Returns statistics about last reachability results. The returned value is an object
103
104
  * with a flat list of properties so that it can be easily sent with metrics
@@ -142,6 +143,13 @@ export default class Reachability extends EventsScope {
142
143
  * @memberof Reachability
143
144
  */
144
145
  private getUnreachableClusters;
146
+ /**
147
+ * Gets the number of reachable clusters from last run reachability check
148
+ * @returns {number} reachable clusters count
149
+ * @private
150
+ * @memberof Reachability
151
+ */
152
+ private getNumberOfReachableClusters;
145
153
  /**
146
154
  * Make a log of unreachable clusters.
147
155
  * @returns {undefined}
@@ -165,6 +173,7 @@ export default class Reachability extends EventsScope {
165
173
  private areAllResultsReady;
166
174
  /**
167
175
  * Resolves the promise returned by gatherReachability() method
176
+ * @param {boolean} checkMinRequiredClusters - if true, it will check if we have reached the minimum required clusters and do a fallback if needed
168
177
  * @returns {void}
169
178
  */
170
179
  private resolveReachabilityPromise;
@@ -214,10 +223,40 @@ export default class Reachability extends EventsScope {
214
223
  * @returns {void}
215
224
  */
216
225
  private resetResultCounters;
226
+ /**
227
+ * Clears the timer
228
+ *
229
+ * @param {string} timer name of the timer to clear
230
+ * @returns {void}
231
+ */
232
+ private clearTimer;
233
+ /**
234
+ * Aborts current checks that are in progress
235
+ *
236
+ * @returns {void}
237
+ */
238
+ private abortCurrentChecks;
217
239
  /**
218
240
  * Performs reachability checks for all clusters
219
241
  * @param {ClusterList} clusterList
220
242
  * @returns {Promise<void>} promise that's resolved as soon as the checks are started
221
243
  */
222
244
  private performReachabilityChecks;
245
+ /**
246
+ * Returns the clientMediaPreferences object that needs to be sent to the backend
247
+ * when joining a meeting
248
+ *
249
+ * @param {boolean} isMultistream
250
+ * @param {IP_VERSION} ipver
251
+ * @returns {Object}
252
+ */
253
+ getClientMediaPreferences(isMultistream: boolean, ipver?: IP_VERSION): Promise<ClientMediaPreferences>;
254
+ /**
255
+ * Returns the reachability report that needs to be attached to the ROAP messages
256
+ * that we send to the backend.
257
+ * It may return undefined, if reachability is not needed to be attached to ROAP messages (that's the case for v1 or Orpheus API)
258
+ *
259
+ * @returns {Promise<ReachabilityReportV0>} object that needs to be attached to Roap messages
260
+ */
261
+ getReachabilityReportToAttachToRoap(): Promise<ReachabilityReportV0 | undefined>;
223
262
  }
@@ -0,0 +1,64 @@
1
+ import { IP_VERSION } from '../constants';
2
+ export type TransportResult = {
3
+ result: 'reachable' | 'unreachable' | 'untested';
4
+ latencyInMilliseconds?: number;
5
+ clientMediaIPs?: string[];
6
+ };
7
+ export type ClusterReachabilityResult = {
8
+ udp: TransportResult;
9
+ tcp: TransportResult;
10
+ xtls: TransportResult;
11
+ };
12
+ export type ReachabilityMetrics = {
13
+ reachability_public_udp_success: number;
14
+ reachability_public_udp_failed: number;
15
+ reachability_public_tcp_success: number;
16
+ reachability_public_tcp_failed: number;
17
+ reachability_public_xtls_success: number;
18
+ reachability_public_xtls_failed: number;
19
+ reachability_vmn_udp_success: number;
20
+ reachability_vmn_udp_failed: number;
21
+ reachability_vmn_tcp_success: number;
22
+ reachability_vmn_tcp_failed: number;
23
+ reachability_vmn_xtls_success: number;
24
+ reachability_vmn_xtls_failed: number;
25
+ };
26
+ /**
27
+ * This is the type that matches what backend expects us to send to them. It is a bit weird, because
28
+ * it uses strings instead of booleans and numbers, but that's what they require.
29
+ */
30
+ export type TransportResultForBackend = {
31
+ reachable?: 'true' | 'false';
32
+ latencyInMilliseconds?: string;
33
+ clientMediaIPs?: string[];
34
+ untested?: 'true';
35
+ };
36
+ export type ReachabilityResultForBackend = {
37
+ udp: TransportResultForBackend;
38
+ tcp: TransportResultForBackend;
39
+ xtls: TransportResultForBackend;
40
+ };
41
+ export type ReachabilityResultsForBackend = Record<string, ReachabilityResultForBackend>;
42
+ export type ReachabilityResults = Record<string, ClusterReachabilityResult & {
43
+ isVideoMesh?: boolean;
44
+ }>;
45
+ export type ReachabilityReportV0 = ReachabilityResultsForBackend;
46
+ export type ReachabilityReportV1 = {
47
+ version: 1;
48
+ result: {
49
+ usedDiscoveryOptions: {
50
+ 'early-call-min-clusters': number;
51
+ };
52
+ metrics: {
53
+ 'total-duration-ms': number;
54
+ };
55
+ tests: Record<string, ReachabilityResultForBackend>;
56
+ };
57
+ };
58
+ export interface ClientMediaPreferences {
59
+ ipver: IP_VERSION;
60
+ joinCookie: any;
61
+ preferTranscoding: boolean;
62
+ reachability?: ReachabilityReportV1;
63
+ }
64
+ export type GetClustersTrigger = 'startup' | 'early-call/no-min-reached';
@@ -1,4 +1,5 @@
1
1
  import { IP_VERSION } from '../constants';
2
+ import { GetClustersTrigger } from './reachability.types';
2
3
  export interface ClusterNode {
3
4
  isVideoMesh: boolean;
4
5
  udp: Array<string>;
@@ -22,12 +23,15 @@ declare class ReachabilityRequest {
22
23
  /**
23
24
  * Gets the cluster information
24
25
  *
26
+ * @param {string} trigger that's passed to Orpheus
25
27
  * @param {IP_VERSION} ipVersion information about current ip network we're on
28
+ * @param {Object} previousReport last reachability result
26
29
  * @returns {Promise}
27
30
  */
28
- getClusters: (ipVersion?: IP_VERSION) => Promise<{
31
+ getClusters: (trigger: GetClustersTrigger, ipVersion?: IP_VERSION, previousReport?: any) => Promise<{
29
32
  clusters: ClusterList;
30
33
  joinCookie: any;
34
+ discoveryOptions?: Record<string, any>;
31
35
  }>;
32
36
  /**
33
37
  * gets remote SDP For Clusters
@@ -1,7 +1,10 @@
1
- declare enum RecordingAction {
1
+ export declare enum RecordingAction {
2
2
  Start = "Start",
3
3
  Stop = "Stop",
4
4
  Pause = "Pause",
5
5
  Resume = "Resume"
6
6
  }
7
- export default RecordingAction;
7
+ export declare enum RecordingType {
8
+ Premise = "premise",
9
+ Cloud = "cloud"
10
+ }
@@ -161,6 +161,7 @@ export default class RecordingController {
161
161
  private extract;
162
162
  /**
163
163
  * @param {RecordingAction} action
164
+ * @param {RecordingType} recordingType
164
165
  * @private
165
166
  * @memberof RecordingController
166
167
  * @returns {Promise}
@@ -1,10 +1,11 @@
1
1
  import { SELF_POLICY } from '../constants';
2
- import RecordingAction from './enums';
2
+ import { RecordingAction } from './enums';
3
3
  declare const _default: {
4
4
  canUserStart: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
5
5
  canUserPause: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
6
6
  canUserResume: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
7
7
  canUserStop: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
8
+ isPremiseRecordingEnabled: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
8
9
  deriveRecordingStates: (action: RecordingAction) => {
9
10
  recording: boolean;
10
11
  paused: boolean;
@@ -1,19 +1,9 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { IP_VERSION } from '../constants';
3
2
  import { LocusMediaRequest } from '../meeting/locusMediaRequest';
4
3
  /**
5
4
  * @class RoapRequest
6
5
  */
7
6
  export default class RoapRequest extends StatelessWebexPlugin {
8
- /**
9
- * Returns reachability data.
10
- * @param {Object} localSdp
11
- * @returns {Object}
12
- */
13
- attachReachabilityData(localSdp: any): Promise<{
14
- localSdp: any;
15
- joinCookie: any;
16
- }>;
17
7
  /**
18
8
  * Sends a ROAP message
19
9
  * @param {Object} options
@@ -22,15 +12,13 @@ export default class RoapRequest extends StatelessWebexPlugin {
22
12
  * @param {String} options.mediaId
23
13
  * @param {String} options.correlationId
24
14
  * @param {String} options.meetingId
25
- * @param {IP_VERSION} options.ipVersion only required for offers
26
15
  * @returns {Promise} returns the response/failure of the request
27
16
  */
28
17
  sendRoap(options: {
29
18
  roapMessage: any;
30
19
  locusSelfUrl: string;
31
20
  mediaId: string;
32
- meetingId: string;
33
- ipVersion?: IP_VERSION;
21
+ isMultistream: boolean;
34
22
  locusMediaRequest?: LocusMediaRequest;
35
23
  }): Promise<{
36
24
  mediaConnections: any;
@@ -7,8 +7,10 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _webexCore = require("@webex/webex-core");
10
+ var _lodash = require("lodash");
10
11
  var _constants = require("../constants");
11
12
  var _collection = _interopRequireDefault(require("./collection"));
13
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
12
14
  /*!
13
15
  * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
14
16
  */
@@ -24,35 +26,31 @@ var Webinar = _webexCore.WebexPlugin.extend({
24
26
  props: {
25
27
  locusUrl: 'string',
26
28
  // appears current webinar's locus url
27
- webcastUrl: 'string',
28
- // current webinar's webcast url
29
- webinarAttendeesSearchingUrl: 'string',
30
- // current webinarAttendeesSearching url
31
- canManageWebcast: 'boolean' // appears the ability to manage webcast
29
+ webcastInstanceUrl: 'string',
30
+ // current webinar's webcast instance url
31
+ canManageWebcast: 'boolean',
32
+ // appears the ability to manage webcast
33
+ selfIsPanelist: 'boolean',
34
+ // self is panelist
35
+ selfIsAttendee: 'boolean',
36
+ // self is attendee
37
+ practiceSessionEnabled: 'boolean' // practice session enabled
32
38
  },
33
39
  /**
34
40
  * Update the current locus url of the webinar
35
- * @param {string} locusUrl // locus url
41
+ * @param {string} locusUrl
36
42
  * @returns {void}
37
43
  */
38
44
  locusUrlUpdate: function locusUrlUpdate(locusUrl) {
39
45
  this.set('locusUrl', locusUrl);
40
46
  },
41
47
  /**
42
- * Update the current webcast url of the meeting
43
- * @param {string} webcastUrl // webcast url
48
+ * Update the current webcast instance url of the meeting
49
+ * @param {object} payload
44
50
  * @returns {void}
45
51
  */
46
- webcastUrlUpdate: function webcastUrlUpdate(webcastUrl) {
47
- this.set('webcastUrl', webcastUrl);
48
- },
49
- /**
50
- * Update the current webinarAttendeesSearching url of the meeting
51
- * @param {string} webinarAttendeesSearchingUrl // webinarAttendeesSearching url
52
- * @returns {void}
53
- */
54
- webinarAttendeesSearchingUrlUpdate: function webinarAttendeesSearchingUrlUpdate(webinarAttendeesSearchingUrl) {
55
- this.set('webinarAttendeesSearchingUrl', webinarAttendeesSearchingUrl);
52
+ updateWebcastUrl: function updateWebcastUrl(payload) {
53
+ this.set('webcastInstanceUrl', (0, _lodash.get)(payload, 'resources.webcastInstance.url'));
56
54
  },
57
55
  /**
58
56
  * Update whether self has capability to manage start/stop webcast (only host can manage it)
@@ -62,7 +60,54 @@ var Webinar = _webexCore.WebexPlugin.extend({
62
60
  updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
63
61
  this.set('canManageWebcast', canManageWebcast);
64
62
  },
65
- version: "3.6.0"
63
+ /**
64
+ * Updates user roles and manages associated state transitions
65
+ * @param {object} payload
66
+ * @param {string[]} payload.oldRoles - Previous roles of the user
67
+ * @param {string[]} payload.newRoles - New roles of the user
68
+ * @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states
69
+ */
70
+ updateRoleChanged: function updateRoleChanged(payload) {
71
+ var oldRoles = (0, _lodash.get)(payload, 'oldRoles', []);
72
+ var newRoles = (0, _lodash.get)(payload, 'newRoles', []);
73
+ var isPromoted = oldRoles.includes(_constants.SELF_ROLES.ATTENDEE) && newRoles.includes(_constants.SELF_ROLES.PANELIST);
74
+ var isDemoted = oldRoles.includes(_constants.SELF_ROLES.PANELIST) && newRoles.includes(_constants.SELF_ROLES.ATTENDEE);
75
+ this.set('selfIsPanelist', newRoles.includes(_constants.SELF_ROLES.PANELIST));
76
+ this.set('selfIsAttendee', newRoles.includes(_constants.SELF_ROLES.ATTENDEE));
77
+ this.updateCanManageWebcast(newRoles.includes(_constants.SELF_ROLES.MODERATOR));
78
+ return {
79
+ isPromoted: isPromoted,
80
+ isDemoted: isDemoted
81
+ };
82
+ },
83
+ /**
84
+ * start or stop practice session for webinar
85
+ * @param {boolean} enabled
86
+ * @returns {Promise}
87
+ */
88
+ setPracticeSessionState: function setPracticeSessionState(enabled) {
89
+ return this.request({
90
+ method: _constants.HTTP_VERBS.PATCH,
91
+ uri: "".concat(this.locusUrl, "/controls"),
92
+ body: {
93
+ practiceSession: {
94
+ enabled: enabled
95
+ }
96
+ }
97
+ }).catch(function (error) {
98
+ _loggerProxy.default.logger.error('Meeting:webinar#setPracticeSessionState failed', error);
99
+ throw error;
100
+ });
101
+ },
102
+ /**
103
+ * update practice session status
104
+ * @param {object} payload
105
+ * @returns {void}
106
+ */
107
+ updatePracticeSessionStatus: function updatePracticeSessionStatus(payload) {
108
+ this.set('practiceSessionEnabled', payload.enabled);
109
+ },
110
+ version: "3.7.0-next.10"
66
111
  });
67
112
  var _default = exports.default = Webinar;
68
113
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_constants","_collection","_interopRequireDefault","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","webcastUrl","webinarAttendeesSearchingUrl","canManageWebcast","locusUrlUpdate","set","webcastUrlUpdate","webinarAttendeesSearchingUrlUpdate","updateCanManageWebcast","version","_default","exports","default"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {MEETINGS} from '../constants';\n\nimport WebinarCollection from './collection';\n\n/**\n * @class Webinar\n */\nconst Webinar = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n webinar: WebinarCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current webinar's locus url\n webcastUrl: 'string', // current webinar's webcast url\n webinarAttendeesSearchingUrl: 'string', // current webinarAttendeesSearching url\n canManageWebcast: 'boolean', // appears the ability to manage webcast\n },\n\n /**\n * Update the current locus url of the webinar\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current webcast url of the meeting\n * @param {string} webcastUrl // webcast url\n * @returns {void}\n */\n webcastUrlUpdate(webcastUrl) {\n this.set('webcastUrl', webcastUrl);\n },\n\n /**\n * Update the current webinarAttendeesSearching url of the meeting\n * @param {string} webinarAttendeesSearchingUrl // webinarAttendeesSearching url\n * @returns {void}\n */\n webinarAttendeesSearchingUrlUpdate(webinarAttendeesSearchingUrl) {\n this.set('webinarAttendeesSearchingUrl', webinarAttendeesSearchingUrl);\n },\n\n /**\n * Update whether self has capability to manage start/stop webcast (only host can manage it)\n * @param {boolean} canManageWebcast\n * @returns {void}\n */\n updateCanManageWebcast(canManageWebcast) {\n this.set('canManageWebcast', canManageWebcast);\n },\n});\n\nexport default Webinar;\n"],"mappings":";;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAC,sBAAA,CAAAH,OAAA;AANA;AACA;AACA;;AAMA;AACA;AACA;AACA,IAAMI,OAAO,GAAGC,sBAAW,CAACC,MAAM,CAAC;EACjCC,SAAS,EAAEC,mBAAQ;EACnBC,WAAW,EAAE;IACXC,OAAO,EAAEC;EACX,CAAC;EAEDC,KAAK,EAAE;IACLC,QAAQ,EAAE,QAAQ;IAAE;IACpBC,UAAU,EAAE,QAAQ;IAAE;IACtBC,4BAA4B,EAAE,QAAQ;IAAE;IACxCC,gBAAgB,EAAE,SAAS,CAAE;EAC/B,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,cAAc,WAAAA,eAACJ,QAAQ,EAAE;IACvB,IAAI,CAACK,GAAG,CAAC,UAAU,EAAEL,QAAQ,CAAC;EAChC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEM,gBAAgB,WAAAA,iBAACL,UAAU,EAAE;IAC3B,IAAI,CAACI,GAAG,CAAC,YAAY,EAAEJ,UAAU,CAAC;EACpC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEM,kCAAkC,WAAAA,mCAACL,4BAA4B,EAAE;IAC/D,IAAI,CAACG,GAAG,CAAC,8BAA8B,EAAEH,4BAA4B,CAAC;EACxE,CAAC;EAED;AACF;AACA;AACA;AACA;EACEM,sBAAsB,WAAAA,uBAACL,gBAAgB,EAAE;IACvC,IAAI,CAACE,GAAG,CAAC,kBAAkB,EAAEF,gBAAgB,CAAC;EAChD,CAAC;EAAAM,OAAA;AACH,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYrB,OAAO"}
1
+ {"version":3,"names":["_webexCore","require","_lodash","_constants","_collection","_interopRequireDefault","_loggerProxy","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","webcastInstanceUrl","canManageWebcast","selfIsPanelist","selfIsAttendee","practiceSessionEnabled","locusUrlUpdate","set","updateWebcastUrl","payload","get","updateCanManageWebcast","updateRoleChanged","oldRoles","newRoles","isPromoted","includes","SELF_ROLES","ATTENDEE","PANELIST","isDemoted","MODERATOR","setPracticeSessionState","enabled","request","method","HTTP_VERBS","PATCH","uri","concat","body","practiceSession","catch","error","LoggerProxy","logger","updatePracticeSessionStatus","version","_default","exports","default"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {get} from 'lodash';\nimport {HTTP_VERBS, MEETINGS, SELF_ROLES} from '../constants';\n\nimport WebinarCollection from './collection';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @class Webinar\n */\nconst Webinar = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n webinar: WebinarCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current webinar's locus url\n webcastInstanceUrl: 'string', // current webinar's webcast instance url\n canManageWebcast: 'boolean', // appears the ability to manage webcast\n selfIsPanelist: 'boolean', // self is panelist\n selfIsAttendee: 'boolean', // self is attendee\n practiceSessionEnabled: 'boolean', // practice session enabled\n },\n\n /**\n * Update the current locus url of the webinar\n * @param {string} locusUrl\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current webcast instance url of the meeting\n * @param {object} payload\n * @returns {void}\n */\n updateWebcastUrl(payload) {\n this.set('webcastInstanceUrl', get(payload, 'resources.webcastInstance.url'));\n },\n\n /**\n * Update whether self has capability to manage start/stop webcast (only host can manage it)\n * @param {boolean} canManageWebcast\n * @returns {void}\n */\n updateCanManageWebcast(canManageWebcast) {\n this.set('canManageWebcast', canManageWebcast);\n },\n\n /**\n * Updates user roles and manages associated state transitions\n * @param {object} payload\n * @param {string[]} payload.oldRoles - Previous roles of the user\n * @param {string[]} payload.newRoles - New roles of the user\n * @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states\n */\n updateRoleChanged(payload) {\n const oldRoles = get(payload, 'oldRoles', []);\n const newRoles = get(payload, 'newRoles', []);\n\n const isPromoted =\n oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.PANELIST);\n const isDemoted =\n oldRoles.includes(SELF_ROLES.PANELIST) && newRoles.includes(SELF_ROLES.ATTENDEE);\n this.set('selfIsPanelist', newRoles.includes(SELF_ROLES.PANELIST));\n this.set('selfIsAttendee', newRoles.includes(SELF_ROLES.ATTENDEE));\n this.updateCanManageWebcast(newRoles.includes(SELF_ROLES.MODERATOR));\n\n return {isPromoted, isDemoted};\n },\n\n /**\n * start or stop practice session for webinar\n * @param {boolean} enabled\n * @returns {Promise}\n */\n setPracticeSessionState(enabled) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n practiceSession: {\n enabled,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#setPracticeSessionState failed', error);\n throw error;\n });\n },\n\n /**\n * update practice session status\n * @param {object} payload\n * @returns {void}\n */\n updatePracticeSessionStatus(payload) {\n this.set('practiceSessionEnabled', payload.enabled);\n },\n});\n\nexport default Webinar;\n"],"mappings":"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"}