@webex/plugin-meetings 3.0.0-beta.25 → 3.0.0-beta.250

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 (360) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +841 -19
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +28 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/queue.js +24 -9
  25. package/dist/common/queue.js.map +1 -1
  26. package/dist/config.js +5 -10
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +193 -28
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/constants.js +14 -0
  31. package/dist/controls-options-manager/constants.js.map +1 -0
  32. package/dist/controls-options-manager/enums.js +27 -0
  33. package/dist/controls-options-manager/enums.js.map +1 -0
  34. package/dist/controls-options-manager/index.js +297 -0
  35. package/dist/controls-options-manager/index.js.map +1 -0
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +319 -0
  39. package/dist/controls-options-manager/util.js.map +1 -0
  40. package/dist/index.js +106 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/interpretation/collection.js +23 -0
  43. package/dist/interpretation/collection.js.map +1 -0
  44. package/dist/interpretation/index.js +366 -0
  45. package/dist/interpretation/index.js.map +1 -0
  46. package/dist/interpretation/siLanguage.js +25 -0
  47. package/dist/interpretation/siLanguage.js.map +1 -0
  48. package/dist/locus-info/controlsUtils.js +91 -2
  49. package/dist/locus-info/controlsUtils.js.map +1 -1
  50. package/dist/locus-info/index.js +381 -62
  51. package/dist/locus-info/index.js.map +1 -1
  52. package/dist/locus-info/infoUtils.js +7 -1
  53. package/dist/locus-info/infoUtils.js.map +1 -1
  54. package/dist/locus-info/mediaSharesUtils.js +43 -1
  55. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  56. package/dist/locus-info/parser.js +224 -63
  57. package/dist/locus-info/parser.js.map +1 -1
  58. package/dist/locus-info/selfUtils.js +89 -14
  59. package/dist/locus-info/selfUtils.js.map +1 -1
  60. package/dist/media/index.js +49 -106
  61. package/dist/media/index.js.map +1 -1
  62. package/dist/media/properties.js +29 -90
  63. package/dist/media/properties.js.map +1 -1
  64. package/dist/meeting/in-meeting-actions.js +90 -2
  65. package/dist/meeting/in-meeting-actions.js.map +1 -1
  66. package/dist/meeting/index.js +2627 -2557
  67. package/dist/meeting/index.js.map +1 -1
  68. package/dist/meeting/locusMediaRequest.js +292 -0
  69. package/dist/meeting/locusMediaRequest.js.map +1 -0
  70. package/dist/meeting/muteState.js +228 -123
  71. package/dist/meeting/muteState.js.map +1 -1
  72. package/dist/meeting/request.js +256 -196
  73. package/dist/meeting/request.js.map +1 -1
  74. package/dist/meeting/util.js +601 -417
  75. package/dist/meeting/util.js.map +1 -1
  76. package/dist/meeting-info/index.js +48 -7
  77. package/dist/meeting-info/index.js.map +1 -1
  78. package/dist/meeting-info/meeting-info-v2.js +171 -51
  79. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  80. package/dist/meeting-info/util.js +1 -1
  81. package/dist/meeting-info/util.js.map +1 -1
  82. package/dist/meeting-info/utilv2.js +36 -36
  83. package/dist/meeting-info/utilv2.js.map +1 -1
  84. package/dist/meetings/collection.js +22 -0
  85. package/dist/meetings/collection.js.map +1 -1
  86. package/dist/meetings/index.js +370 -90
  87. package/dist/meetings/index.js.map +1 -1
  88. package/dist/meetings/meetings.types.js +7 -0
  89. package/dist/meetings/meetings.types.js.map +1 -0
  90. package/dist/meetings/request.js +2 -0
  91. package/dist/meetings/request.js.map +1 -1
  92. package/dist/meetings/util.js +88 -1
  93. package/dist/meetings/util.js.map +1 -1
  94. package/dist/member/index.js +49 -0
  95. package/dist/member/index.js.map +1 -1
  96. package/dist/member/types.js +25 -0
  97. package/dist/member/types.js.map +1 -0
  98. package/dist/member/util.js +121 -25
  99. package/dist/member/util.js.map +1 -1
  100. package/dist/members/collection.js +10 -0
  101. package/dist/members/collection.js.map +1 -1
  102. package/dist/members/index.js +86 -5
  103. package/dist/members/index.js.map +1 -1
  104. package/dist/members/request.js +106 -38
  105. package/dist/members/request.js.map +1 -1
  106. package/dist/members/types.js +15 -0
  107. package/dist/members/types.js.map +1 -0
  108. package/dist/members/util.js +316 -233
  109. package/dist/members/util.js.map +1 -1
  110. package/dist/metrics/constants.js +6 -5
  111. package/dist/metrics/constants.js.map +1 -1
  112. package/dist/metrics/index.js +1 -468
  113. package/dist/metrics/index.js.map +1 -1
  114. package/dist/multistream/mediaRequestManager.js +238 -49
  115. package/dist/multistream/mediaRequestManager.js.map +1 -1
  116. package/dist/multistream/receiveSlot.js +49 -16
  117. package/dist/multistream/receiveSlot.js.map +1 -1
  118. package/dist/multistream/receiveSlotManager.js +52 -34
  119. package/dist/multistream/receiveSlotManager.js.map +1 -1
  120. package/dist/multistream/remoteMedia.js +44 -18
  121. package/dist/multistream/remoteMedia.js.map +1 -1
  122. package/dist/multistream/remoteMediaGroup.js +60 -3
  123. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  124. package/dist/multistream/remoteMediaManager.js +209 -59
  125. package/dist/multistream/remoteMediaManager.js.map +1 -1
  126. package/dist/reachability/index.js +81 -30
  127. package/dist/reachability/index.js.map +1 -1
  128. package/dist/reachability/request.js +16 -7
  129. package/dist/reachability/request.js.map +1 -1
  130. package/dist/reconnection-manager/index.js +199 -154
  131. package/dist/reconnection-manager/index.js.map +1 -1
  132. package/dist/recording-controller/index.js +21 -2
  133. package/dist/recording-controller/index.js.map +1 -1
  134. package/dist/recording-controller/util.js +9 -8
  135. package/dist/recording-controller/util.js.map +1 -1
  136. package/dist/roap/index.js +23 -29
  137. package/dist/roap/index.js.map +1 -1
  138. package/dist/roap/request.js +112 -89
  139. package/dist/roap/request.js.map +1 -1
  140. package/dist/roap/turnDiscovery.js +96 -36
  141. package/dist/roap/turnDiscovery.js.map +1 -1
  142. package/dist/rtcMetrics/constants.js +12 -0
  143. package/dist/rtcMetrics/constants.js.map +1 -0
  144. package/dist/rtcMetrics/index.js +117 -0
  145. package/dist/rtcMetrics/index.js.map +1 -0
  146. package/dist/statsAnalyzer/index.js +51 -34
  147. package/dist/statsAnalyzer/index.js.map +1 -1
  148. package/dist/statsAnalyzer/mqaUtil.js +6 -6
  149. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  150. package/dist/types/annotation/annotation.types.d.ts +42 -0
  151. package/dist/types/annotation/constants.d.ts +31 -0
  152. package/dist/types/annotation/index.d.ts +117 -0
  153. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  154. package/dist/types/breakouts/events.d.ts +8 -0
  155. package/dist/types/breakouts/request.d.ts +22 -0
  156. package/dist/types/breakouts/utils.d.ts +15 -0
  157. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  158. package/dist/types/common/queue.d.ts +9 -7
  159. package/dist/types/config.d.ts +1 -6
  160. package/dist/types/constants.d.ts +155 -21
  161. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  162. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  163. package/dist/types/controls-options-manager/index.d.ts +136 -0
  164. package/dist/types/controls-options-manager/types.d.ts +43 -0
  165. package/dist/types/controls-options-manager/util.d.ts +1 -0
  166. package/dist/types/index.d.ts +6 -4
  167. package/dist/types/interpretation/collection.d.ts +5 -0
  168. package/dist/types/interpretation/index.d.ts +5 -0
  169. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  170. package/dist/types/locus-info/index.d.ts +57 -4
  171. package/dist/types/locus-info/parser.d.ts +65 -6
  172. package/dist/types/media/index.d.ts +2 -0
  173. package/dist/types/media/properties.d.ts +22 -36
  174. package/dist/types/meeting/in-meeting-actions.d.ts +90 -2
  175. package/dist/types/meeting/index.d.ts +312 -492
  176. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  177. package/dist/types/meeting/muteState.d.ts +98 -22
  178. package/dist/types/meeting/request.d.ts +72 -43
  179. package/dist/types/meeting/util.d.ts +101 -1
  180. package/dist/types/meeting-info/index.d.ts +6 -1
  181. package/dist/types/meeting-info/meeting-info-v2.d.ts +30 -1
  182. package/dist/types/meetings/collection.d.ts +8 -0
  183. package/dist/types/meetings/index.d.ts +76 -12
  184. package/dist/types/meetings/meetings.types.d.ts +4 -0
  185. package/dist/types/member/index.d.ts +13 -0
  186. package/dist/types/member/types.d.ts +32 -0
  187. package/dist/types/members/collection.d.ts +5 -0
  188. package/dist/types/members/index.d.ts +35 -2
  189. package/dist/types/members/request.d.ts +73 -9
  190. package/dist/types/members/types.d.ts +24 -0
  191. package/dist/types/members/util.d.ts +209 -1
  192. package/dist/types/metrics/constants.d.ts +5 -4
  193. package/dist/types/metrics/index.d.ts +4 -119
  194. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  195. package/dist/types/multistream/receiveSlot.d.ts +16 -12
  196. package/dist/types/multistream/receiveSlotManager.d.ts +19 -4
  197. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  198. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  199. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  200. package/dist/types/reachability/index.d.ts +15 -3
  201. package/dist/types/reachability/request.d.ts +7 -3
  202. package/dist/types/reconnection-manager/index.d.ts +9 -0
  203. package/dist/types/recording-controller/index.d.ts +15 -1
  204. package/dist/types/recording-controller/util.d.ts +5 -4
  205. package/dist/types/roap/request.d.ts +15 -11
  206. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  207. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  208. package/dist/types/rtcMetrics/index.d.ts +47 -0
  209. package/dist/types/statsAnalyzer/index.d.ts +6 -1
  210. package/package.json +23 -20
  211. package/src/annotation/annotation.types.ts +50 -0
  212. package/src/annotation/constants.ts +36 -0
  213. package/src/annotation/index.ts +328 -0
  214. package/src/breakouts/README.md +44 -14
  215. package/src/breakouts/breakout.ts +87 -9
  216. package/src/breakouts/edit-lock-error.ts +25 -0
  217. package/src/breakouts/events.ts +56 -0
  218. package/src/breakouts/index.ts +710 -10
  219. package/src/breakouts/request.ts +55 -0
  220. package/src/breakouts/utils.ts +57 -0
  221. package/src/common/errors/webex-errors.ts +27 -2
  222. package/src/common/logs/logger-proxy.ts +1 -1
  223. package/src/common/queue.ts +22 -8
  224. package/src/config.ts +4 -9
  225. package/src/constants.ts +176 -18
  226. package/src/controls-options-manager/constants.ts +5 -0
  227. package/src/controls-options-manager/enums.ts +18 -0
  228. package/src/controls-options-manager/index.ts +278 -0
  229. package/src/controls-options-manager/types.ts +59 -0
  230. package/src/controls-options-manager/util.ts +300 -0
  231. package/src/index.ts +39 -0
  232. package/src/interpretation/README.md +60 -0
  233. package/src/interpretation/collection.ts +19 -0
  234. package/src/interpretation/index.ts +332 -0
  235. package/src/interpretation/siLanguage.ts +18 -0
  236. package/src/locus-info/controlsUtils.ts +108 -0
  237. package/src/locus-info/index.ts +412 -59
  238. package/src/locus-info/infoUtils.ts +10 -2
  239. package/src/locus-info/mediaSharesUtils.ts +48 -0
  240. package/src/locus-info/parser.ts +231 -39
  241. package/src/locus-info/selfUtils.ts +81 -5
  242. package/src/media/index.ts +89 -109
  243. package/src/media/properties.ts +48 -87
  244. package/src/meeting/in-meeting-actions.ts +179 -3
  245. package/src/meeting/index.ts +2111 -2143
  246. package/src/meeting/locusMediaRequest.ts +313 -0
  247. package/src/meeting/muteState.ts +227 -130
  248. package/src/meeting/request.ts +172 -121
  249. package/src/meeting/util.ts +588 -395
  250. package/src/meeting-info/index.ts +54 -8
  251. package/src/meeting-info/meeting-info-v2.ts +148 -14
  252. package/src/meeting-info/util.ts +1 -1
  253. package/src/meeting-info/utilv2.ts +23 -23
  254. package/src/meetings/collection.ts +20 -0
  255. package/src/meetings/index.ts +407 -108
  256. package/src/meetings/meetings.types.ts +12 -0
  257. package/src/meetings/request.ts +2 -0
  258. package/src/meetings/util.ts +103 -4
  259. package/src/member/index.ts +49 -0
  260. package/src/member/types.ts +38 -0
  261. package/src/member/util.ts +127 -25
  262. package/src/members/collection.ts +8 -0
  263. package/src/members/index.ts +107 -6
  264. package/src/members/request.ts +97 -17
  265. package/src/members/types.ts +28 -0
  266. package/src/members/util.ts +319 -240
  267. package/src/metrics/constants.ts +5 -4
  268. package/src/metrics/index.ts +1 -490
  269. package/src/multistream/mediaRequestManager.ts +289 -79
  270. package/src/multistream/receiveSlot.ts +55 -18
  271. package/src/multistream/receiveSlotManager.ts +46 -24
  272. package/src/multistream/remoteMedia.ts +27 -2
  273. package/src/multistream/remoteMediaGroup.ts +59 -0
  274. package/src/multistream/remoteMediaManager.ts +148 -30
  275. package/src/reachability/index.ts +69 -17
  276. package/src/reachability/request.ts +16 -7
  277. package/src/reconnection-manager/index.ts +81 -54
  278. package/src/recording-controller/index.ts +20 -3
  279. package/src/recording-controller/util.ts +26 -9
  280. package/src/roap/index.ts +23 -30
  281. package/src/roap/request.ts +104 -95
  282. package/src/roap/turnDiscovery.ts +50 -25
  283. package/src/rtcMetrics/constants.ts +3 -0
  284. package/src/rtcMetrics/index.ts +100 -0
  285. package/src/statsAnalyzer/index.ts +73 -35
  286. package/src/statsAnalyzer/mqaUtil.ts +8 -10
  287. package/test/integration/spec/converged-space-meetings.js +233 -0
  288. package/test/integration/spec/journey.js +336 -259
  289. package/test/integration/spec/space-meeting.js +76 -3
  290. package/test/unit/spec/annotation/index.ts +418 -0
  291. package/test/unit/spec/breakouts/breakout.ts +142 -24
  292. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  293. package/test/unit/spec/breakouts/events.ts +89 -0
  294. package/test/unit/spec/breakouts/index.ts +1545 -48
  295. package/test/unit/spec/breakouts/request.ts +104 -0
  296. package/test/unit/spec/breakouts/utils.js +72 -0
  297. package/test/unit/spec/common/queue.js +31 -2
  298. package/test/unit/spec/controls-options-manager/index.js +287 -0
  299. package/test/unit/spec/controls-options-manager/util.js +582 -0
  300. package/test/unit/spec/fixture/locus.js +1 -0
  301. package/test/unit/spec/interpretation/collection.ts +15 -0
  302. package/test/unit/spec/interpretation/index.ts +589 -0
  303. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  304. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  305. package/test/unit/spec/locus-info/index.js +1283 -33
  306. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  307. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  308. package/test/unit/spec/locus-info/parser.js +62 -22
  309. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  310. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  311. package/test/unit/spec/media/index.ts +138 -28
  312. package/test/unit/spec/meeting/in-meeting-actions.ts +89 -3
  313. package/test/unit/spec/meeting/index.js +3576 -1748
  314. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  315. package/test/unit/spec/meeting/muteState.js +370 -208
  316. package/test/unit/spec/meeting/request.js +440 -45
  317. package/test/unit/spec/meeting/utils.js +671 -54
  318. package/test/unit/spec/meeting-info/index.js +181 -0
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  320. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  321. package/test/unit/spec/meetings/collection.js +14 -0
  322. package/test/unit/spec/meetings/index.js +939 -150
  323. package/test/unit/spec/meetings/utils.js +206 -2
  324. package/test/unit/spec/member/index.js +58 -4
  325. package/test/unit/spec/member/util.js +479 -35
  326. package/test/unit/spec/members/index.js +319 -1
  327. package/test/unit/spec/members/request.js +206 -27
  328. package/test/unit/spec/members/utils.js +184 -0
  329. package/test/unit/spec/metrics/index.js +1 -50
  330. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  331. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  332. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  333. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  334. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  335. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  336. package/test/unit/spec/reachability/index.ts +185 -7
  337. package/test/unit/spec/reachability/request.js +68 -0
  338. package/test/unit/spec/reconnection-manager/index.js +80 -6
  339. package/test/unit/spec/recording-controller/index.js +294 -218
  340. package/test/unit/spec/recording-controller/util.js +223 -96
  341. package/test/unit/spec/roap/index.ts +31 -51
  342. package/test/unit/spec/roap/request.ts +202 -85
  343. package/test/unit/spec/roap/turnDiscovery.ts +45 -10
  344. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  345. package/test/unit/spec/stats-analyzer/index.js +29 -2
  346. package/test/utils/constants.js +9 -0
  347. package/test/utils/integrationTestUtils.js +46 -0
  348. package/test/utils/testUtils.js +0 -45
  349. package/test/utils/webex-config.js +4 -0
  350. package/test/utils/webex-test-users.js +6 -3
  351. package/dist/meeting/effectsState.js +0 -262
  352. package/dist/meeting/effectsState.js.map +0 -1
  353. package/dist/metrics/config.js +0 -299
  354. package/dist/metrics/config.js.map +0 -1
  355. package/dist/types/meeting/effectsState.d.ts +0 -42
  356. package/dist/types/metrics/config.d.ts +0 -178
  357. package/src/index.js +0 -16
  358. package/src/meeting/effectsState.ts +0 -211
  359. package/src/metrics/config.ts +0 -495
  360. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -41,6 +41,12 @@ The following are methods available to attendees of a meeting:
41
41
  ```javascript
42
42
  // Join a breakout
43
43
  // This can be used when the participant is in the main session or in a different breakout session
44
+ // when call join function, should send message to metrics
45
+ /* Breakout Sessions created during meetings allow participants to move into smaller breakout sessions and then
46
+ return to the main meeting at a later time. These moves can be initiated by the user or by the meeting
47
+ host/co-host. The goal of this metric is to track these moves in production by instrumenting them for
48
+ analysis from the end user's experience perspective.
49
+ */
44
50
  breakout.join();
45
51
 
46
52
  // Leave a breakout
@@ -107,10 +113,6 @@ note: None of these are currently implemented
107
113
  // Move a participant to breakout
108
114
  breakout.move(participant)
109
115
 
110
- // Assign a particpant to a breakout
111
- // Not sure whether there is any difference from move
112
- breakout.assign(participant)
113
-
114
116
  // Remove someone from a breakout session
115
117
  // This returns them to the main session
116
118
  breakout.remove(participant)
@@ -119,21 +121,49 @@ breakout.remove(participant)
119
121
  // This can only be done when breakouts are inactive
120
122
  breakout.delete()
121
123
 
122
- // Create a breakout session
123
- breakouts.create(sessionName)
124
+ /*
125
+ Create breakout sessions, Type is array
126
+ Format: [{'name':'session1', "anyoneCanJoin" : true}]
127
+ */
128
+ breakouts.create(sessions)
129
+
130
+ // Delete all breakout sessions
131
+ breakouts.clearSessions()
132
+
133
+ // update breakout session with params
134
+ // if unlockEdit is true, will release lock editing after update finish
135
+ breakout.update(params, unlockEdit)
136
+
137
+ // Start breakout sessions with necessary params
138
+ breakouts.start(params)
124
139
 
125
- // Rename an existing breakout session
126
- breakout.rename(newSessionName)
140
+ // Assign a particpant/participants to breakouts/a breakout
141
+ // sessions should be like: [{id:'xx',memberIds:['111'],emails:['111@ss.com',anyone: true]},...]
142
+ breakouts.assign(sessions)
127
143
 
128
- // Start breakout sessions
129
- breakouts.start()
144
+ // Dynammic assign a particpant/participants to breakouts/main (not used by now)
145
+ // Admit lobby waiting participants to a breakout directly
146
+ // sessions should be like: [{id:'xx',participants:['111'],targetState:'JOINED'},...]
147
+ breakouts.dynamicAssign(sessions)
130
148
 
131
- // End breakout sessions
132
- breakouts.end()
149
+ // End breakout sessions with necessary params
150
+ breakouts.end(params)
151
+
152
+ // get breakout sessions with/without param editlock
153
+ breakouts.getBreakout(editlock?)
133
154
 
134
155
  // Enable breakout sessions
135
156
  breakouts.enable()
136
157
 
158
+ // Enable and lock breakout
159
+ breakouts.enableAndLockBreakout()
160
+
161
+ // Lock breakout
162
+ breakouts.lockBreakout()
163
+
164
+ // Unlock breakout
165
+ breakouts.unLockEditBreakout()
166
+
137
167
  // Disable breakout sessions
138
168
  breakouts.disable()
139
169
 
@@ -141,11 +171,11 @@ breakouts.disable()
141
171
  breakouts.askAllToReturn()
142
172
 
143
173
  // Send a message to a breakout session
144
- // You can determine which participant types receive the message
174
+ // You can determine which participant types receive the message, if no type set, default is to all participants
145
175
  breakout.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
146
176
 
147
177
  // Send a message to All breakout sessions
148
- // You can determine which participant types receive the message
178
+ // You can determine which participant types receive the message, if no type set, default is to all participants
149
179
  breakouts.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
150
180
 
151
181
  // When breakouts are active you can cancel the automatic end of all sessions by calling this
@@ -4,10 +4,11 @@
4
4
 
5
5
  import {WebexPlugin} from '@webex/webex-core';
6
6
 
7
- import {HTTP_VERBS, MEETINGS} from '../constants';
8
- import LocusInfo from '../locus-info';
7
+ import uuid from 'uuid';
8
+ import {_ID_, HTTP_VERBS, MEETINGS} from '../constants';
9
9
  import Members from '../members';
10
-
10
+ import BreakoutRequest from './request';
11
+ import breakoutEvent from './events';
11
12
  /**
12
13
  * @class
13
14
  */
@@ -16,6 +17,7 @@ const Breakout = WebexPlugin.extend({
16
17
 
17
18
  namespace: MEETINGS,
18
19
 
20
+ breakoutRequest: BreakoutRequest,
19
21
  props: {
20
22
  active: ['boolean', false, false], // this session is active
21
23
  allowed: ['boolean', false, false], // allowed to join this session
@@ -28,10 +30,12 @@ const Breakout = WebexPlugin.extend({
28
30
  sessionType: 'string',
29
31
  groupId: 'string',
30
32
  url: 'string', // where to send requests to
33
+ requestedLastModifiedTime: 'string',
31
34
  },
32
35
 
33
36
  derived: {
34
37
  isMain: {
38
+ cache: false, // fix issue: sometimes the derived will not change even if the deps changed
35
39
  deps: ['sessionType'],
36
40
  /**
37
41
  * If the breakout has no name, assume it is the main session
@@ -42,24 +46,47 @@ const Breakout = WebexPlugin.extend({
42
46
  },
43
47
  },
44
48
  },
45
-
49
+ /**
50
+ * initializer for the Breakout class
51
+ * @returns {void}
52
+ */
46
53
  initialize() {
47
- this.members = new Members({}, {parent: this.webex});
54
+ // @ts-ignore
55
+ this.breakoutRequest = new BreakoutRequest({webex: this.webex});
56
+ this.breakoutRosterLocus = null;
48
57
  },
49
58
 
50
59
  /**
51
60
  * Joins the breakout session
52
61
  * @returns {Promise}
53
62
  */
54
- join() {
55
- return this.request({
63
+ async join() {
64
+ const breakoutMoveId = uuid.v4();
65
+ const deviceUrl = this.webex.internal.device.url;
66
+ const {meetingId} = this.collection.parent;
67
+ const meeting = this.webex.meetings.getMeetingByType(_ID_, meetingId);
68
+ breakoutEvent.onBreakoutMoveRequest(
69
+ {currentSession: this, meeting, breakoutMoveId},
70
+ // @ts-ignore
71
+ this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics)
72
+ );
73
+ const result = await this.request({
56
74
  method: HTTP_VERBS.POST,
57
75
  uri: `${this.url}/move`,
58
76
  body: {
77
+ breakoutMoveId,
78
+ deviceUrl,
59
79
  groupId: this.groupId,
60
80
  sessionId: this.sessionId,
61
81
  },
62
82
  });
83
+ breakoutEvent.onBreakoutMoveResponse(
84
+ {currentSession: this, meeting, breakoutMoveId},
85
+ // @ts-ignore
86
+ this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics)
87
+ );
88
+
89
+ return result;
63
90
  },
64
91
 
65
92
  /**
@@ -97,14 +124,65 @@ const Breakout = WebexPlugin.extend({
97
124
  },
98
125
 
99
126
  /**
100
- * Parses the participants from the locus object
101
- * @param locus Locus object
127
+ * inits the members object
102
128
  * @returns {void}
103
129
  */
130
+ initMembers() {
131
+ const {meetingId} = this.collection.parent;
132
+ const meeting = this.webex.meetings.getMeetingByType(_ID_, meetingId);
133
+ this.members = new Members(
134
+ {
135
+ meeting,
136
+ },
137
+ {parent: this.webex}
138
+ );
139
+ },
140
+
141
+ /**
142
+ * check sequence and determine whether to update the new roster or not
143
+ * @param {Object} locus Locus object
144
+ * @returns {Boolean}
145
+ */
146
+ isNeedHandleRoster(locus: any) {
147
+ if (!this.breakoutRosterLocus?.sequence?.entries?.length || !locus?.sequence?.entries?.length) {
148
+ return true;
149
+ }
150
+ const prevSequence = this.breakoutRosterLocus.sequence.entries[0];
151
+ const currentSequence = locus.sequence.entries[0];
104
152
 
153
+ return currentSequence > prevSequence;
154
+ },
155
+ /**
156
+ * Parses the participants from the locus object
157
+ * @param {Object} locus Locus object
158
+ * @returns {void}
159
+ */
105
160
  parseRoster(locus) {
161
+ if (!this.members) {
162
+ this.initMembers();
163
+ }
164
+ if (!this.isNeedHandleRoster(locus)) {
165
+ return;
166
+ }
167
+ this.breakoutRosterLocus = locus;
106
168
  this.members.locusParticipantsUpdate(locus);
107
169
  },
170
+
171
+ /**
172
+ * Broadcast message to this breakout session's participants
173
+ * @param {String} message
174
+ * @param {Object} options
175
+ * @returns {Promise}
176
+ */
177
+ broadcast(message, options) {
178
+ return this.breakoutRequest.broadcast({
179
+ url: this.url,
180
+ message,
181
+ options,
182
+ groupId: this.groupId,
183
+ sessionId: this.sessionId,
184
+ });
185
+ },
108
186
  });
109
187
 
110
188
  export default Breakout;
@@ -0,0 +1,25 @@
1
+ import {ERROR_DICTIONARY} from '../constants';
2
+
3
+ /**
4
+ * Extended Error object to signify breakout related errors
5
+ */
6
+ export default class BreakoutEditLockedError extends Error {
7
+ code: any;
8
+ error: any;
9
+ sdkMessage: any;
10
+
11
+ /**
12
+ *
13
+ * @constructor
14
+ * @param {String} [message]
15
+ * @param {Object} [error]
16
+ */
17
+ constructor(message: string = ERROR_DICTIONARY.BREAKOUT_EDIT.MESSAGE, error: any = null) {
18
+ super(message);
19
+ this.name = ERROR_DICTIONARY.BREAKOUT_EDIT.NAME;
20
+ this.sdkMessage = ERROR_DICTIONARY.BREAKOUT_EDIT.MESSAGE;
21
+ this.error = error;
22
+ this.stack = error ? error.stack : new Error().stack;
23
+ this.code = ERROR_DICTIONARY.BREAKOUT_EDIT.CODE;
24
+ }
25
+ }
@@ -0,0 +1,56 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ import {ClientEvent} from '@webex/internal-plugin-metrics';
3
+
4
+ const breakoutEvent: {
5
+ onBreakoutMoveRequest: (eventInfo: any, submitClientEvent: any) => void;
6
+ onBreakoutMoveResponse: (eventInfo: any, submitClientEvent: any) => void;
7
+ onBreakoutJoinResponse: (eventInfo: any, submitClientEvent: any) => void;
8
+ postMoveCallAnalyzer: (
9
+ event: ClientEvent['name'],
10
+ eventInfo: any,
11
+ submitClientEvent: any
12
+ ) => void;
13
+ } = {
14
+ onBreakoutMoveRequest: (eventInfo, submitClientEvent) => {
15
+ breakoutEvent.postMoveCallAnalyzer(
16
+ 'client.breakout-session.move.request',
17
+ eventInfo,
18
+ submitClientEvent
19
+ );
20
+ },
21
+ onBreakoutMoveResponse: (eventInfo, submitClientEvent) => {
22
+ breakoutEvent.postMoveCallAnalyzer(
23
+ 'client.breakout-session.move.response',
24
+ eventInfo,
25
+ submitClientEvent
26
+ );
27
+ },
28
+ onBreakoutJoinResponse: (eventInfo, submitClientEvent) => {
29
+ breakoutEvent.postMoveCallAnalyzer(
30
+ 'client.breakout-session.join.response',
31
+ eventInfo,
32
+ submitClientEvent
33
+ );
34
+ },
35
+ postMoveCallAnalyzer: (event: ClientEvent['name'], eventInfo: any, submitClientEvent) => {
36
+ if (!eventInfo?.breakoutMoveId || !eventInfo?.meeting) {
37
+ return;
38
+ }
39
+ if (!eventInfo.meeting.meetingInfo?.enableConvergedArchitecture) {
40
+ return;
41
+ }
42
+ submitClientEvent({
43
+ name: event,
44
+ payload: {
45
+ identifiers: {
46
+ breakoutMoveId: eventInfo.breakoutMoveId,
47
+ breakoutSessionId: eventInfo?.currentSession?.sessionId,
48
+ breakoutGroupId: eventInfo?.currentSession?.groupId,
49
+ },
50
+ },
51
+ options: {meetingId: eventInfo.meeting.id},
52
+ });
53
+ },
54
+ };
55
+
56
+ export default breakoutEvent;