@webex/plugin-meetings 3.0.0-beta.26 → 3.0.0-beta.261

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 (361) 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 +196 -28
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/enums.js +14 -2
  31. package/dist/controls-options-manager/enums.js.map +1 -1
  32. package/dist/controls-options-manager/index.js +109 -15
  33. package/dist/controls-options-manager/index.js.map +1 -1
  34. package/dist/controls-options-manager/types.js +7 -0
  35. package/dist/controls-options-manager/types.js.map +1 -0
  36. package/dist/controls-options-manager/util.js +309 -18
  37. package/dist/controls-options-manager/util.js.map +1 -1
  38. package/dist/index.js +112 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/interpretation/collection.js +23 -0
  41. package/dist/interpretation/collection.js.map +1 -0
  42. package/dist/interpretation/index.js +366 -0
  43. package/dist/interpretation/index.js.map +1 -0
  44. package/dist/interpretation/siLanguage.js +25 -0
  45. package/dist/interpretation/siLanguage.js.map +1 -0
  46. package/dist/locus-info/controlsUtils.js +91 -2
  47. package/dist/locus-info/controlsUtils.js.map +1 -1
  48. package/dist/locus-info/index.js +381 -62
  49. package/dist/locus-info/index.js.map +1 -1
  50. package/dist/locus-info/infoUtils.js +7 -1
  51. package/dist/locus-info/infoUtils.js.map +1 -1
  52. package/dist/locus-info/mediaSharesUtils.js +43 -1
  53. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  54. package/dist/locus-info/parser.js +224 -63
  55. package/dist/locus-info/parser.js.map +1 -1
  56. package/dist/locus-info/selfUtils.js +89 -14
  57. package/dist/locus-info/selfUtils.js.map +1 -1
  58. package/dist/media/index.js +58 -116
  59. package/dist/media/index.js.map +1 -1
  60. package/dist/media/properties.js +60 -121
  61. package/dist/media/properties.js.map +1 -1
  62. package/dist/meeting/in-meeting-actions.js +82 -2
  63. package/dist/meeting/in-meeting-actions.js.map +1 -1
  64. package/dist/meeting/index.js +3022 -2795
  65. package/dist/meeting/index.js.map +1 -1
  66. package/dist/meeting/locusMediaRequest.js +292 -0
  67. package/dist/meeting/locusMediaRequest.js.map +1 -0
  68. package/dist/meeting/muteState.js +230 -124
  69. package/dist/meeting/muteState.js.map +1 -1
  70. package/dist/meeting/request.js +256 -196
  71. package/dist/meeting/request.js.map +1 -1
  72. package/dist/meeting/util.js +601 -417
  73. package/dist/meeting/util.js.map +1 -1
  74. package/dist/meeting-info/index.js +70 -7
  75. package/dist/meeting-info/index.js.map +1 -1
  76. package/dist/meeting-info/meeting-info-v2.js +189 -51
  77. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  78. package/dist/meeting-info/util.js +1 -1
  79. package/dist/meeting-info/util.js.map +1 -1
  80. package/dist/meeting-info/utilv2.js +36 -36
  81. package/dist/meeting-info/utilv2.js.map +1 -1
  82. package/dist/meetings/collection.js +22 -0
  83. package/dist/meetings/collection.js.map +1 -1
  84. package/dist/meetings/index.js +372 -90
  85. package/dist/meetings/index.js.map +1 -1
  86. package/dist/meetings/meetings.types.js +7 -0
  87. package/dist/meetings/meetings.types.js.map +1 -0
  88. package/dist/meetings/request.js +2 -0
  89. package/dist/meetings/request.js.map +1 -1
  90. package/dist/meetings/util.js +88 -1
  91. package/dist/meetings/util.js.map +1 -1
  92. package/dist/member/index.js +49 -0
  93. package/dist/member/index.js.map +1 -1
  94. package/dist/member/types.js +25 -0
  95. package/dist/member/types.js.map +1 -0
  96. package/dist/member/util.js +121 -25
  97. package/dist/member/util.js.map +1 -1
  98. package/dist/members/collection.js +10 -0
  99. package/dist/members/collection.js.map +1 -1
  100. package/dist/members/index.js +86 -5
  101. package/dist/members/index.js.map +1 -1
  102. package/dist/members/request.js +106 -38
  103. package/dist/members/request.js.map +1 -1
  104. package/dist/members/types.js +15 -0
  105. package/dist/members/types.js.map +1 -0
  106. package/dist/members/util.js +316 -233
  107. package/dist/members/util.js.map +1 -1
  108. package/dist/metrics/constants.js +10 -5
  109. package/dist/metrics/constants.js.map +1 -1
  110. package/dist/metrics/index.js +1 -468
  111. package/dist/metrics/index.js.map +1 -1
  112. package/dist/multistream/mediaRequestManager.js +238 -49
  113. package/dist/multistream/mediaRequestManager.js.map +1 -1
  114. package/dist/multistream/receiveSlot.js +49 -16
  115. package/dist/multistream/receiveSlot.js.map +1 -1
  116. package/dist/multistream/receiveSlotManager.js +52 -34
  117. package/dist/multistream/receiveSlotManager.js.map +1 -1
  118. package/dist/multistream/remoteMedia.js +44 -18
  119. package/dist/multistream/remoteMedia.js.map +1 -1
  120. package/dist/multistream/remoteMediaGroup.js +60 -3
  121. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  122. package/dist/multistream/remoteMediaManager.js +209 -59
  123. package/dist/multistream/remoteMediaManager.js.map +1 -1
  124. package/dist/multistream/sendSlotManager.js +233 -0
  125. package/dist/multistream/sendSlotManager.js.map +1 -0
  126. package/dist/reachability/index.js +161 -57
  127. package/dist/reachability/index.js.map +1 -1
  128. package/dist/reachability/request.js +17 -8
  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 -97
  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/enums.d.ts +11 -1
  162. package/dist/types/controls-options-manager/index.d.ts +17 -1
  163. package/dist/types/controls-options-manager/types.d.ts +43 -0
  164. package/dist/types/controls-options-manager/util.d.ts +1 -7
  165. package/dist/types/index.d.ts +6 -4
  166. package/dist/types/interpretation/collection.d.ts +5 -0
  167. package/dist/types/interpretation/index.d.ts +5 -0
  168. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  169. package/dist/types/locus-info/index.d.ts +57 -4
  170. package/dist/types/locus-info/parser.d.ts +65 -6
  171. package/dist/types/media/index.d.ts +2 -0
  172. package/dist/types/media/properties.d.ts +34 -48
  173. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  174. package/dist/types/meeting/index.d.ts +344 -506
  175. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  176. package/dist/types/meeting/muteState.d.ts +99 -23
  177. package/dist/types/meeting/request.d.ts +72 -43
  178. package/dist/types/meeting/util.d.ts +101 -1
  179. package/dist/types/meeting-info/index.d.ts +13 -1
  180. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  181. package/dist/types/meetings/collection.d.ts +8 -0
  182. package/dist/types/meetings/index.d.ts +86 -12
  183. package/dist/types/meetings/meetings.types.d.ts +4 -0
  184. package/dist/types/member/index.d.ts +13 -0
  185. package/dist/types/member/types.d.ts +32 -0
  186. package/dist/types/members/collection.d.ts +5 -0
  187. package/dist/types/members/index.d.ts +35 -2
  188. package/dist/types/members/request.d.ts +73 -9
  189. package/dist/types/members/types.d.ts +24 -0
  190. package/dist/types/members/util.d.ts +209 -1
  191. package/dist/types/metrics/constants.d.ts +9 -4
  192. package/dist/types/metrics/index.d.ts +4 -119
  193. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  194. package/dist/types/multistream/receiveSlot.d.ts +16 -12
  195. package/dist/types/multistream/receiveSlotManager.d.ts +19 -4
  196. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  197. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  198. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  199. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  200. package/dist/types/reachability/index.d.ts +44 -7
  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 +178 -18
  226. package/src/controls-options-manager/enums.ts +12 -0
  227. package/src/controls-options-manager/index.ts +116 -21
  228. package/src/controls-options-manager/types.ts +59 -0
  229. package/src/controls-options-manager/util.ts +294 -14
  230. package/src/index.ts +40 -0
  231. package/src/interpretation/README.md +60 -0
  232. package/src/interpretation/collection.ts +19 -0
  233. package/src/interpretation/index.ts +332 -0
  234. package/src/interpretation/siLanguage.ts +18 -0
  235. package/src/locus-info/controlsUtils.ts +108 -0
  236. package/src/locus-info/index.ts +412 -59
  237. package/src/locus-info/infoUtils.ts +10 -2
  238. package/src/locus-info/mediaSharesUtils.ts +48 -0
  239. package/src/locus-info/parser.ts +231 -39
  240. package/src/locus-info/selfUtils.ts +81 -5
  241. package/src/media/index.ts +100 -122
  242. package/src/media/properties.ts +70 -108
  243. package/src/meeting/in-meeting-actions.ts +163 -3
  244. package/src/meeting/index.ts +2471 -2306
  245. package/src/meeting/locusMediaRequest.ts +313 -0
  246. package/src/meeting/muteState.ts +229 -131
  247. package/src/meeting/request.ts +172 -121
  248. package/src/meeting/util.ts +588 -394
  249. package/src/meeting-info/index.ts +79 -8
  250. package/src/meeting-info/meeting-info-v2.ts +168 -14
  251. package/src/meeting-info/util.ts +1 -1
  252. package/src/meeting-info/utilv2.ts +23 -23
  253. package/src/meetings/collection.ts +20 -0
  254. package/src/meetings/index.ts +414 -108
  255. package/src/meetings/meetings.types.ts +12 -0
  256. package/src/meetings/request.ts +2 -0
  257. package/src/meetings/util.ts +103 -4
  258. package/src/member/index.ts +49 -0
  259. package/src/member/types.ts +38 -0
  260. package/src/member/util.ts +127 -25
  261. package/src/members/collection.ts +8 -0
  262. package/src/members/index.ts +107 -6
  263. package/src/members/request.ts +97 -17
  264. package/src/members/types.ts +28 -0
  265. package/src/members/util.ts +319 -240
  266. package/src/metrics/constants.ts +9 -4
  267. package/src/metrics/index.ts +1 -490
  268. package/src/multistream/mediaRequestManager.ts +289 -79
  269. package/src/multistream/receiveSlot.ts +55 -18
  270. package/src/multistream/receiveSlotManager.ts +46 -24
  271. package/src/multistream/remoteMedia.ts +27 -2
  272. package/src/multistream/remoteMediaGroup.ts +59 -0
  273. package/src/multistream/remoteMediaManager.ts +148 -30
  274. package/src/multistream/sendSlotManager.ts +170 -0
  275. package/src/reachability/index.ts +165 -37
  276. package/src/reachability/request.ts +17 -8
  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 +100 -104
  282. package/src/roap/turnDiscovery.ts +51 -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 +320 -261
  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 +163 -0
  299. package/test/unit/spec/controls-options-manager/util.js +576 -60
  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 +104 -37
  312. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  313. package/test/unit/spec/meeting/index.js +4095 -1913
  314. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  315. package/test/unit/spec/meeting/muteState.js +408 -208
  316. package/test/unit/spec/meeting/request.js +440 -45
  317. package/test/unit/spec/meeting/utils.js +679 -64
  318. package/test/unit/spec/meeting-info/index.js +293 -0
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +517 -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 +941 -151
  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/multistream/sendSlotManager.ts +242 -0
  337. package/test/unit/spec/reachability/index.ts +343 -9
  338. package/test/unit/spec/reachability/request.js +68 -0
  339. package/test/unit/spec/reconnection-manager/index.js +84 -9
  340. package/test/unit/spec/recording-controller/index.js +294 -218
  341. package/test/unit/spec/recording-controller/util.js +223 -96
  342. package/test/unit/spec/roap/index.ts +31 -51
  343. package/test/unit/spec/roap/request.ts +203 -85
  344. package/test/unit/spec/roap/turnDiscovery.ts +48 -13
  345. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  346. package/test/unit/spec/stats-analyzer/index.js +29 -2
  347. package/test/utils/constants.js +9 -0
  348. package/test/utils/integrationTestUtils.js +46 -0
  349. package/test/utils/testUtils.js +0 -45
  350. package/test/utils/webex-config.js +4 -0
  351. package/test/utils/webex-test-users.js +6 -3
  352. package/dist/meeting/effectsState.js +0 -262
  353. package/dist/meeting/effectsState.js.map +0 -1
  354. package/dist/metrics/config.js +0 -299
  355. package/dist/metrics/config.js.map +0 -1
  356. package/dist/types/meeting/effectsState.d.ts +0 -42
  357. package/dist/types/metrics/config.d.ts +0 -178
  358. package/src/index.js +0 -16
  359. package/src/meeting/effectsState.ts +0 -211
  360. package/src/metrics/config.ts +0 -495
  361. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -1,12 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
3
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
9
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
10
  _Object$defineProperty(exports, "__esModule", {
6
11
  value: true
7
12
  });
8
13
  exports.default = void 0;
14
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
9
15
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
16
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
17
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
10
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
11
19
  var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
12
20
  var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
@@ -15,15 +23,17 @@ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy")
15
23
  var _constants = require("../constants");
16
24
  var _breakout = _interopRequireDefault(require("./breakout"));
17
25
  var _collection = _interopRequireDefault(require("./collection"));
18
- /*!
19
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
20
- */
21
-
26
+ var _request = _interopRequireDefault(require("./request"));
27
+ var _events = _interopRequireDefault(require("./events"));
28
+ var _utils = require("./utils");
29
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
22
31
  /**
23
32
  * @class Breakouts
24
33
  */
25
34
  var Breakouts = _webexCore.WebexPlugin.extend({
26
35
  namespace: _constants.MEETINGS,
36
+ breakoutRequest: _request.default,
27
37
  collections: {
28
38
  breakouts: _collection.default
29
39
  },
@@ -34,6 +44,8 @@ var Breakouts = _webexCore.WebexPlugin.extend({
34
44
  // appears once breakouts start
35
45
  enableBreakoutSession: 'boolean',
36
46
  // appears from the moment you enable breakouts
47
+ hasBreakoutPreAssignments: 'boolean',
48
+ // appears from the moment you enable breakouts
37
49
  groupId: 'string',
38
50
  // appears from the moment you enable breakouts
39
51
  name: 'string',
@@ -48,7 +60,23 @@ var Breakouts = _webexCore.WebexPlugin.extend({
48
60
  // only present when in a breakout session
49
61
  url: 'string',
50
62
  // appears from the moment you enable breakouts
51
- locusUrl: 'string' // the current locus url
63
+ locusUrl: 'string',
64
+ // the current locus url
65
+ breakoutServiceUrl: 'string',
66
+ // the current breakout resource url
67
+ mainLocusUrl: 'string',
68
+ // the locus url of the main session
69
+ groups: 'array',
70
+ // appears when create breakouts
71
+ manageGroups: 'array',
72
+ // appears when manage breakouts
73
+ preAssignments: 'array',
74
+ // appears when getPreAssignments info hasBreakoutPreAssignments = true
75
+ editLock: 'object',
76
+ // appears when getBreakout info editlock = true
77
+ intervalID: 'number',
78
+ meetingId: 'string',
79
+ canManageBreakouts: 'boolean' // appear the ability to manage breakouts
52
80
  },
53
81
 
54
82
  children: {
@@ -56,6 +84,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
56
84
  },
57
85
  derived: {
58
86
  isInMainSession: {
87
+ cache: false,
59
88
  deps: ['sessionType'],
60
89
  /**
61
90
  * Returns true if the user is in the main session
@@ -64,6 +93,56 @@ var Breakouts = _webexCore.WebexPlugin.extend({
64
93
  fn: function fn() {
65
94
  return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
66
95
  }
96
+ },
97
+ isActiveBreakout: {
98
+ cache: false,
99
+ // fix issue: sometimes the derived will not change even if the deps changed
100
+ deps: ['sessionType', 'status'],
101
+ /**
102
+ * Returns true if the breakout status is active
103
+ * @returns {boolean}
104
+ */
105
+ fn: function fn() {
106
+ return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT && (this.status === _constants.BREAKOUTS.STATUS.OPEN || this.status === _constants.BREAKOUTS.STATUS.CLOSING);
107
+ }
108
+ },
109
+ breakoutGroupId: {
110
+ cache: false,
111
+ deps: ['manageGroups'],
112
+ /**
113
+ * Returns the active group id
114
+ * @returns {boolean}
115
+ */
116
+ fn: function fn() {
117
+ var _this$manageGroups;
118
+ if ((_this$manageGroups = this.manageGroups) !== null && _this$manageGroups !== void 0 && _this$manageGroups.length) {
119
+ return this.manageGroups[0].status !== _constants.BREAKOUTS.STATUS.CLOSED ? this.manageGroups[0].id : '';
120
+ }
121
+ return '';
122
+ }
123
+ },
124
+ breakoutStatus: {
125
+ cache: true,
126
+ deps: ['isInMainSession', 'status', 'groups'],
127
+ /**
128
+ * Returns the breakout status
129
+ * @returns {boolean}
130
+ */
131
+ fn: function fn() {
132
+ var _this$groups, _this$groups$;
133
+ return this.isInMainSession ? (_this$groups = this.groups) === null || _this$groups === void 0 ? void 0 : (_this$groups$ = _this$groups[0]) === null || _this$groups$ === void 0 ? void 0 : _this$groups$.status : this.status;
134
+ }
135
+ },
136
+ shouldQueryPreAssignments: {
137
+ cache: false,
138
+ deps: ['canManageBreakouts', 'enableBreakoutSession', 'hasBreakoutPreAssignments'],
139
+ /**
140
+ * Returns should query preAssignments or not
141
+ * @returns {boolean}
142
+ */
143
+ fn: function fn() {
144
+ return !!(this.canManageBreakouts && this.enableBreakoutSession && this.hasBreakoutPreAssignments);
145
+ }
67
146
  }
68
147
  },
69
148
  /**
@@ -72,20 +151,35 @@ var Breakouts = _webexCore.WebexPlugin.extend({
72
151
  */
73
152
  initialize: function initialize() {
74
153
  var _this = this;
75
- this.listenTo(this, 'change:status', function () {
76
- if (_this.status === _constants.BREAKOUTS.STATUS.CLOSING) {
154
+ this.listenTo(this, 'change:breakoutStatus', function () {
155
+ if (_this.breakoutStatus === _constants.BREAKOUTS.STATUS.CLOSING) {
77
156
  _this.trigger(_constants.BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);
78
157
  }
79
158
  });
159
+ this.listenTo(this, 'change:shouldQueryPreAssignments', function () {
160
+ if (_this.shouldQueryPreAssignments && !_this.preAssignments) {
161
+ _this.queryPreAssignments();
162
+ }
163
+ });
80
164
  this.debouncedQueryRosters = (0, _debounce2.default)(this.queryRosters, 10, {
81
165
  leading: true,
82
166
  trailing: false
83
167
  });
84
- this.listenTo(this.breakouts, 'add', function () {
168
+ this.listenTo(this.breakouts, 'add', function (breakout) {
85
169
  _this.debouncedQueryRosters();
170
+ _this.triggerReturnToMainEvent(breakout);
171
+ });
172
+ this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', function (breakout) {
173
+ _this.triggerReturnToMainEvent(breakout);
86
174
  });
175
+ this.listenToCurrentSessionTypeChange();
87
176
  this.listenToBroadcastMessages();
88
177
  this.listenToBreakoutRosters();
178
+ this.listenToBreakoutHelp();
179
+ // @ts-ignore
180
+ this.breakoutRequest = new _request.default({
181
+ webex: this.webex
182
+ });
89
183
  },
90
184
  /**
91
185
  * Calls this to clean up listeners
@@ -101,6 +195,27 @@ var Breakouts = _webexCore.WebexPlugin.extend({
101
195
  */
102
196
  locusUrlUpdate: function locusUrlUpdate(locusUrl) {
103
197
  this.set('locusUrl', locusUrl);
198
+ var isInMainSession = this.isInMainSession,
199
+ mainLocusUrl = this.mainLocusUrl;
200
+ if (isInMainSession || !mainLocusUrl) {
201
+ this.set('mainLocusUrl', locusUrl);
202
+ }
203
+ },
204
+ /**
205
+ * Update whether self is moderator/cohost or not
206
+ * @param {boolean} canManageBreakouts
207
+ * @returns {void}
208
+ */
209
+ updateCanManageBreakouts: function updateCanManageBreakouts(canManageBreakouts) {
210
+ this.set('canManageBreakouts', canManageBreakouts);
211
+ },
212
+ /**
213
+ * Update the current breakout resource url
214
+ * @param {string} breakoutServiceUrl
215
+ * @returns {void}
216
+ */
217
+ breakoutServiceUrlUpdate: function breakoutServiceUrlUpdate(breakoutServiceUrl) {
218
+ this.set('breakoutServiceUrl', "".concat(breakoutServiceUrl, "/breakout/"));
104
219
  },
105
220
  /**
106
221
  * The initial roster lists need to be queried because you don't
@@ -116,7 +231,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
116
231
  }
117
232
  }).then(function (result) {
118
233
  var rosters = result.body.rosters;
119
- rosters.forEach(function (_ref) {
234
+ rosters === null || rosters === void 0 ? void 0 : rosters.forEach(function (_ref) {
120
235
  var locus = _ref.locus;
121
236
  _this2.handleRosterUpdate(locus);
122
237
  });
@@ -139,25 +254,37 @@ var Breakouts = _webexCore.WebexPlugin.extend({
139
254
  }
140
255
  session.parseRoster(locus);
141
256
  },
257
+ /**
258
+ *Sets up listener for currentBreakoutSession sessionType changed
259
+ * @returns {void}
260
+ */
261
+ listenToCurrentSessionTypeChange: function listenToCurrentSessionTypeChange() {
262
+ var _this3 = this;
263
+ this.listenTo(this.currentBreakoutSession, 'change:sessionType', function (currentBreakoutSession, sessionType) {
264
+ if ((0, _utils.isSessionTypeChangedFromSessionToMain)(currentBreakoutSession, sessionType)) {
265
+ _this3.trigger(_constants.BREAKOUTS.EVENTS.LEAVE_BREAKOUT);
266
+ }
267
+ });
268
+ },
142
269
  /**
143
270
  * Sets up listener for broadcast messages sent to the breakout session
144
271
  * @returns {void}
145
272
  */
146
273
  listenToBroadcastMessages: function listenToBroadcastMessages() {
147
- var _this3 = this;
274
+ var _this4 = this;
148
275
  this.listenTo(this.webex.internal.llm, 'event:breakout.message', function (event) {
149
276
  var _event$data = event.data,
150
277
  senderUserId = _event$data.senderUserId,
151
278
  sentTime = _event$data.sentTime,
152
279
  message = _event$data.message;
153
- _this3.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
280
+ _this4.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
154
281
  senderUserId: senderUserId,
155
282
  sentTime: sentTime,
156
283
  message: message,
157
284
  // FIXME: This is only the current sessionId
158
285
  // We'd need to check that the dataChannelUrl is still the same
159
286
  // to guarantee that this message was sent to this session
160
- sessionId: _this3.currentBreakoutSession.sessionId
287
+ sessionId: _this4.currentBreakoutSession.sessionId
161
288
  });
162
289
  });
163
290
  },
@@ -166,12 +293,45 @@ var Breakouts = _webexCore.WebexPlugin.extend({
166
293
  * @returns {void}
167
294
  */
168
295
  listenToBreakoutRosters: function listenToBreakoutRosters() {
169
- var _this4 = this;
296
+ var _this5 = this;
170
297
  this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', function (event) {
171
- _this4.handleRosterUpdate(event.data.locus);
172
- _this4.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
298
+ _this5.handleRosterUpdate(event.data.locus);
299
+ _this5.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
173
300
  });
174
301
  },
302
+ /**
303
+ * Sets up a listener for ask help notify from mecury
304
+ * @returns {void}
305
+ */
306
+ listenToBreakoutHelp: function listenToBreakoutHelp() {
307
+ var _this6 = this;
308
+ this.listenTo(this.webex.internal.mercury, 'event:breakout.help', function (event) {
309
+ var _event$data2 = event.data,
310
+ participant = _event$data2.participant,
311
+ sessionId = _event$data2.sessionId;
312
+ _this6.trigger(_constants.BREAKOUTS.EVENTS.ASK_FOR_HELP, {
313
+ participant: participant,
314
+ sessionId: sessionId
315
+ });
316
+ });
317
+ },
318
+ /**
319
+ * get current breakout is in progress or not
320
+ * @returns {boolean}
321
+ */
322
+ isBreakoutInProgress: function isBreakoutInProgress() {
323
+ var _this$groups2, _this$groups2$;
324
+ var currentStatus = ((_this$groups2 = this.groups) === null || _this$groups2 === void 0 ? void 0 : (_this$groups2$ = _this$groups2[0]) === null || _this$groups2$ === void 0 ? void 0 : _this$groups2$.status) || this.status;
325
+ return currentStatus === _constants.BREAKOUTS.STATUS.OPEN || currentStatus === _constants.BREAKOUTS.STATUS.CLOSING;
326
+ },
327
+ /**
328
+ * get current breakout is in closing or not
329
+ * @returns {boolean}
330
+ */
331
+ isBreakoutIClosing: function isBreakoutIClosing() {
332
+ var _this$groups3, _this$groups3$;
333
+ return (((_this$groups3 = this.groups) === null || _this$groups3 === void 0 ? void 0 : (_this$groups3$ = _this$groups3[0]) === null || _this$groups3$ === void 0 ? void 0 : _this$groups3$.status) || this.status) === _constants.BREAKOUTS.STATUS.CLOSING;
334
+ },
175
335
  /**
176
336
  * Updates the information about the current breakout
177
337
  * @param {Object} params
@@ -180,6 +340,10 @@ var Breakouts = _webexCore.WebexPlugin.extend({
180
340
  updateBreakout: function updateBreakout(params) {
181
341
  var _this$set;
182
342
  this.set(params);
343
+ // These values are set manually so they are unset when they are not included in params
344
+ this.set('groups', params.groups);
345
+ this.set('startTime', params.startTime);
346
+ this.set('status', params.status);
183
347
  this.set('currentBreakoutSession', (_this$set = {
184
348
  sessionId: params.sessionId,
185
349
  groupId: params.groupId,
@@ -187,7 +351,21 @@ var Breakouts = _webexCore.WebexPlugin.extend({
187
351
  current: true,
188
352
  sessionType: params.sessionType,
189
353
  url: params.url
190
- }, (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ACTIVE, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.REQUESTED, false), _this$set));
354
+ }, (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ACTIVE, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.REQUESTED, false), _this$set));
355
+ if (!this.isBreakoutInProgress()) {
356
+ this.clearBreakouts();
357
+ }
358
+ if (this.currentBreakoutSession.previous('sessionId') !== this.currentBreakoutSession.sessionId || this.currentBreakoutSession.previous('groupId') !== this.currentBreakoutSession.groupId) {
359
+ // should report joined session changed
360
+ var meeting = this.webex.meetings.getMeetingByType(_constants._ID_, this.meetingId);
361
+ _events.default.onBreakoutJoinResponse({
362
+ currentSession: this.currentBreakoutSession,
363
+ meeting: meeting,
364
+ breakoutMoveId: params.breakoutMoveId
365
+ },
366
+ // @ts-ignore
367
+ this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics));
368
+ }
191
369
  },
192
370
  /**
193
371
  * Updates the information about available breakouts
@@ -195,8 +373,14 @@ var Breakouts = _webexCore.WebexPlugin.extend({
195
373
  * @returns {void}
196
374
  */
197
375
  updateBreakoutSessions: function updateBreakoutSessions(payload) {
198
- var _this5 = this;
376
+ var _this7 = this;
199
377
  var breakouts = {};
378
+ if (this.isBreakoutIClosing()) {
379
+ // fix issue: don't clear/update breakouts collection when in closing since locus DTO will send undefined or
380
+ // only the MAIN session info here, if just update it, will miss the breakout roster info during
381
+ // count down to end breakouts
382
+ return;
383
+ }
200
384
  if (payload.breakoutSessions) {
201
385
  (0, _forEach2.default)(_constants.BREAKOUTS.SESSION_STATES, function (state) {
202
386
  (0, _forEach2.default)(payload.breakoutSessions[state], function (breakout) {
@@ -210,16 +394,654 @@ var Breakouts = _webexCore.WebexPlugin.extend({
210
394
  breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.REQUESTED] = false;
211
395
  }
212
396
  breakouts[sessionId][state] = true;
397
+ if (state === _constants.BREAKOUTS.SESSION_STATES.REQUESTED) {
398
+ breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;
399
+ }
213
400
  });
214
401
  });
215
402
  }
216
403
  (0, _forEach2.default)(breakouts, function (breakout) {
217
404
  // eslint-disable-next-line no-param-reassign
218
- breakout.url = _this5.url;
405
+ breakout.url = _this7.url;
219
406
  });
220
407
  this.breakouts.set((0, _values.default)(breakouts));
221
408
  },
222
- version: "3.0.0-beta.26"
409
+ /**
410
+ * clear breakouts collection
411
+ * @returns {void}
412
+ */
413
+ clearBreakouts: function clearBreakouts() {
414
+ if (this.breakouts.length > 0) {
415
+ this.breakouts.reset();
416
+ }
417
+ },
418
+ /**
419
+ * get main session
420
+ * @returns {Breakout}
421
+ */
422
+ getMainSession: function getMainSession() {
423
+ if (this.isInMainSession) {
424
+ return this.currentBreakoutSession;
425
+ }
426
+ var mainSession = this.breakouts.filter(function (breakout) {
427
+ return breakout.isMain;
428
+ })[0];
429
+ if (!mainSession) {
430
+ throw new Error('no main session found');
431
+ }
432
+ return mainSession;
433
+ },
434
+ /**
435
+ * Host/CoHost ask all participants return to main session
436
+ * @returns {Promise}
437
+ */
438
+ askAllToReturn: function askAllToReturn() {
439
+ var mainSession = this.getMainSession();
440
+ return this.webex.request({
441
+ method: _constants.HTTP_VERBS.POST,
442
+ uri: "".concat(this.url, "/requestMove"),
443
+ body: {
444
+ groupId: mainSession.groupId,
445
+ sessionId: mainSession.sessionId
446
+ }
447
+ });
448
+ },
449
+ /**
450
+ * Broadcast message to all breakout session's participants
451
+ * @param {String} message
452
+ * @param {Object} options
453
+ * @returns {Promise}
454
+ */
455
+ broadcast: function broadcast(message, options) {
456
+ var breakoutGroupId = this.breakoutGroupId;
457
+ if (!breakoutGroupId) {
458
+ throw new Error('Cannot broadcast, no breakout session found');
459
+ }
460
+ return this.breakoutRequest.broadcast({
461
+ url: this.url,
462
+ message: message,
463
+ options: options,
464
+ groupId: breakoutGroupId
465
+ });
466
+ },
467
+ /**
468
+ * Make enable breakout resource
469
+ * @returns {Promise}
470
+ */
471
+ enableBreakouts: function enableBreakouts() {
472
+ if (this.breakoutServiceUrl) {
473
+ // @ts-ignore
474
+ return this.webex.request({
475
+ method: _constants.HTTP_VERBS.POST,
476
+ uri: this.breakoutServiceUrl,
477
+ body: {
478
+ locusUrl: this.locusUrl
479
+ }
480
+ }).catch(function (err) {
481
+ _loggerProxy.default.logger.error("Meeting:request#touchBreakout --> Error provisioning error ".concat(err));
482
+ throw err;
483
+ });
484
+ }
485
+ return _promise.default.reject(new Error("enableBreakouts: the breakoutServiceUrl is empty"));
486
+ },
487
+ /**
488
+ * Make the meeting enable or disable breakout session
489
+ * @param {boolean} enable
490
+ * @returns {Promise}
491
+ */
492
+ toggleBreakout: function toggleBreakout(enable) {
493
+ var _this8 = this;
494
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
495
+ var info;
496
+ return _regenerator.default.wrap(function _callee$(_context) {
497
+ while (1) switch (_context.prev = _context.next) {
498
+ case 0:
499
+ if (!(_this8.enableBreakoutSession === undefined)) {
500
+ _context.next = 10;
501
+ break;
502
+ }
503
+ _context.next = 3;
504
+ return _this8.enableBreakouts();
505
+ case 3:
506
+ info = _context.sent;
507
+ // first time enable, set the initial data
508
+ _this8.updateBreakout(info === null || info === void 0 ? void 0 : info.body);
509
+ if (enable) {
510
+ _context.next = 8;
511
+ break;
512
+ }
513
+ _context.next = 8;
514
+ return _this8.doToggleBreakout(enable);
515
+ case 8:
516
+ _context.next = 12;
517
+ break;
518
+ case 10:
519
+ _context.next = 12;
520
+ return _this8.doToggleBreakout(enable);
521
+ case 12:
522
+ case "end":
523
+ return _context.stop();
524
+ }
525
+ }, _callee);
526
+ }))();
527
+ },
528
+ /**
529
+ * do toggle meeting breakout session enable or disable
530
+ * @param {boolean} enable
531
+ * @returns {Promise}
532
+ */
533
+ doToggleBreakout: function doToggleBreakout(enable) {
534
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
535
+ editlock: {
536
+ token: this.editLock.token
537
+ }
538
+ } : {}), {
539
+ enableBreakoutSession: enable
540
+ });
541
+
542
+ // @ts-ignore
543
+ return this.webex.request({
544
+ method: _constants.HTTP_VERBS.PUT,
545
+ uri: this.url,
546
+ body: body
547
+ });
548
+ },
549
+ /**
550
+ * set groups to manageGroups prop
551
+ * @param {Object} breakoutInfo -- breakout groups
552
+ * @returns {void}
553
+ */
554
+ _setManageGroups: function _setManageGroups(breakoutInfo) {
555
+ var _breakoutInfo$body;
556
+ if (breakoutInfo !== null && breakoutInfo !== void 0 && (_breakoutInfo$body = breakoutInfo.body) !== null && _breakoutInfo$body !== void 0 && _breakoutInfo$body.groups) {
557
+ this.set('manageGroups', breakoutInfo.body.groups);
558
+ }
559
+ },
560
+ /**
561
+ * Create new breakout sessions
562
+ * @param {object} params -- breakout session group
563
+ * @returns {Promise}
564
+ */
565
+ create: function create(params) {
566
+ var _this9 = this;
567
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
568
+ var payload, body, breakoutInfo;
569
+ return _regenerator.default.wrap(function _callee2$(_context2) {
570
+ while (1) switch (_context2.prev = _context2.next) {
571
+ case 0:
572
+ payload = _objectSpread({}, params);
573
+ body = _objectSpread(_objectSpread({}, _this9.editLock && !!_this9.editLock.token ? {
574
+ editlock: {
575
+ token: _this9.editLock.token
576
+ }
577
+ } : {}), {
578
+ groups: [payload]
579
+ }); // @ts-ignore
580
+ _context2.next = 4;
581
+ return _this9.webex.request({
582
+ method: _constants.HTTP_VERBS.PUT,
583
+ uri: _this9.url,
584
+ body: body
585
+ }).catch(function (error) {
586
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create'));
587
+ });
588
+ case 4:
589
+ breakoutInfo = _context2.sent;
590
+ _this9._setManageGroups(breakoutInfo);
591
+
592
+ // clear edit lock info after save breakout session info
593
+ _this9._clearEditLockInfo();
594
+ return _context2.abrupt("return", breakoutInfo);
595
+ case 8:
596
+ case "end":
597
+ return _context2.stop();
598
+ }
599
+ }, _callee2);
600
+ }))();
601
+ },
602
+ /**
603
+ * Delete all breakout sessions
604
+ * @returns {Promise}
605
+ */
606
+ clearSessions: function clearSessions() {
607
+ var _this10 = this;
608
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
609
+ var body, breakoutInfo;
610
+ return _regenerator.default.wrap(function _callee3$(_context3) {
611
+ while (1) switch (_context3.prev = _context3.next) {
612
+ case 0:
613
+ body = _objectSpread(_objectSpread({}, _this10.editLock && !!_this10.editLock.token ? {
614
+ editlock: {
615
+ token: _this10.editLock.token
616
+ }
617
+ } : {}), {
618
+ groups: [{
619
+ action: _constants.BREAKOUTS.ACTION.DELETE
620
+ }]
621
+ }); // @ts-ignore
622
+ _context3.next = 3;
623
+ return _this10.webex.request({
624
+ method: _constants.HTTP_VERBS.PUT,
625
+ uri: _this10.url,
626
+ body: body
627
+ }).catch(function (error) {
628
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions'));
629
+ });
630
+ case 3:
631
+ breakoutInfo = _context3.sent;
632
+ _this10._setManageGroups(breakoutInfo);
633
+ return _context3.abrupt("return", breakoutInfo);
634
+ case 6:
635
+ case "end":
636
+ return _context3.stop();
637
+ }
638
+ }, _callee3);
639
+ }))();
640
+ },
641
+ /**
642
+ * Host or cohost starts breakout sessions
643
+ * @param {object} params
644
+ * @returns {Promise}
645
+ */
646
+ start: function start() {
647
+ var _arguments = arguments,
648
+ _this11 = this;
649
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
650
+ var params, action, payload, body, breakoutInfo;
651
+ return _regenerator.default.wrap(function _callee4$(_context4) {
652
+ while (1) switch (_context4.prev = _context4.next) {
653
+ case 0:
654
+ params = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {};
655
+ action = _constants.BREAKOUTS.ACTION.START;
656
+ payload = _objectSpread({
657
+ id: _this11.breakoutGroupId,
658
+ action: action,
659
+ allowBackToMain: false,
660
+ allowToJoinLater: false
661
+ }, params);
662
+ body = _objectSpread(_objectSpread({}, _this11.editLock && !!_this11.editLock.token ? {
663
+ editlock: {
664
+ token: _this11.editLock.token,
665
+ refresh: true
666
+ }
667
+ } : {}), {
668
+ groups: [payload]
669
+ });
670
+ _context4.next = 6;
671
+ return _this11.request({
672
+ method: _constants.HTTP_VERBS.PUT,
673
+ uri: _this11.url,
674
+ body: body
675
+ }).catch(function (error) {
676
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#start'));
677
+ });
678
+ case 6:
679
+ breakoutInfo = _context4.sent;
680
+ _this11._setManageGroups(breakoutInfo);
681
+ return _context4.abrupt("return", breakoutInfo);
682
+ case 9:
683
+ case "end":
684
+ return _context4.stop();
685
+ }
686
+ }, _callee4);
687
+ }))();
688
+ },
689
+ /**
690
+ * Host or cohost ends breakout sessions
691
+ * @param {object} params
692
+ * @returns {Promise}
693
+ */
694
+ end: function end() {
695
+ var _arguments2 = arguments,
696
+ _this12 = this;
697
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
698
+ var params, delayCloseTime, id, action, payload, body, breakoutInfo;
699
+ return _regenerator.default.wrap(function _callee5$(_context5) {
700
+ while (1) switch (_context5.prev = _context5.next) {
701
+ case 0:
702
+ params = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};
703
+ delayCloseTime = _this12.delayCloseTime, id = _this12.breakoutGroupId;
704
+ action = _constants.BREAKOUTS.ACTION.CLOSE;
705
+ payload = _objectSpread({
706
+ id: id,
707
+ action: action,
708
+ delayCloseTime: delayCloseTime
709
+ }, params);
710
+ body = _objectSpread(_objectSpread({}, _this12.editLock && !!_this12.editLock.token ? {
711
+ editlock: {
712
+ token: _this12.editLock.token,
713
+ refresh: true
714
+ }
715
+ } : {}), {
716
+ groups: [payload]
717
+ });
718
+ _context5.next = 7;
719
+ return _this12.request({
720
+ method: _constants.HTTP_VERBS.PUT,
721
+ uri: _this12.url,
722
+ body: body
723
+ }).catch(function (error) {
724
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#end'));
725
+ });
726
+ case 7:
727
+ breakoutInfo = _context5.sent;
728
+ _this12._setManageGroups(breakoutInfo);
729
+ return _context5.abrupt("return", breakoutInfo);
730
+ case 10:
731
+ case "end":
732
+ return _context5.stop();
733
+ }
734
+ }, _callee5);
735
+ }))();
736
+ },
737
+ /**
738
+ * Host or cohost update breakout sessions
739
+ * @param {Object} params
740
+ * @param {String} params.id
741
+ * @param {Boolean} unlockEdit
742
+ * @returns {Promise}
743
+ */
744
+ update: function update(params, unlockEdit) {
745
+ var _this13 = this;
746
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
747
+ var _this13$editLock;
748
+ var payload, body, breakoutInfo;
749
+ return _regenerator.default.wrap(function _callee6$(_context6) {
750
+ while (1) switch (_context6.prev = _context6.next) {
751
+ case 0:
752
+ if (params.id) {
753
+ _context6.next = 2;
754
+ break;
755
+ }
756
+ return _context6.abrupt("return", _promise.default.reject(new Error('Missing breakout group id')));
757
+ case 2:
758
+ payload = _objectSpread({}, params);
759
+ body = _objectSpread(_objectSpread({}, (_this13$editLock = _this13.editLock) !== null && _this13$editLock !== void 0 && _this13$editLock.token ? {
760
+ editlock: {
761
+ token: _this13.editLock.token,
762
+ refresh: !unlockEdit
763
+ }
764
+ } : {}), {
765
+ groups: [payload]
766
+ });
767
+ _context6.next = 6;
768
+ return _this13.request({
769
+ method: _constants.HTTP_VERBS.PUT,
770
+ uri: _this13.url,
771
+ body: body
772
+ }).catch(function (error) {
773
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#update'));
774
+ });
775
+ case 6:
776
+ breakoutInfo = _context6.sent;
777
+ if (unlockEdit) {
778
+ _this13._clearEditLockInfo();
779
+ }
780
+ _this13._setManageGroups(breakoutInfo);
781
+ return _context6.abrupt("return", breakoutInfo);
782
+ case 10:
783
+ case "end":
784
+ return _context6.stop();
785
+ }
786
+ }, _callee6);
787
+ }))();
788
+ },
789
+ /**
790
+ * get existed breakout sessions
791
+ * @param {boolean} editlock -- lock operations of the breakout sessions
792
+ * @returns {Promise}
793
+ */
794
+ getBreakout: function getBreakout(editlock) {
795
+ var _this14 = this;
796
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
797
+ var _breakout$body, _breakout$body$editlo;
798
+ var breakout;
799
+ return _regenerator.default.wrap(function _callee7$(_context7) {
800
+ while (1) switch (_context7.prev = _context7.next) {
801
+ case 0:
802
+ _context7.next = 2;
803
+ return _this14.request({
804
+ method: _constants.HTTP_VERBS.GET,
805
+ uri: _this14.url + (editlock ? "?editlock=".concat(editlock) : '')
806
+ });
807
+ case 2:
808
+ breakout = _context7.sent;
809
+ _this14._setManageGroups(breakout);
810
+ if (editlock && (_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && (_breakout$body$editlo = _breakout$body.editlock) !== null && _breakout$body$editlo !== void 0 && _breakout$body$editlo.token) {
811
+ _this14.set('editLock', breakout.body.editlock);
812
+ _this14.keepEditLockAlive();
813
+ }
814
+ return _context7.abrupt("return", breakout);
815
+ case 6:
816
+ case "end":
817
+ return _context7.stop();
818
+ }
819
+ }, _callee7);
820
+ }))();
821
+ },
822
+ /**
823
+ * enable and edit lock breakout
824
+ * @returns {void}
825
+ */
826
+ enableAndLockBreakout: function enableAndLockBreakout() {
827
+ var _this15 = this;
828
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
829
+ var info;
830
+ return _regenerator.default.wrap(function _callee8$(_context8) {
831
+ while (1) switch (_context8.prev = _context8.next) {
832
+ case 0:
833
+ if (!_this15.enableBreakoutSession) {
834
+ _context8.next = 4;
835
+ break;
836
+ }
837
+ _this15.lockBreakout();
838
+ _context8.next = 8;
839
+ break;
840
+ case 4:
841
+ _context8.next = 6;
842
+ return _this15.enableBreakouts();
843
+ case 6:
844
+ info = _context8.sent;
845
+ if (info.body) {
846
+ _this15.lockBreakout();
847
+ }
848
+ case 8:
849
+ case "end":
850
+ return _context8.stop();
851
+ }
852
+ }, _callee8);
853
+ }))();
854
+ },
855
+ /**
856
+ * breakout edit locked by yourself or not
857
+ * @returns {boolean}
858
+ */
859
+ hasBreakoutLocked: function hasBreakoutLocked() {
860
+ return this.editLock && this.editLock.token && this.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED;
861
+ },
862
+ /**
863
+ * send breakout edit lock
864
+ * @returns {void}
865
+ */
866
+ lockBreakout: function lockBreakout() {
867
+ var _this16 = this;
868
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
869
+ var _breakout$body2, breakout;
870
+ return _regenerator.default.wrap(function _callee9$(_context9) {
871
+ while (1) switch (_context9.prev = _context9.next) {
872
+ case 0:
873
+ if (!(_this16.editLock && !!_this16.editLock.token)) {
874
+ _context9.next = 8;
875
+ break;
876
+ }
877
+ if (!(_this16.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED)) {
878
+ _context9.next = 5;
879
+ break;
880
+ }
881
+ throw new Error('Breakout already locked');
882
+ case 5:
883
+ _this16.keepEditLockAlive();
884
+ case 6:
885
+ _context9.next = 12;
886
+ break;
887
+ case 8:
888
+ _context9.next = 10;
889
+ return _this16.getBreakout(true);
890
+ case 10:
891
+ breakout = _context9.sent;
892
+ if ((_breakout$body2 = breakout.body) !== null && _breakout$body2 !== void 0 && _breakout$body2.editlock) {
893
+ _this16.keepEditLockAlive();
894
+ }
895
+ case 12:
896
+ case "end":
897
+ return _context9.stop();
898
+ }
899
+ }, _callee9);
900
+ }))();
901
+ },
902
+ /**
903
+ * keep edit lock alive
904
+ * @returns {void}
905
+ */
906
+ keepEditLockAlive: function keepEditLockAlive() {
907
+ var _this17 = this;
908
+ if (this.editLock && !!this.editLock.token) {
909
+ var ttl = this.editLock.ttl < 30 ? _constants.BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;
910
+ if (this.intervalID) {
911
+ window.clearInterval(this.intervalID);
912
+ }
913
+ this.intervalID = window.setInterval(function () {
914
+ _this17.request({
915
+ method: _constants.HTTP_VERBS.PUT,
916
+ uri: "".concat(_this17.url, "/editlock/").concat(_this17.editLock.token)
917
+ }).catch(function (error) {
918
+ _this17._clearEditLockInfo();
919
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#keepEditLockAlive'));
920
+ });
921
+ }, ttl / 2 * 1000);
922
+ }
923
+ },
924
+ /**
925
+ * unlock edit breakout
926
+ * @returns {void}
927
+ */
928
+ unLockEditBreakout: function unLockEditBreakout() {
929
+ var _this18 = this;
930
+ if (this.editLock && !!this.editLock.token) {
931
+ this.request({
932
+ method: _constants.HTTP_VERBS.DELETE,
933
+ uri: "".concat(this.url, "/editlock/").concat(this.editLock.token)
934
+ }).then(function () {
935
+ _this18._clearEditLockInfo();
936
+ }).catch(function (error) {
937
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#unLockEditBreakout'));
938
+ });
939
+ }
940
+ },
941
+ /**
942
+ * clear interval and edit lock info
943
+ * @private
944
+ * @returns {void}
945
+ */
946
+ _clearEditLockInfo: function _clearEditLockInfo() {
947
+ if (this.intervalID) {
948
+ clearInterval(this.intervalID);
949
+ }
950
+ this.set('editLock', {});
951
+ },
952
+ /**
953
+ * assign participants to breakout session
954
+ * @param {Array} sessions
955
+ * @returns {void}
956
+ */
957
+ assign: function assign(sessions) {
958
+ var internalSessions = sessions.map(function (item) {
959
+ return {
960
+ id: item.id,
961
+ assigned: item.memberIds,
962
+ assignedEmails: item.emails,
963
+ anyoneCanJoin: !!item.anyone
964
+ };
965
+ });
966
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
967
+ editlock: {
968
+ token: this.editLock.token,
969
+ refresh: true
970
+ }
971
+ } : {}), {
972
+ groups: [{
973
+ id: this.breakoutGroupId,
974
+ sessions: internalSessions
975
+ }]
976
+ });
977
+ return this.request({
978
+ method: _constants.HTTP_VERBS.PUT,
979
+ uri: this.url,
980
+ body: body
981
+ });
982
+ },
983
+ /**
984
+ * query preAssignments
985
+ * @returns {void}
986
+ */
987
+ queryPreAssignments: function queryPreAssignments() {
988
+ var _this19 = this;
989
+ this.webex.request({
990
+ uri: "".concat(this.url, "/preassignments"),
991
+ qs: {
992
+ locusUrl: btoa(this.locusUrl)
993
+ }
994
+ }).then(function (result) {
995
+ var _result$body;
996
+ if ((_result$body = result.body) !== null && _result$body !== void 0 && _result$body.groups) {
997
+ _this19.set('preAssignments', result.body.groups);
998
+ _this19.trigger(_constants.BREAKOUTS.EVENTS.PRE_ASSIGNMENTS_UPDATE);
999
+ }
1000
+ }).catch(function (error) {
1001
+ _loggerProxy.default.logger.error('Meeting:breakouts#queryPreAssignments failed', error);
1002
+ });
1003
+ },
1004
+ /**
1005
+ * assign participants dynamically after breakout sessions started,
1006
+ * but currently it only used for admitting participants from lobby into breakout directly
1007
+ * @param {Array} sessions
1008
+ * @returns {void}
1009
+ */
1010
+ dynamicAssign: function dynamicAssign(sessions) {
1011
+ var updatedSessions = sessions.map(function (item) {
1012
+ return {
1013
+ id: item.id,
1014
+ participants: item.participants,
1015
+ targetState: item.targetState
1016
+ };
1017
+ });
1018
+ var body = {
1019
+ groups: [{
1020
+ id: this.breakoutGroupId,
1021
+ sessions: updatedSessions
1022
+ }],
1023
+ editlock: null
1024
+ };
1025
+ if (this.editLock && this.editLock.token) {
1026
+ body.editlock = this.editLock;
1027
+ }
1028
+ return this.request({
1029
+ method: _constants.HTTP_VERBS.PUT,
1030
+ uri: "".concat(this.url, "/dynamicAssign"),
1031
+ body: body
1032
+ });
1033
+ },
1034
+ /**
1035
+ * trigger ASK_RETURN_TO_MAIN event when main session requested
1036
+ * @param {Object} breakout
1037
+ * @returns {void}
1038
+ */
1039
+ triggerReturnToMainEvent: function triggerReturnToMainEvent(breakout) {
1040
+ if (breakout.isMain && breakout.requested) {
1041
+ this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
1042
+ }
1043
+ },
1044
+ version: "3.0.0-beta.261"
223
1045
  });
224
1046
  var _default = Breakouts;
225
1047
  exports.default = _default;