@webex/plugin-meetings 3.0.0-beta.28 → 3.0.0-beta.280

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 (363) 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 +763 -31
  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/no-meeting-info.js +51 -0
  21. package/dist/common/errors/no-meeting-info.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +28 -7
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/common/queue.js +24 -9
  27. package/dist/common/queue.js.map +1 -1
  28. package/dist/config.js +5 -10
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.js +203 -28
  31. package/dist/constants.js.map +1 -1
  32. package/dist/controls-options-manager/enums.js +14 -2
  33. package/dist/controls-options-manager/enums.js.map +1 -1
  34. package/dist/controls-options-manager/index.js +109 -15
  35. package/dist/controls-options-manager/index.js.map +1 -1
  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 +309 -18
  39. package/dist/controls-options-manager/util.js.map +1 -1
  40. package/dist/index.js +112 -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 +383 -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 +57 -1
  55. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  56. package/dist/locus-info/parser.js +249 -72
  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 +58 -116
  61. package/dist/media/index.js.map +1 -1
  62. package/dist/media/properties.js +72 -123
  63. package/dist/media/properties.js.map +1 -1
  64. package/dist/meeting/in-meeting-actions.js +82 -2
  65. package/dist/meeting/in-meeting-actions.js.map +1 -1
  66. package/dist/meeting/index.js +3123 -2814
  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 +230 -124
  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 +73 -7
  77. package/dist/meeting-info/index.js.map +1 -1
  78. package/dist/meeting-info/meeting-info-v2.js +192 -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 +394 -94
  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 +71 -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 -6
  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 +12 -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 +40 -16
  117. package/dist/multistream/receiveSlot.js.map +1 -1
  118. package/dist/multistream/receiveSlotManager.js +39 -36
  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/multistream/sendSlotManager.js +233 -0
  127. package/dist/multistream/sendSlotManager.js.map +1 -0
  128. package/dist/reachability/index.js +225 -59
  129. package/dist/reachability/index.js.map +1 -1
  130. package/dist/reachability/request.js +17 -8
  131. package/dist/reachability/request.js.map +1 -1
  132. package/dist/reconnection-manager/index.js +199 -154
  133. package/dist/reconnection-manager/index.js.map +1 -1
  134. package/dist/recording-controller/index.js +21 -2
  135. package/dist/recording-controller/index.js.map +1 -1
  136. package/dist/recording-controller/util.js +9 -8
  137. package/dist/recording-controller/util.js.map +1 -1
  138. package/dist/roap/index.js +23 -29
  139. package/dist/roap/index.js.map +1 -1
  140. package/dist/roap/request.js +112 -97
  141. package/dist/roap/request.js.map +1 -1
  142. package/dist/roap/turnDiscovery.js +96 -36
  143. package/dist/roap/turnDiscovery.js.map +1 -1
  144. package/dist/rtcMetrics/constants.js +12 -0
  145. package/dist/rtcMetrics/constants.js.map +1 -0
  146. package/dist/rtcMetrics/index.js +117 -0
  147. package/dist/rtcMetrics/index.js.map +1 -0
  148. package/dist/statsAnalyzer/index.js +67 -73
  149. package/dist/statsAnalyzer/index.js.map +1 -1
  150. package/dist/statsAnalyzer/mqaUtil.js +11 -10
  151. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  152. package/dist/types/annotation/annotation.types.d.ts +42 -0
  153. package/dist/types/annotation/constants.d.ts +31 -0
  154. package/dist/types/annotation/index.d.ts +117 -0
  155. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  156. package/dist/types/breakouts/events.d.ts +8 -0
  157. package/dist/types/breakouts/request.d.ts +22 -0
  158. package/dist/types/breakouts/utils.d.ts +15 -0
  159. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  160. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  161. package/dist/types/common/queue.d.ts +9 -7
  162. package/dist/types/config.d.ts +1 -6
  163. package/dist/types/constants.d.ts +161 -21
  164. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  165. package/dist/types/controls-options-manager/index.d.ts +17 -1
  166. package/dist/types/controls-options-manager/types.d.ts +43 -0
  167. package/dist/types/controls-options-manager/util.d.ts +1 -7
  168. package/dist/types/index.d.ts +6 -4
  169. package/dist/types/interpretation/collection.d.ts +5 -0
  170. package/dist/types/interpretation/index.d.ts +5 -0
  171. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  172. package/dist/types/locus-info/index.d.ts +57 -4
  173. package/dist/types/locus-info/parser.d.ts +67 -6
  174. package/dist/types/media/index.d.ts +2 -0
  175. package/dist/types/media/properties.d.ts +34 -48
  176. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  177. package/dist/types/meeting/index.d.ts +345 -507
  178. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  179. package/dist/types/meeting/muteState.d.ts +99 -23
  180. package/dist/types/meeting/request.d.ts +72 -43
  181. package/dist/types/meeting/util.d.ts +101 -1
  182. package/dist/types/meeting-info/index.d.ts +13 -1
  183. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  184. package/dist/types/meetings/collection.d.ts +8 -0
  185. package/dist/types/meetings/index.d.ts +88 -12
  186. package/dist/types/meetings/meetings.types.d.ts +4 -0
  187. package/dist/types/member/index.d.ts +13 -0
  188. package/dist/types/member/types.d.ts +32 -0
  189. package/dist/types/members/collection.d.ts +5 -0
  190. package/dist/types/members/index.d.ts +35 -2
  191. package/dist/types/members/request.d.ts +73 -9
  192. package/dist/types/members/types.d.ts +24 -0
  193. package/dist/types/members/util.d.ts +209 -1
  194. package/dist/types/metrics/constants.d.ts +11 -4
  195. package/dist/types/metrics/index.d.ts +4 -119
  196. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  197. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  198. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  199. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  200. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  201. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  202. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  203. package/dist/types/reachability/index.d.ts +61 -7
  204. package/dist/types/reachability/request.d.ts +7 -3
  205. package/dist/types/reconnection-manager/index.d.ts +9 -0
  206. package/dist/types/recording-controller/index.d.ts +15 -1
  207. package/dist/types/recording-controller/util.d.ts +5 -4
  208. package/dist/types/roap/request.d.ts +15 -11
  209. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  210. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  211. package/dist/types/rtcMetrics/index.d.ts +47 -0
  212. package/dist/types/statsAnalyzer/index.d.ts +6 -1
  213. package/package.json +23 -20
  214. package/src/annotation/annotation.types.ts +50 -0
  215. package/src/annotation/constants.ts +36 -0
  216. package/src/annotation/index.ts +328 -0
  217. package/src/breakouts/README.md +44 -14
  218. package/src/breakouts/breakout.ts +87 -9
  219. package/src/breakouts/edit-lock-error.ts +25 -0
  220. package/src/breakouts/events.ts +56 -0
  221. package/src/breakouts/index.ts +646 -18
  222. package/src/breakouts/request.ts +55 -0
  223. package/src/breakouts/utils.ts +57 -0
  224. package/src/common/errors/no-meeting-info.ts +24 -0
  225. package/src/common/errors/webex-errors.ts +27 -2
  226. package/src/common/logs/logger-proxy.ts +1 -1
  227. package/src/common/queue.ts +22 -8
  228. package/src/config.ts +4 -9
  229. package/src/constants.ts +184 -18
  230. package/src/controls-options-manager/enums.ts +12 -0
  231. package/src/controls-options-manager/index.ts +116 -21
  232. package/src/controls-options-manager/types.ts +59 -0
  233. package/src/controls-options-manager/util.ts +294 -14
  234. package/src/index.ts +40 -0
  235. package/src/interpretation/README.md +60 -0
  236. package/src/interpretation/collection.ts +19 -0
  237. package/src/interpretation/index.ts +332 -0
  238. package/src/interpretation/siLanguage.ts +18 -0
  239. package/src/locus-info/controlsUtils.ts +108 -0
  240. package/src/locus-info/index.ts +413 -59
  241. package/src/locus-info/infoUtils.ts +10 -2
  242. package/src/locus-info/mediaSharesUtils.ts +64 -0
  243. package/src/locus-info/parser.ts +258 -47
  244. package/src/locus-info/selfUtils.ts +81 -5
  245. package/src/media/index.ts +100 -122
  246. package/src/media/properties.ts +85 -108
  247. package/src/meeting/in-meeting-actions.ts +163 -3
  248. package/src/meeting/index.ts +2541 -2309
  249. package/src/meeting/locusMediaRequest.ts +313 -0
  250. package/src/meeting/muteState.ts +229 -131
  251. package/src/meeting/request.ts +172 -121
  252. package/src/meeting/util.ts +588 -394
  253. package/src/meeting-info/index.ts +81 -8
  254. package/src/meeting-info/meeting-info-v2.ts +170 -14
  255. package/src/meeting-info/util.ts +1 -1
  256. package/src/meeting-info/utilv2.ts +23 -23
  257. package/src/meetings/collection.ts +20 -0
  258. package/src/meetings/index.ts +428 -108
  259. package/src/meetings/meetings.types.ts +12 -0
  260. package/src/meetings/request.ts +2 -0
  261. package/src/meetings/util.ts +79 -4
  262. package/src/member/index.ts +49 -0
  263. package/src/member/types.ts +38 -0
  264. package/src/member/util.ts +127 -25
  265. package/src/members/collection.ts +8 -0
  266. package/src/members/index.ts +106 -7
  267. package/src/members/request.ts +97 -17
  268. package/src/members/types.ts +28 -0
  269. package/src/members/util.ts +319 -240
  270. package/src/metrics/constants.ts +11 -4
  271. package/src/metrics/index.ts +1 -490
  272. package/src/multistream/mediaRequestManager.ts +289 -79
  273. package/src/multistream/receiveSlot.ts +47 -17
  274. package/src/multistream/receiveSlotManager.ts +34 -24
  275. package/src/multistream/remoteMedia.ts +27 -2
  276. package/src/multistream/remoteMediaGroup.ts +59 -0
  277. package/src/multistream/remoteMediaManager.ts +148 -30
  278. package/src/multistream/sendSlotManager.ts +170 -0
  279. package/src/reachability/index.ts +228 -37
  280. package/src/reachability/request.ts +17 -8
  281. package/src/reconnection-manager/index.ts +81 -54
  282. package/src/recording-controller/index.ts +20 -3
  283. package/src/recording-controller/util.ts +26 -9
  284. package/src/roap/index.ts +23 -30
  285. package/src/roap/request.ts +100 -104
  286. package/src/roap/turnDiscovery.ts +51 -25
  287. package/src/rtcMetrics/constants.ts +3 -0
  288. package/src/rtcMetrics/index.ts +100 -0
  289. package/src/statsAnalyzer/index.ts +88 -88
  290. package/src/statsAnalyzer/mqaUtil.ts +13 -14
  291. package/test/integration/spec/converged-space-meetings.js +60 -3
  292. package/test/integration/spec/journey.js +320 -261
  293. package/test/integration/spec/space-meeting.js +76 -3
  294. package/test/unit/spec/annotation/index.ts +418 -0
  295. package/test/unit/spec/breakouts/breakout.ts +142 -24
  296. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  297. package/test/unit/spec/breakouts/events.ts +89 -0
  298. package/test/unit/spec/breakouts/index.ts +1488 -67
  299. package/test/unit/spec/breakouts/request.ts +104 -0
  300. package/test/unit/spec/breakouts/utils.js +72 -0
  301. package/test/unit/spec/common/queue.js +31 -2
  302. package/test/unit/spec/controls-options-manager/index.js +163 -0
  303. package/test/unit/spec/controls-options-manager/util.js +576 -60
  304. package/test/unit/spec/fixture/locus.js +1 -0
  305. package/test/unit/spec/interpretation/collection.ts +15 -0
  306. package/test/unit/spec/interpretation/index.ts +589 -0
  307. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  308. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  309. package/test/unit/spec/locus-info/index.js +1304 -33
  310. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  311. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  312. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  313. package/test/unit/spec/locus-info/parser.js +116 -35
  314. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  315. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  316. package/test/unit/spec/media/index.ts +104 -37
  317. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  318. package/test/unit/spec/meeting/index.js +4515 -1932
  319. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  320. package/test/unit/spec/meeting/muteState.js +408 -208
  321. package/test/unit/spec/meeting/request.js +440 -45
  322. package/test/unit/spec/meeting/utils.js +679 -64
  323. package/test/unit/spec/meeting-info/index.js +295 -0
  324. package/test/unit/spec/meeting-info/meetinginfov2.js +521 -5
  325. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  326. package/test/unit/spec/meetings/collection.js +14 -0
  327. package/test/unit/spec/meetings/index.js +1007 -177
  328. package/test/unit/spec/meetings/utils.js +206 -2
  329. package/test/unit/spec/member/index.js +58 -4
  330. package/test/unit/spec/member/util.js +479 -35
  331. package/test/unit/spec/members/index.js +319 -1
  332. package/test/unit/spec/members/request.js +206 -27
  333. package/test/unit/spec/members/utils.js +184 -0
  334. package/test/unit/spec/metrics/index.js +1 -50
  335. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  336. package/test/unit/spec/multistream/receiveSlot.ts +43 -20
  337. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  338. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  339. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  340. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  341. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  342. package/test/unit/spec/reachability/index.ts +549 -9
  343. package/test/unit/spec/reachability/request.js +68 -0
  344. package/test/unit/spec/reconnection-manager/index.js +84 -9
  345. package/test/unit/spec/recording-controller/index.js +294 -218
  346. package/test/unit/spec/recording-controller/util.js +223 -96
  347. package/test/unit/spec/roap/index.ts +31 -51
  348. package/test/unit/spec/roap/request.ts +203 -85
  349. package/test/unit/spec/roap/turnDiscovery.ts +48 -13
  350. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  351. package/test/unit/spec/stats-analyzer/index.js +64 -2
  352. package/test/utils/integrationTestUtils.js +46 -0
  353. package/test/utils/testUtils.js +0 -52
  354. package/dist/meeting/effectsState.js +0 -262
  355. package/dist/meeting/effectsState.js.map +0 -1
  356. package/dist/metrics/config.js +0 -299
  357. package/dist/metrics/config.js.map +0 -1
  358. package/dist/types/meeting/effectsState.d.ts +0 -42
  359. package/dist/types/metrics/config.d.ts +0 -178
  360. package/src/index.js +0 -16
  361. package/src/meeting/effectsState.ts +0 -211
  362. package/src/metrics/config.ts +0 -495
  363. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -0,0 +1,55 @@
1
+ import {StatelessWebexPlugin} from '@webex/webex-core';
2
+ import LoggerProxy from '../common/logs/logger-proxy';
3
+ import {getBroadcastRoles} from './utils';
4
+ import {HTTP_VERBS} from '../constants';
5
+
6
+ /**
7
+ * @class BreakoutRequest
8
+ */
9
+ export default class BreakoutRequest extends StatelessWebexPlugin {
10
+ /**
11
+ * Broadcast message to all breakout session's participants
12
+ * @param {String} url
13
+ * @param {String} message
14
+ * @param {Object} options
15
+ * @param {string} groupId
16
+ * @param {string} sessionId
17
+ * @returns {Promise}
18
+ */
19
+ broadcast({
20
+ url,
21
+ message,
22
+ options,
23
+ groupId,
24
+ sessionId,
25
+ }: {
26
+ url: string;
27
+ message: string;
28
+ options?: object;
29
+ groupId: string;
30
+ sessionId?: string;
31
+ }) {
32
+ const roles = getBroadcastRoles(options);
33
+ const params = {
34
+ id: groupId,
35
+ recipientRoles: roles.length ? roles : undefined,
36
+ sessions: sessionId ? [{id: sessionId}] : undefined,
37
+ };
38
+
39
+ // @ts-ignore
40
+ return this.request({
41
+ method: HTTP_VERBS.POST,
42
+ uri: `${url}/message`,
43
+ body: {
44
+ message,
45
+ groups: [params],
46
+ },
47
+ }).catch((error) => {
48
+ if (error.body && error.body.errorCode === 201409036 && error.statusCode === 409) {
49
+ LoggerProxy.logger.info(`Breakouts#broadcast --> no joined participants`);
50
+ } else {
51
+ throw error;
52
+ }
53
+ });
54
+ }
55
+ }
@@ -0,0 +1,57 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ import LoggerProxy from '../common/logs/logger-proxy';
3
+ import BreakoutEditLockedError from './edit-lock-error';
4
+ import {BREAKOUTS} from '../constants';
5
+
6
+ export const getBroadcastRoles = (options): string[] => {
7
+ const recipientRoles = [];
8
+ if (!options || (!options.cohosts && !options.presenters)) {
9
+ return recipientRoles;
10
+ }
11
+ if (options.cohosts) {
12
+ recipientRoles.push('COHOST');
13
+ }
14
+ if (options.presenters) {
15
+ recipientRoles.push('PRESENTER');
16
+ }
17
+
18
+ return recipientRoles;
19
+ };
20
+
21
+ /**
22
+ * Deals with all kinds of errors of breakout service
23
+ * @param {object} error // one of the breakout service error
24
+ * @param {string} position // position of the error occur
25
+ * @returns {object}
26
+ */
27
+ export const boServiceErrorHandler = (error: any, position: string): any => {
28
+ const errorCode = error?.body?.errorCode;
29
+ const {EDIT_LOCK_TOKEN_MISMATCH, EDIT_NOT_AUTHORIZED} = BREAKOUTS.ERROR_CODE;
30
+ let throwError;
31
+ switch (errorCode) {
32
+ case EDIT_LOCK_TOKEN_MISMATCH:
33
+ throwError = new BreakoutEditLockedError('Edit lock token mismatch', error);
34
+ break;
35
+ case EDIT_NOT_AUTHORIZED:
36
+ throwError = new BreakoutEditLockedError('Not authorized to interact with edit lock', error);
37
+ break;
38
+ default:
39
+ throwError = error;
40
+ }
41
+ LoggerProxy.logger.info(`${position} --> ${throwError?.message}`);
42
+
43
+ return throwError;
44
+ };
45
+
46
+ /**
47
+ *
48
+ * @param {object} breakout
49
+ * @param {string} newSessionType
50
+ * @returns {boolean}
51
+ */
52
+ export const isSessionTypeChangedFromSessionToMain = (breakout, newSessionType) => {
53
+ return (
54
+ breakout.previous('sessionType') === BREAKOUTS.SESSION_TYPES.BREAKOUT &&
55
+ newSessionType === BREAKOUTS.SESSION_TYPES.MAIN
56
+ );
57
+ };
@@ -0,0 +1,24 @@
1
+ import {ERROR_DICTIONARY} from '../../constants';
2
+
3
+ /**
4
+ * Extended Error object for general parameter errors
5
+ */
6
+ export default class NoMeetingInfoError extends Error {
7
+ code: any;
8
+ error: any;
9
+ sdkMessage: any;
10
+
11
+ /**
12
+ * @constructor
13
+ * @param {String} [message]
14
+ * @param {Object} [error]
15
+ */
16
+ constructor(message: string = ERROR_DICTIONARY.NO_MEETING_INFO.MESSAGE, error: any = null) {
17
+ super(message);
18
+ this.name = ERROR_DICTIONARY.NO_MEETING_INFO.NAME;
19
+ this.sdkMessage = ERROR_DICTIONARY.NO_MEETING_INFO.MESSAGE;
20
+ this.error = error;
21
+ this.stack = error ? error.stack : new Error().stack;
22
+ this.code = ERROR_DICTIONARY.NO_MEETING_INFO.CODE;
23
+ }
24
+ }
@@ -72,13 +72,17 @@ WebExMeetingsErrors[UserNotJoinedError.CODE] = UserNotJoinedError;
72
72
  * @classdesc Raised whenever the user has not established media yet.
73
73
  * @extends WebexMeetingsError
74
74
  * @property {number} code - 30103
75
- * @property {string} message - 'User has not established media yet'
75
+ * @property {string} message - error message
76
76
  */
77
77
  class NoMediaEstablishedYetError extends WebexMeetingsError {
78
78
  static CODE = 30103;
79
79
 
80
+ // eslint-disable-next-line require-jsdoc
80
81
  constructor() {
81
- super(NoMediaEstablishedYetError.CODE, 'User has not established media yet');
82
+ super(
83
+ NoMediaEstablishedYetError.CODE,
84
+ 'Webrtc media connection is missing, call addMedia() first'
85
+ );
82
86
  }
83
87
  }
84
88
 
@@ -103,6 +107,27 @@ class UserInLobbyError extends WebexMeetingsError {
103
107
  export {UserInLobbyError};
104
108
  WebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;
105
109
 
110
+ /**
111
+ * @class SpaceIDDeprecatedError
112
+ * @classdesc Raised whenever the user passes Space ID as destination for create meeting.
113
+ * @extends WebexMeetingsError
114
+ * @property {number} code - 30105
115
+ * @property {string} message - Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'
116
+ */
117
+ class SpaceIDDeprecatedError extends WebexMeetingsError {
118
+ static CODE = 30105;
119
+
120
+ constructor() {
121
+ super(
122
+ SpaceIDDeprecatedError.CODE,
123
+ 'Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'
124
+ );
125
+ }
126
+ }
127
+
128
+ export {SpaceIDDeprecatedError};
129
+ WebExMeetingsErrors[SpaceIDDeprecatedError.CODE] = SpaceIDDeprecatedError;
130
+
106
131
  /**
107
132
  * @class IceGatheringFailed
108
133
  * @classdesc Raised whenever ice gathering fails.
@@ -1,4 +1,4 @@
1
- /* eslint-disable no-unused-vars */
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
  import LoggerConfig from './logger-config';
3
3
 
4
4
  const LoggerProxy: any = {
@@ -1,13 +1,18 @@
1
1
  /**
2
- * Simple queue
2
+ * Simple queue in which the elements are always sorted
3
3
  */
4
- export default class SimpleQueue {
5
- queue: any[];
4
+ export default class SortedQueue<ItemType> {
5
+ queue: ItemType[];
6
+ // returns -1 if left < right, 0 if left === right, +1 if left > right
7
+ compareFunc: (left: ItemType, right: ItemType) => number;
8
+
6
9
  /**
7
- * @constructs SimpleQueue
10
+ * @constructs SortedQueue
11
+ * @param {Function} compareFunc comparison function used for sorting the elements of the queue
8
12
  */
9
- constructor() {
13
+ constructor(compareFunc: (left: ItemType, right: ItemType) => number) {
10
14
  this.queue = [];
15
+ this.compareFunc = compareFunc;
11
16
  }
12
17
 
13
18
  /**
@@ -23,8 +28,17 @@ export default class SimpleQueue {
23
28
  * @param {object} item
24
29
  * @returns {undefined}
25
30
  */
26
- enqueue(item: object) {
27
- this.queue.push(item);
31
+ enqueue(item: ItemType) {
32
+ // Find the index of the first item in the queue that's greater or equal to the new item.
33
+ // That's where we want to insert the new item.
34
+ const idx = this.queue.findIndex((existingItem) => {
35
+ return this.compareFunc(existingItem, item) >= 0;
36
+ });
37
+ if (idx >= 0) {
38
+ this.queue.splice(idx, 0, item);
39
+ } else {
40
+ this.queue.push(item);
41
+ }
28
42
  }
29
43
 
30
44
  /**
@@ -32,7 +46,7 @@ export default class SimpleQueue {
32
46
  * Returns null if the queue is empty.
33
47
  * @returns {(object|null)} Queue item or null.
34
48
  */
35
- dequeue() {
49
+ dequeue(): ItemType {
36
50
  if (this.queue.length === 0) {
37
51
  return null;
38
52
  }
package/src/config.ts CHANGED
@@ -10,13 +10,7 @@ export default {
10
10
  meetings: {
11
11
  deviceType: deviceType.WEB,
12
12
  mediaSettings: {
13
- sendAudio: true,
14
- sendVideo: true,
15
- receiveAudio: true,
16
- receiveVideo: true,
17
13
  pstn: false,
18
- sendShare: false,
19
- receiveShare: false,
20
14
  },
21
15
  reconnection: {
22
16
  enabled: false,
@@ -89,14 +83,15 @@ export default {
89
83
  receiveTranscription: false,
90
84
  enableExtmap: false,
91
85
  enableAutomaticLLM: false,
86
+ installedOrgID: undefined,
92
87
  experimental: {
93
88
  enableMediaNegotiatedEvent: false,
94
- enableUnifiedMeetings: false,
95
- enableAdhocMeetings: false,
89
+ enableUnifiedMeetings: true,
90
+ enableAdhocMeetings: true,
96
91
  enableTurnDiscovery: true,
97
92
  },
98
93
  degradationPreferences: {
99
- maxMacroblocksLimit: 32400,
94
+ maxMacroblocksLimit: 8192,
100
95
  },
101
96
  },
102
97
  };
package/src/constants.ts CHANGED
@@ -4,13 +4,14 @@ import {hydraTypes} from '@webex/common';
4
4
  // *********** LOWERCASE / CAMELCASE STRINGS ************
5
5
 
6
6
  export const AUDIO = 'audio';
7
- export const AUDIO_INPUT = 'audioinput';
8
7
  export const AUDIO_STATUS = 'audioStatus';
9
8
  export const ALERT = 'alert';
9
+ export const ALIAS = 'alias';
10
10
  export const ANSWER = 'answer';
11
11
 
12
12
  export const CALL = 'call';
13
13
  export const CORRELATION_ID = 'correlationId';
14
+ export const MEETINGNUMBER = 'meetingNumber';
14
15
  export const CONVERSATION_URL = 'conversationUrl';
15
16
  export const CALENDAR = 'calendar';
16
17
  export const CALENDAR_EVENTS_API = 'calendarEvents';
@@ -65,7 +66,6 @@ export const SHARE = 'share';
65
66
  export const TYPE = 'type';
66
67
 
67
68
  export const VIDEO = 'video';
68
- export const VIDEO_INPUT = 'videoinput';
69
69
  export const VIDEO_STATUS = 'videoStatus';
70
70
 
71
71
  // *********** UPPERCASE ONLY STRINGS ************
@@ -93,6 +93,7 @@ export const _JOINED_ = 'JOINED';
93
93
 
94
94
  export const _LOCUS_ID_ = 'LOCUS_ID';
95
95
  export const _LEFT_ = 'LEFT';
96
+ export const _MOVED_ = 'MOVED';
96
97
 
97
98
  export const _MEETING_LINK_ = 'MEETING_LINK';
98
99
  export const _MEETING_UUID_ = 'MEETING_UUID';
@@ -189,7 +190,7 @@ export const ICE_FAIL_TIMEOUT = 3000;
189
190
 
190
191
  export const RETRY_TIMEOUT = 3000;
191
192
 
192
- export const PC_BAIL_TIMEOUT = 8000;
193
+ export const PC_BAIL_TIMEOUT = 15000;
193
194
 
194
195
  // ******************** REGEX **********************
195
196
  // Please alphabetize
@@ -280,6 +281,7 @@ export const EVENT_TRIGGERS = {
280
281
  MEETING_STOPPED_SHARING_LOCAL: 'meeting:stoppedSharingLocal',
281
282
  MEETING_STARTED_SHARING_REMOTE: 'meeting:startedSharingRemote',
282
283
  MEETING_STOPPED_SHARING_REMOTE: 'meeting:stoppedSharingRemote',
284
+ MEETING_UPDATE_ANNOTATION_INFO: 'meeting:updateAnnotationInfo',
283
285
  MEETING_STARTED_SHARING_WHITEBOARD: 'meeting:startedSharingWhiteboard',
284
286
  MEETING_STOPPED_SHARING_WHITEBOARD: 'meeting:stoppedSharingWhiteboard',
285
287
  MEETING_MEDIA_LOCAL_STARTED: 'meeting:media:local:start',
@@ -297,18 +299,29 @@ export const EVENT_TRIGGERS = {
297
299
  MEETING_RINGING_STOP: 'meeting:ringingStop',
298
300
  MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',
299
301
  MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',
302
+ MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',
303
+ MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',
300
304
  MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',
301
305
  MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',
302
306
  MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',
303
307
  MEETING_SELF_PHONE_AUDIO_UPDATE: 'meeting:self:phoneAudioUpdate',
304
308
  MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',
305
309
  MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
310
+ MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',
306
311
  MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
307
312
  MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
308
313
  MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
309
314
  MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',
310
315
  MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',
316
+ MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN: 'meeting:breakouts:askReturnToMain',
317
+ MEETING_BREAKOUTS_LEAVE: 'meeting:breakouts:leave',
318
+ MEETING_BREAKOUTS_ASK_FOR_HELP: 'meeting:breakouts:askForHelp',
319
+ MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE: 'meeting:breakouts:preAssignmentsUpdate',
320
+ MEETING_INTERPRETATION_UPDATE: 'meeting:interpretation:update',
321
+ MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE: 'meeting:interpretation:supportLanguagesUpdate',
322
+ MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED: 'meeting:interpretation:handoffRequestsArrived',
311
323
  MEMBERS_UPDATE: 'members:update',
324
+ MEMBERS_CLEAR: 'members:clear',
312
325
  MEMBERS_CONTENT_UPDATE: 'members:content:update',
313
326
  MEMBERS_HOST_UPDATE: 'members:host:update',
314
327
  MEMBERS_SELF_UPDATE: 'members:self:update',
@@ -337,17 +350,28 @@ export const EVENT_TRIGGERS = {
337
350
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
338
351
  REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
339
352
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
353
+ // Controls
354
+ MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',
355
+ MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',
356
+ MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',
357
+ MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',
358
+ MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
359
+ 'meeting:controls:view-the-participants-list:updated',
360
+ MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
361
+ MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',
362
+ // Locus URL changed
363
+ MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
364
+ MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
340
365
  };
341
366
 
342
367
  export const EVENT_TYPES = {
343
368
  SELF: 'self',
344
369
  OTHER: 'other',
345
- LOCAL: 'local',
346
370
  REMOTE: 'remote',
347
371
  REMOTE_AUDIO: 'remoteAudio',
348
372
  REMOTE_VIDEO: 'remoteVideo',
349
373
  REMOTE_SHARE: 'remoteShare',
350
- LOCAL_SHARE: 'localShare',
374
+ REMOTE_SHARE_AUDIO: 'remoteShareAudio',
351
375
  ERROR: 'error',
352
376
  };
353
377
 
@@ -360,9 +384,12 @@ export const MEETING_REMOVED_REASON = {
360
384
  FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
361
385
  MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
362
386
  CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
387
+ CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
363
388
  USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
364
389
  NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
365
390
  MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
391
+ LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting
392
+ MISSING_MEETING_INFO: 'MISSING_MEETING_INFO', // meeting info failed to be fetched
366
393
  };
367
394
 
368
395
  // One one one calls ends for the following reasons
@@ -377,6 +404,8 @@ export const CALL_REMOVED_REASON = {
377
404
  export const SHARE_STOPPED_REASON = {
378
405
  SELF_STOPPED: 'SELF_STOPPED',
379
406
  MEETING_REJOIN: 'MEETING_REJOIN',
407
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
408
+ TRACK_ENDED: 'TRACK_ENDED',
380
409
  };
381
410
 
382
411
  export const EVENTS = {
@@ -452,6 +481,16 @@ export const ERROR_DICTIONARY = {
452
481
  MESSAGE: 'Captcha is required.',
453
482
  CODE: 8,
454
483
  },
484
+ BREAKOUT_EDIT: {
485
+ NAME: 'BreakoutEditLockedError',
486
+ MESSAGE: 'Edit lock token mismatch',
487
+ CODE: 9,
488
+ },
489
+ NO_MEETING_INFO: {
490
+ NAME: 'NoMeetingInfo',
491
+ MESSAGE: 'No meeting info found for the meeting',
492
+ CODE: 10,
493
+ },
455
494
  };
456
495
 
457
496
  export const FLOOR_ACTION = {
@@ -473,6 +512,7 @@ export const HTTP_VERBS = {
473
512
  POST: 'POST',
474
513
  GET: 'GET',
475
514
  PATCH: 'PATCH',
515
+ DELETE: 'DELETE',
476
516
  };
477
517
 
478
518
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -518,17 +558,28 @@ export const LOCUS = {
518
558
  SYNCDEBUG: 'sync_debug',
519
559
  };
520
560
 
561
+ export const ANNOTATION = {
562
+ ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
563
+ };
521
564
  export const BREAKOUTS = {
522
565
  STATUS: {
523
566
  CLOSING: 'CLOSING',
567
+ CLOSED: 'CLOSED',
568
+ PENDING: 'PENDING',
569
+ OPEN: 'OPEN',
524
570
  },
525
571
  EVENTS: {
526
572
  BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
527
573
  MESSAGE: 'MESSAGE',
528
574
  MEMBERS_UPDATE: 'MEMBERS_UPDATE',
575
+ ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
576
+ LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
577
+ ASK_FOR_HELP: 'ASK_FOR_HELP',
578
+ PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',
529
579
  },
530
580
  SESSION_TYPES: {
531
581
  MAIN: 'MAIN',
582
+ BREAKOUT: 'BREAKOUT',
532
583
  },
533
584
  SESSION_STATES: {
534
585
  ACTIVE: 'active',
@@ -538,6 +589,35 @@ export const BREAKOUTS = {
538
589
  REQUESTED: 'requested',
539
590
  },
540
591
  BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
592
+ ACTION: {
593
+ START: 'START',
594
+ CLOSE: 'CLOSE',
595
+ DELETE: 'DELETE',
596
+ },
597
+ ERROR_CODE: {
598
+ EDIT_LOCK_TOKEN_MISMATCH: 201409024,
599
+ EDIT_NOT_AUTHORIZED: 201403007,
600
+ },
601
+ EDIT_LOCK_STATUS: {
602
+ LOCKED: 'LOCKED',
603
+ NOT_LOCKED: 'NOT_LOCKED',
604
+ UNKNOWN: 'UNKNOWN',
605
+ },
606
+ DEFAULT_TTL: 30,
607
+ };
608
+
609
+ export const INTERPRETATION = {
610
+ EVENTS: {
611
+ SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',
612
+ HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',
613
+ },
614
+ ACTION_TYPE: {
615
+ OFFERED: 'OFFERED',
616
+ ACCEPTED: 'ACCEPTED',
617
+ REQUESTED: 'REQUESTED',
618
+ DECLINED: 'DECLINED',
619
+ },
620
+ RESOURCE_TYPE: 'SiHandover',
541
621
  };
542
622
 
543
623
  export const LOCUSINFO = {
@@ -547,13 +627,24 @@ export const LOCUSINFO = {
547
627
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
548
628
  CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
549
629
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
630
+ CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
550
631
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
632
+ CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
633
+ CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
634
+ CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
635
+ CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
636
+ CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
637
+ CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
638
+ CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
639
+ CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
551
640
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
552
641
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
642
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
553
643
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
554
644
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
555
645
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
556
646
  SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
647
+ SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',
557
648
  MEETING_UPDATE: 'MEETING_UPDATE',
558
649
  MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',
559
650
  FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',
@@ -568,6 +659,7 @@ export const LOCUSINFO = {
568
659
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
569
660
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
570
661
  SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
662
+ SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
571
663
  MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
572
664
  LINKS_SERVICES: 'LINKS_SERVICES',
573
665
  },
@@ -732,6 +824,28 @@ export const MEETING_END_REASON = {
732
824
  MEDIA_RELEASED: 'MEDIA_RELEASED',
733
825
  };
734
826
 
827
+ export enum SELF_POLICY {
828
+ ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
829
+ SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
830
+ SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
831
+ SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
832
+ SUPPORT_CHAT = 'supportChat',
833
+ SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
834
+ SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',
835
+ SUPPORT_WHITEBOARD = 'supportWhiteboard',
836
+ SUPPORT_FILE_TRANSFER = 'supportFileTransfer',
837
+ SUPPORT_APP_SHARE = 'supportAppShare',
838
+ SUPPORT_CAMERA_SHARE = 'supportCameraShare',
839
+ SUPPORT_FILE_SHARE = 'supportFileShare',
840
+ SUPPORT_ANNOTATION = 'supportAnnotation',
841
+ SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',
842
+ SUPPORT_VIDEO = 'supportVideo',
843
+ SUPPORT_HQV = 'supportHQV',
844
+ SUPPORT_HDV = 'supportHDV',
845
+ SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',
846
+ SUPPORT_VOIP = 'supportVoIP',
847
+ }
848
+
735
849
  export const DISPLAY_HINTS = {
736
850
  ADD_GUEST: 'ADD_GUEST',
737
851
  ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',
@@ -755,21 +869,64 @@ export const DISPLAY_HINTS = {
755
869
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
756
870
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
757
871
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
872
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
758
873
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
759
874
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
760
875
  ENABLE_REACTIONS: 'ENABLE_REACTIONS',
761
876
  DISABLE_REACTIONS: 'DISABLE_REACTIONS',
762
877
  REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
763
878
  REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
879
+ SHARE_CONTROL: 'SHARE_CONTROL',
764
880
  ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
881
+ ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
882
+ DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
765
883
  DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
766
884
  ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
767
885
  DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
886
+ MUTE_ALL: 'MUTE_ALL',
887
+ UNMUTE_ALL: 'UNMUTE_ALL',
888
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
889
+ CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
890
+ CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
891
+
892
+ // breakout session
893
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
894
+ BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',
895
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
896
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
897
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
898
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
899
+
900
+ // participants list
901
+ DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
902
+ ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
903
+
904
+ // raise hand
905
+ DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
906
+ ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
907
+
908
+ // video
909
+ DISABLE_VIDEO: 'DISABLE_VIDEO',
910
+ ENABLE_VIDEO: 'ENABLE_VIDEO',
911
+
912
+ // Sharing
913
+ SHARE_FILE: 'SHARE_FILE',
914
+ SHARE_APPLICATION: 'SHARE_APPLICATION',
915
+ SHARE_CAMERA: 'SHARE_CAMERA',
916
+ SHARE_DESKTOP: 'SHARE_DESKTOP',
917
+ SHARE_CONTENT: 'SHARE_CONTENT',
918
+ SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',
919
+
920
+ // Voip (audio/video)
921
+ VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',
768
922
  };
769
923
 
924
+ export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
925
+
770
926
  export const SELF_ROLES = {
771
927
  COHOST: 'COHOST',
772
928
  MODERATOR: 'MODERATOR',
929
+ ATTENDEE: 'ATTENDEE',
773
930
  };
774
931
 
775
932
  export const MEETING_STATE = {
@@ -854,7 +1011,8 @@ export const RESOURCE = {
854
1011
  };
855
1012
 
856
1013
  export const REACHABILITY = {
857
- localStorage: 'reachability.result',
1014
+ localStorageResult: 'reachability.result',
1015
+ localStorageJoinCookie: 'reachability.joinCookie',
858
1016
  namespace: 'Reachability',
859
1017
  };
860
1018
 
@@ -1035,16 +1193,6 @@ export const AVAILABLE_RESOLUTIONS = {
1035
1193
  },
1036
1194
  };
1037
1195
 
1038
- export const VIDEO_RESOLUTIONS = {
1039
- [QUALITY_LEVELS.LOW]: AVAILABLE_RESOLUTIONS['480p'],
1040
- [QUALITY_LEVELS.MEDIUM]: AVAILABLE_RESOLUTIONS['720p'],
1041
- [QUALITY_LEVELS.HIGH]: AVAILABLE_RESOLUTIONS['1080p'],
1042
- [QUALITY_LEVELS['360p']]: AVAILABLE_RESOLUTIONS['360p'],
1043
- [QUALITY_LEVELS['480p']]: AVAILABLE_RESOLUTIONS['480p'],
1044
- [QUALITY_LEVELS['720p']]: AVAILABLE_RESOLUTIONS['720p'],
1045
- [QUALITY_LEVELS['1080p']]: AVAILABLE_RESOLUTIONS['1080p'],
1046
- };
1047
-
1048
1196
  /*
1049
1197
  * mqa Interval for sending stats metrics
1050
1198
  */
@@ -1057,8 +1205,6 @@ export const MEDIA_DEVICES = {
1057
1205
  CAMERA: 'camera',
1058
1206
  };
1059
1207
 
1060
- export const METRICS_JOIN_TIMES_MAX_DURATION = 1200000;
1061
-
1062
1208
  export const PSTN_STATUS = {
1063
1209
  JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect
1064
1210
  CONNECTED: 'CONNECTED', // user is connected to audio with pstn device
@@ -1079,6 +1225,7 @@ export const MEETING_INFO_FAILURE_REASON = {
1079
1225
  NONE: 'NONE', // meeting info was retrieved succesfully
1080
1226
  WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
1081
1227
  WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
1228
+ POLICY: 'POLICY', // meeting info request violates some meeting policy
1082
1229
  OTHER: 'OTHER', // any other error (network, etc)
1083
1230
  };
1084
1231
 
@@ -1093,3 +1240,22 @@ export const EMBEDDED_APP_TYPES = {
1093
1240
  SLIDO: 'SLIDO',
1094
1241
  OTHER: 'OTHER',
1095
1242
  };
1243
+
1244
+ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
1245
+ supportHostKey: true,
1246
+ supportCountryList: true,
1247
+ };
1248
+
1249
+ /** the values for IP_VERSION are fixed and defined in Orpheus API */
1250
+ export const IP_VERSION = {
1251
+ unknown: 0,
1252
+ only_ipv4: 4, // we know we have ipv4, we don't know or we don't have ipv6
1253
+ only_ipv6: 6, // we know we have ipv6, we don't know or we don't have ipv4
1254
+ ipv4_and_ipv6: 1,
1255
+ } as const;
1256
+
1257
+ export type IP_VERSION = (typeof IP_VERSION)[keyof typeof IP_VERSION];
1258
+
1259
+ // constant for if the permissionToken is about to expire in the next 30 seconds, refresh it
1260
+ export const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;
1261
+ export const MEETING_PERMISSION_TOKEN_REFRESH_REASON = 'ttl-join';