@webex/plugin-meetings 3.0.0-stream-classes.4 → 3.0.0

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 (469) hide show
  1. package/.eslintrc.js +6 -0
  2. package/README.md +12 -0
  3. package/babel.config.js +3 -0
  4. package/dist/annotation/constants.js +12 -20
  5. package/dist/annotation/constants.js.map +1 -1
  6. package/dist/annotation/index.js +25 -10
  7. package/dist/annotation/index.js.map +1 -1
  8. package/dist/breakouts/breakout.js +2 -3
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/collection.js +1 -2
  11. package/dist/breakouts/collection.js.map +1 -1
  12. package/dist/breakouts/edit-lock-error.js +1 -2
  13. package/dist/breakouts/edit-lock-error.js.map +1 -1
  14. package/dist/breakouts/events.js +1 -2
  15. package/dist/breakouts/events.js.map +1 -1
  16. package/dist/breakouts/index.js +13 -14
  17. package/dist/breakouts/index.js.map +1 -1
  18. package/dist/breakouts/request.js +1 -2
  19. package/dist/breakouts/request.js.map +1 -1
  20. package/dist/breakouts/utils.js +3 -6
  21. package/dist/breakouts/utils.js.map +1 -1
  22. package/dist/common/browser-detection.js +2 -3
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +3 -4
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  37. package/dist/common/errors/no-meeting-info.js +50 -0
  38. package/dist/common/errors/no-meeting-info.js.map +1 -0
  39. package/dist/common/errors/parameter.js +3 -4
  40. package/dist/common/errors/parameter.js.map +1 -1
  41. package/dist/common/errors/password-error.js +1 -2
  42. package/dist/common/errors/password-error.js.map +1 -1
  43. package/dist/common/errors/permission.js +1 -2
  44. package/dist/common/errors/permission.js.map +1 -1
  45. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  46. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +1 -2
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +1 -2
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +1 -2
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/{types/common → common}/errors/webex-errors.d.ts +13 -1
  55. package/dist/common/errors/webex-errors.js +35 -16
  56. package/dist/common/errors/webex-errors.js.map +1 -1
  57. package/dist/common/errors/webex-meetings-error.js +1 -2
  58. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  59. package/dist/common/events/events-scope.js +1 -2
  60. package/dist/common/events/events-scope.js.map +1 -1
  61. package/dist/common/events/events.js +1 -2
  62. package/dist/common/events/events.js.map +1 -1
  63. package/dist/common/events/trigger-proxy.js +1 -2
  64. package/dist/common/events/trigger-proxy.js.map +1 -1
  65. package/dist/common/events/util.js +1 -2
  66. package/dist/common/events/util.js.map +1 -1
  67. package/dist/common/logs/logger-config.js +1 -2
  68. package/dist/common/logs/logger-config.js.map +1 -1
  69. package/dist/common/logs/logger-proxy.js +1 -2
  70. package/dist/common/logs/logger-proxy.js.map +1 -1
  71. package/dist/{types/common → common}/logs/request.d.ts +3 -1
  72. package/dist/common/logs/request.js +8 -5
  73. package/dist/common/logs/request.js.map +1 -1
  74. package/dist/common/queue.js +2 -4
  75. package/dist/common/queue.js.map +1 -1
  76. package/dist/{types/config.d.ts → config.d.ts} +1 -1
  77. package/dist/config.js +3 -3
  78. package/dist/config.js.map +1 -1
  79. package/dist/{types/constants.d.ts → constants.d.ts} +72 -15
  80. package/dist/constants.js +254 -371
  81. package/dist/constants.js.map +1 -1
  82. package/dist/controls-options-manager/constants.js +3 -6
  83. package/dist/controls-options-manager/constants.js.map +1 -1
  84. package/dist/controls-options-manager/enums.js +7 -10
  85. package/dist/controls-options-manager/enums.js.map +1 -1
  86. package/dist/controls-options-manager/index.js +27 -32
  87. package/dist/controls-options-manager/index.js.map +1 -1
  88. package/dist/controls-options-manager/util.js +1 -2
  89. package/dist/controls-options-manager/util.js.map +1 -1
  90. package/dist/index.js +8 -5
  91. package/dist/index.js.map +1 -1
  92. package/dist/interceptors/index.d.ts +2 -0
  93. package/dist/interceptors/index.js +15 -0
  94. package/dist/interceptors/index.js.map +1 -0
  95. package/dist/interceptors/locusRetry.d.ts +27 -0
  96. package/dist/interceptors/locusRetry.js +94 -0
  97. package/dist/interceptors/locusRetry.js.map +1 -0
  98. package/dist/interpretation/collection.js +1 -2
  99. package/dist/interpretation/collection.js.map +1 -1
  100. package/dist/interpretation/index.js +2 -3
  101. package/dist/interpretation/index.js.map +1 -1
  102. package/dist/interpretation/siLanguage.js +2 -3
  103. package/dist/interpretation/siLanguage.js.map +1 -1
  104. package/dist/locus-info/controlsUtils.js +12 -13
  105. package/dist/locus-info/controlsUtils.js.map +1 -1
  106. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  107. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  108. package/dist/locus-info/fullState.js +1 -2
  109. package/dist/locus-info/fullState.js.map +1 -1
  110. package/dist/locus-info/hostUtils.js +1 -2
  111. package/dist/locus-info/hostUtils.js.map +1 -1
  112. package/dist/{types/locus-info → locus-info}/index.d.ts +1 -1
  113. package/dist/locus-info/index.js +63 -38
  114. package/dist/locus-info/index.js.map +1 -1
  115. package/dist/locus-info/infoUtils.js +3 -4
  116. package/dist/locus-info/infoUtils.js.map +1 -1
  117. package/dist/locus-info/mediaSharesUtils.js +16 -3
  118. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  119. package/dist/{types/locus-info → locus-info}/parser.d.ts +3 -2
  120. package/dist/locus-info/parser.js +48 -31
  121. package/dist/locus-info/parser.js.map +1 -1
  122. package/dist/locus-info/selfUtils.js +7 -6
  123. package/dist/locus-info/selfUtils.js.map +1 -1
  124. package/dist/media/index.js +15 -10
  125. package/dist/media/index.js.map +1 -1
  126. package/dist/media/properties.js +16 -7
  127. package/dist/media/properties.js.map +1 -1
  128. package/dist/media/util.js +1 -2
  129. package/dist/media/util.js.map +1 -1
  130. package/dist/mediaQualityMetrics/config.d.ts +241 -0
  131. package/dist/mediaQualityMetrics/config.js +135 -339
  132. package/dist/mediaQualityMetrics/config.js.map +1 -1
  133. package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +4 -0
  134. package/dist/meeting/in-meeting-actions.js +18 -2
  135. package/dist/meeting/in-meeting-actions.js.map +1 -1
  136. package/dist/{types/meeting → meeting}/index.d.ts +331 -44
  137. package/dist/meeting/index.js +2639 -1367
  138. package/dist/meeting/index.js.map +1 -1
  139. package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +1 -2
  140. package/dist/meeting/locusMediaRequest.js +4 -5
  141. package/dist/meeting/locusMediaRequest.js.map +1 -1
  142. package/dist/meeting/muteState.js +2 -4
  143. package/dist/meeting/muteState.js.map +1 -1
  144. package/dist/{types/meeting → meeting}/request.d.ts +4 -1
  145. package/dist/meeting/request.js +47 -32
  146. package/dist/meeting/request.js.map +1 -1
  147. package/dist/meeting/state.js +1 -2
  148. package/dist/meeting/state.js.map +1 -1
  149. package/dist/{types/meeting → meeting}/util.d.ts +26 -1
  150. package/dist/meeting/util.js +83 -10
  151. package/dist/meeting/util.js.map +1 -1
  152. package/dist/meeting/voicea-meeting.d.ts +16 -0
  153. package/dist/meeting/voicea-meeting.js +169 -0
  154. package/dist/meeting/voicea-meeting.js.map +1 -0
  155. package/dist/meeting-info/collection.js +3 -4
  156. package/dist/meeting-info/collection.js.map +1 -1
  157. package/dist/{types/meeting-info → meeting-info}/index.d.ts +7 -0
  158. package/dist/meeting-info/index.js +53 -27
  159. package/dist/meeting-info/index.js.map +1 -1
  160. package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +1 -0
  161. package/dist/meeting-info/meeting-info-v2.js +52 -33
  162. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  163. package/dist/meeting-info/request.js +1 -2
  164. package/dist/meeting-info/request.js.map +1 -1
  165. package/dist/meeting-info/util.js +8 -8
  166. package/dist/meeting-info/util.js.map +1 -1
  167. package/dist/meeting-info/utilv2.js +12 -9
  168. package/dist/meeting-info/utilv2.js.map +1 -1
  169. package/dist/{types/meetings → meetings}/collection.d.ts +9 -0
  170. package/dist/meetings/collection.js +21 -5
  171. package/dist/meetings/collection.js.map +1 -1
  172. package/dist/{types/meetings → meetings}/index.d.ts +45 -16
  173. package/dist/meetings/index.js +166 -74
  174. package/dist/meetings/index.js.map +1 -1
  175. package/dist/meetings/request.js +2 -3
  176. package/dist/meetings/request.js.map +1 -1
  177. package/dist/meetings/util.js +3 -10
  178. package/dist/meetings/util.js.map +1 -1
  179. package/dist/{types/member → member}/index.d.ts +1 -0
  180. package/dist/member/index.js +10 -3
  181. package/dist/member/index.js.map +1 -1
  182. package/dist/member/member.types.d.ts +11 -0
  183. package/dist/member/member.types.js +17 -0
  184. package/dist/member/member.types.js.map +1 -0
  185. package/dist/member/types.js +6 -8
  186. package/dist/member/types.js.map +1 -1
  187. package/dist/member/util.js +12 -2
  188. package/dist/member/util.js.map +1 -1
  189. package/dist/members/collection.js +1 -2
  190. package/dist/members/collection.js.map +1 -1
  191. package/dist/members/index.js +25 -8
  192. package/dist/members/index.js.map +1 -1
  193. package/dist/members/request.js +2 -3
  194. package/dist/members/request.js.map +1 -1
  195. package/dist/{types/members → members}/types.d.ts +1 -0
  196. package/dist/members/types.js +3 -4
  197. package/dist/members/types.js.map +1 -1
  198. package/dist/{types/members → members}/util.d.ts +6 -1
  199. package/dist/members/util.js +18 -8
  200. package/dist/members/util.js.map +1 -1
  201. package/dist/{types/metrics → metrics}/constants.d.ts +15 -0
  202. package/dist/metrics/constants.js +16 -3
  203. package/dist/metrics/constants.js.map +1 -1
  204. package/dist/metrics/index.js +3 -2
  205. package/dist/metrics/index.js.map +1 -1
  206. package/dist/multistream/mediaRequestManager.js +9 -11
  207. package/dist/multistream/mediaRequestManager.js.map +1 -1
  208. package/dist/multistream/receiveSlot.js +3 -5
  209. package/dist/multistream/receiveSlot.js.map +1 -1
  210. package/dist/multistream/receiveSlotManager.js +7 -9
  211. package/dist/multistream/receiveSlotManager.js.map +1 -1
  212. package/dist/multistream/remoteMedia.js +3 -5
  213. package/dist/multistream/remoteMedia.js.map +1 -1
  214. package/dist/multistream/remoteMediaGroup.js +7 -6
  215. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  216. package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +9 -1
  217. package/dist/multistream/remoteMediaManager.js +74 -36
  218. package/dist/multistream/remoteMediaManager.js.map +1 -1
  219. package/dist/multistream/sendSlotManager.js +9 -6
  220. package/dist/multistream/sendSlotManager.js.map +1 -1
  221. package/dist/networkQualityMonitor/index.js +1 -2
  222. package/dist/networkQualityMonitor/index.js.map +1 -1
  223. package/dist/personal-meeting-room/index.js +2 -3
  224. package/dist/personal-meeting-room/index.js.map +1 -1
  225. package/dist/personal-meeting-room/request.js +2 -3
  226. package/dist/personal-meeting-room/request.js.map +1 -1
  227. package/dist/personal-meeting-room/util.js +1 -2
  228. package/dist/personal-meeting-room/util.js.map +1 -1
  229. package/dist/reachability/clusterReachability.d.ts +109 -0
  230. package/dist/reachability/clusterReachability.js +357 -0
  231. package/dist/reachability/clusterReachability.js.map +1 -0
  232. package/dist/reachability/index.d.ts +105 -0
  233. package/dist/reachability/index.js +279 -436
  234. package/dist/reachability/index.js.map +1 -1
  235. package/dist/{types/reachability → reachability}/request.d.ts +1 -1
  236. package/dist/reachability/request.js +14 -11
  237. package/dist/reachability/request.js.map +1 -1
  238. package/dist/reachability/util.d.ts +8 -0
  239. package/dist/reachability/util.js +29 -0
  240. package/dist/reachability/util.js.map +1 -0
  241. package/dist/reactions/constants.js +1 -2
  242. package/dist/reactions/constants.js.map +1 -1
  243. package/dist/reactions/reactions.js +2 -4
  244. package/dist/reactions/reactions.js.map +1 -1
  245. package/dist/reactions/reactions.type.js +6 -8
  246. package/dist/reactions/reactions.type.js.map +1 -1
  247. package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +10 -0
  248. package/dist/reconnection-manager/index.js +129 -106
  249. package/dist/reconnection-manager/index.js.map +1 -1
  250. package/dist/recording-controller/enums.js +4 -5
  251. package/dist/recording-controller/enums.js.map +1 -1
  252. package/dist/recording-controller/index.js +43 -51
  253. package/dist/recording-controller/index.js.map +1 -1
  254. package/dist/recording-controller/util.js +1 -2
  255. package/dist/recording-controller/util.js.map +1 -1
  256. package/dist/{types/roap → roap}/index.d.ts +2 -1
  257. package/dist/roap/index.js +59 -28
  258. package/dist/roap/index.js.map +1 -1
  259. package/dist/{types/roap → roap}/request.d.ts +2 -1
  260. package/dist/roap/request.js +14 -22
  261. package/dist/roap/request.js.map +1 -1
  262. package/dist/{types/roap → roap}/turnDiscovery.d.ts +21 -4
  263. package/dist/roap/turnDiscovery.js +182 -89
  264. package/dist/roap/turnDiscovery.js.map +1 -1
  265. package/dist/rtcMetrics/constants.js +1 -2
  266. package/dist/rtcMetrics/constants.js.map +1 -1
  267. package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +15 -1
  268. package/dist/rtcMetrics/index.js +72 -12
  269. package/dist/rtcMetrics/index.js.map +1 -1
  270. package/dist/statsAnalyzer/global.js +1 -2
  271. package/dist/statsAnalyzer/global.js.map +1 -1
  272. package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +28 -11
  273. package/dist/statsAnalyzer/index.js +371 -318
  274. package/dist/statsAnalyzer/index.js.map +1 -1
  275. package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
  276. package/dist/statsAnalyzer/mqaUtil.js +295 -162
  277. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  278. package/dist/transcription/index.js +1 -2
  279. package/dist/transcription/index.js.map +1 -1
  280. package/dist/webinar/collection.d.ts +16 -0
  281. package/dist/webinar/collection.js +43 -0
  282. package/dist/webinar/collection.js.map +1 -0
  283. package/dist/webinar/index.d.ts +5 -0
  284. package/dist/webinar/index.js +68 -0
  285. package/dist/webinar/index.js.map +1 -0
  286. package/jest.config.js +3 -0
  287. package/package.json +44 -24
  288. package/process +1 -0
  289. package/src/common/errors/no-meeting-info.ts +24 -0
  290. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  291. package/src/common/errors/webex-errors.ts +19 -2
  292. package/src/common/logs/request.ts +5 -1
  293. package/src/config.ts +3 -5
  294. package/src/constants.ts +78 -8
  295. package/src/index.ts +4 -0
  296. package/src/interceptors/index.ts +3 -0
  297. package/src/interceptors/locusRetry.ts +67 -0
  298. package/src/locus-info/index.ts +52 -16
  299. package/src/locus-info/mediaSharesUtils.ts +16 -0
  300. package/src/locus-info/parser.ts +47 -21
  301. package/src/media/index.ts +8 -6
  302. package/src/media/properties.ts +17 -2
  303. package/src/mediaQualityMetrics/config.ts +103 -238
  304. package/src/meeting/in-meeting-actions.ts +8 -0
  305. package/src/meeting/index.ts +1692 -627
  306. package/src/meeting/request.ts +19 -1
  307. package/src/meeting/util.ts +102 -1
  308. package/src/meeting/voicea-meeting.ts +122 -0
  309. package/src/meeting-info/index.ts +47 -20
  310. package/src/meeting-info/meeting-info-v2.ts +32 -16
  311. package/src/meeting-info/util.ts +12 -9
  312. package/src/meeting-info/utilv2.ts +25 -15
  313. package/src/meetings/collection.ts +13 -0
  314. package/src/meetings/index.ts +112 -31
  315. package/src/meetings/util.ts +2 -8
  316. package/src/member/index.ts +9 -1
  317. package/src/member/member.types.ts +13 -0
  318. package/src/member/util.ts +14 -0
  319. package/src/members/index.ts +29 -2
  320. package/src/members/types.ts +1 -0
  321. package/src/members/util.ts +15 -1
  322. package/src/metrics/constants.ts +14 -0
  323. package/src/multistream/remoteMediaManager.ts +41 -4
  324. package/src/reachability/clusterReachability.ts +320 -0
  325. package/src/reachability/index.ts +221 -382
  326. package/src/reachability/request.ts +1 -1
  327. package/src/reachability/util.ts +24 -0
  328. package/src/reconnection-manager/index.ts +87 -83
  329. package/src/roap/index.ts +60 -24
  330. package/src/roap/request.ts +4 -17
  331. package/src/roap/turnDiscovery.ts +112 -39
  332. package/src/rtcMetrics/index.ts +71 -5
  333. package/src/statsAnalyzer/index.ts +430 -427
  334. package/src/statsAnalyzer/mqaUtil.ts +317 -168
  335. package/src/webinar/collection.ts +31 -0
  336. package/src/webinar/index.ts +62 -0
  337. package/test/integration/spec/converged-space-meetings.js +7 -7
  338. package/test/integration/spec/journey.js +88 -106
  339. package/test/integration/spec/space-meeting.js +10 -10
  340. package/test/unit/spec/breakouts/breakout.ts +2 -1
  341. package/test/unit/spec/breakouts/index.ts +7 -4
  342. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  343. package/test/unit/spec/locus-info/index.js +206 -13
  344. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  345. package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
  346. package/test/unit/spec/locus-info/parser.js +54 -13
  347. package/test/unit/spec/locus-info/selfUtils.js +1 -1
  348. package/test/unit/spec/media/index.ts +25 -4
  349. package/test/unit/spec/media/properties.ts +2 -2
  350. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  351. package/test/unit/spec/meeting/index.js +4354 -1285
  352. package/test/unit/spec/meeting/request.js +63 -12
  353. package/test/unit/spec/meeting/utils.js +145 -10
  354. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  355. package/test/unit/spec/meeting-info/index.js +180 -61
  356. package/test/unit/spec/meeting-info/meetinginfov2.js +216 -68
  357. package/test/unit/spec/meetings/collection.js +12 -0
  358. package/test/unit/spec/meetings/index.js +676 -195
  359. package/test/unit/spec/meetings/utils.js +35 -12
  360. package/test/unit/spec/member/index.js +8 -7
  361. package/test/unit/spec/member/util.js +32 -0
  362. package/test/unit/spec/members/index.js +130 -17
  363. package/test/unit/spec/members/utils.js +26 -0
  364. package/test/unit/spec/metrics/index.js +1 -2
  365. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  366. package/test/unit/spec/multistream/remoteMediaManager.ts +10 -2
  367. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  368. package/test/unit/spec/reachability/index.ts +505 -135
  369. package/test/unit/spec/reachability/util.ts +40 -0
  370. package/test/unit/spec/reconnection-manager/index.js +74 -17
  371. package/test/unit/spec/recording-controller/index.js +0 -1
  372. package/test/unit/spec/roap/index.ts +181 -61
  373. package/test/unit/spec/roap/request.ts +27 -3
  374. package/test/unit/spec/roap/turnDiscovery.ts +363 -102
  375. package/test/unit/spec/rtcMetrics/index.ts +57 -3
  376. package/test/unit/spec/stats-analyzer/index.js +1225 -12
  377. package/test/unit/spec/webinar/collection.ts +13 -0
  378. package/test/unit/spec/webinar/index.ts +60 -0
  379. package/test/utils/integrationTestUtils.js +4 -4
  380. package/test/utils/webex-test-users.js +12 -4
  381. package/dist/types/mediaQualityMetrics/config.d.ts +0 -365
  382. package/dist/types/reachability/index.d.ts +0 -158
  383. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -24
  384. /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
  385. /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
  386. /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
  387. /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
  388. /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
  389. /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
  390. /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
  391. /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
  392. /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
  393. /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
  394. /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
  395. /package/dist/{types/common → common}/collection.d.ts +0 -0
  396. /package/dist/{types/common → common}/config.d.ts +0 -0
  397. /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
  398. /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
  399. /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
  400. /package/dist/{types/common → common}/errors/media.d.ts +0 -0
  401. /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
  402. /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
  403. /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
  404. /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
  405. /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
  406. /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
  407. /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
  408. /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
  409. /package/dist/{types/common → common}/events/events.d.ts +0 -0
  410. /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
  411. /package/dist/{types/common → common}/events/util.d.ts +0 -0
  412. /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
  413. /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
  414. /package/dist/{types/common → common}/queue.d.ts +0 -0
  415. /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
  416. /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
  417. /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
  418. /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
  419. /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
  420. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  421. /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
  422. /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
  423. /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
  424. /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
  425. /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
  426. /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
  427. /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
  428. /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
  429. /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
  430. /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
  431. /package/dist/{types/media → media}/index.d.ts +0 -0
  432. /package/dist/{types/media → media}/properties.d.ts +0 -0
  433. /package/dist/{types/media → media}/util.d.ts +0 -0
  434. /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
  435. /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
  436. /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
  437. /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
  438. /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
  439. /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
  440. /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
  441. /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
  442. /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
  443. /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
  444. /package/dist/{types/member → member}/types.d.ts +0 -0
  445. /package/dist/{types/member → member}/util.d.ts +0 -0
  446. /package/dist/{types/members → members}/collection.d.ts +0 -0
  447. /package/dist/{types/members → members}/index.d.ts +0 -0
  448. /package/dist/{types/members → members}/request.d.ts +0 -0
  449. /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
  450. /package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +0 -0
  451. /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
  452. /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
  453. /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
  454. /package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +0 -0
  455. /package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +0 -0
  456. /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
  457. /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
  458. /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
  459. /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
  460. /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
  461. /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
  462. /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
  463. /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
  464. /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
  465. /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
  466. /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
  467. /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
  468. /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
  469. /package/test/unit/spec/locus-info/{selfConstant.js → lib/selfConstant.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["LocusInfo","updateMeeting","webex","meetingId","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","meeting","isDelta","url","workingCopy","syncUrl","locusUrl","LoggerProxy","logger","info","meetingRequest","getLocusDTO","then","res","body","locusInfo","handleLocusDelta","onFullLocus","finally","resume","action","locus","loci","DESYNC","USE_CURRENT","USE_INCOMING","WAIT","onDeltaLocus","doLocusSync","onDeltaAction","parsedLoci","applyLocusDeltaData","onDeltaEvent","created","scheduledMeeting","participantsUrl","replaces","aclUrl","baseSequence","sequence","membership","identities","participants","deltaParticipants","updateLocusCache","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","self","updateLocusUrl","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","data","eventType","getTheLocusToUpdate","LOCUSEVENT","PARTICIPANT_JOIN","PARTICIPANT_LEFT","CONTROLS_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","SELF_CHANGED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_DECLINED","FLOOR_GRANTED","FLOOR_RELEASED","DIFFERENCE","scope","eventName","args","emit","error","isNewFullLocus","updateParticipantDeltas","isReplaceMembers","ControlsUtils","isNeedReplaceMembers","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","type","_CALL_","_SIP_BRIDGE_","emitScoped","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","reason","state","updateCreated","updateParticipantsUrl","updateReplace","replace","updateAclUrl","updateBasequence","updateSequence","updateMemberShip","updateIdentifiers","compareAndUpdate","length","find","participant","identity","_USER_","removed","partner","getLocusPartner","LOCUS","STATE","INACTIVE","warn","internal","newMetrics","submitClientEvent","name","options","DESTROY_MEETING","CALL_REMOVED_REASON","CALL_INACTIVE","shouldLeave","MEETING_STATE","STATES","LEFT","DECLINED","NOTIFIED","JOINED","PARTNER_LEFT","joinedWith","_LEFT_","IDLE","SELF_LEFT","_MEETING_","TERMINATING","MEETING_REMOVED_REASON","MEETING_INACTIVE_TERMINATING","FULLSTATE_REMOVED","SELF_REMOVED","compareSelfAndHost","compareHostAndSelf","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","findParticipant","collection","item","person","id","generateDelta","prevState","newState","deltas","audioStatus","videoSlidesStatus","videoStatus","forEach","key","reduce","existingParticipant","delta","status","changed","push","isReplace","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","parse","getControls","updates","hasRecordingChanged","hasRecordingPausedChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasEntryExitToneChanged","hasBreakoutChanged","hasVideoEnabledChanged","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasInterpretationChanged","current","LOCUSINFO","CONTROLS_MUTE_ON_ENTRY_CHANGED","muteOnEntry","CONTROLS_SHARE_CONTROL_CHANGED","shareControl","CONTROLS_DISALLOW_UNMUTE_CHANGED","disallowUnmute","CONTROLS_REACTIONS_CHANGED","reactions","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","viewTheParticipantList","CONTROLS_RAISE_HAND_CHANGED","raiseHand","CONTROLS_VIDEO_CHANGED","video","paused","RECORDING_STATE","PAUSED","recording","RESUMED","RECORDING","CONTROLS_RECORDING_UPDATED","lastModified","meetingContainerUrl","meetingContainer","CONTROLS_MEETING_CONTAINER_UPDATED","transcribe","transcribing","caption","CONTROLS_MEETING_TRANSCRIBE_UPDATED","breakout","breakoutMoveId","SelfUtils","getReplacedBreakoutMoveId","device","CONTROLS_MEETING_BREAKOUT_UPDATED","interpretation","CONTROLS_MEETING_INTERPRETATION_UPDATED","entryExitTone","CONTROLS_ENTRY_EXIT_TONE_UPDATED","videoEnabled","unmuteVideoAllowed","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","unmuteAllowed","LINKS_SERVICES","result","FullState","getFullState","meetingStateChangedTo","FULL_STATE_MEETING_STATE_CHANGE","previousState","previous","meetingState","currentState","meetingTypeChangedTo","FULL_STATE_TYPE_UPDATE","parsedHosts","HostUtils","getHosts","isNewHost","LOCUS_INFO_UPDATE_HOST","newHost","oldHost","roles","getRoles","isJoined","parsedInfo","InfoUtils","getInfos","isLocked","MEETING_LOCKED","isUnlocked","MEETING_UNLOCKED","MEETING_INFO_UPDATED","EmbeddedAppsUtils","areSimilar","parsedEmbeddedApps","EMBEDDED_APPS_UPDATED","parsedMediaShares","MediaSharesUtils","getMediaShares","LOCUS_INFO_UPDATE_MEDIA_SHARES","parsedSelves","getSelves","element","getSipUrl","sipUri","moderatorChanged","layoutChanged","CONTROLS_MEETING_LAYOUT_UPDATED","layout","breakoutsChanged","SELF_MEETING_BREAKOUTS_CHANGED","breakoutSessions","interpretationChanged","SELF_MEETING_INTERPRETATION_CHANGED","selfParticipantId","isMediaInactiveOrReleased","DISCONNECT_DUE_TO_INACTIVITY","SELF_MODERATOR_CHANGED","isRolesChanged","SELF_ROLES_CHANGED","oldRoles","newRoles","isVideoMutedByOthersChanged","muted","remoteVideoMuted","localAudioUnmuteRequiredByServer","LOCAL_UNMUTE_REQUIRED","remoteMuted","isMutedByOthersChanged","SELF_REMOTE_MUTE_STATUS_UPDATED","localAudioUnmuteRequestedByServer","LOCAL_UNMUTE_REQUESTED","isUserUnadmitted","SELF_UNADMITTED_GUEST","isUserAdmitted","SELF_ADMITTED_GUEST","isMediaInactive","MEDIA_INACTIVITY","getMediaStatus","mediaSessions","audioStateChange","videoStateChange","shareStateChange","MEDIA_STATUS_CHANGE","currentMediaStatus","audio","shareStatus","share","isUserObserving","SELF_OBSERVING","canNotViewTheParticipantListChanged","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","canNotViewTheParticipantList","isSharingBlockedChanged","SELF_IS_SHARING_BLOCKED_CHANGE","isSharingBlocked","LOCUS_INFO_UPDATE_SELF","oldSelf","newSelf","LOCUS_INFO_UPDATE_URL","isMainSessionDTO","updateMainSessionLocusCache","newLocus","switchStatus","getSessionSwitchStatus","isReturnToMain","mainSessionLocusCache","isJoinToBreakout","CONTROLS_JOIN_BREAKOUT_FROM_MAIN","mainLocusUrl","sourceParticipants","existIndex","findIndex","p","splice","mainLocus","locusClone","objValue","srcValue","mergeParticipants","EventsScope"],"sources":["index.ts"],"sourcesContent":["import {isEqual, assignWith, cloneDeep, isEmpty} from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\nimport {\n EVENTS,\n LOCUSEVENT,\n _USER_,\n _CALL_,\n _SIP_BRIDGE_,\n MEETING_STATE,\n _MEETING_,\n LOCUSINFO,\n LOCUS,\n _LEFT_,\n MEETING_REMOVED_REASON,\n CALL_REMOVED_REASON,\n RECORDING_STATE,\n} from '../constants';\nimport InfoUtils from './infoUtils';\nimport FullState from './fullState';\nimport SelfUtils from './selfUtils';\nimport HostUtils from './hostUtils';\nimport ControlsUtils from './controlsUtils';\nimport EmbeddedAppsUtils from './embeddedAppsUtils';\nimport MediaSharesUtils from './mediaSharesUtils';\nimport LocusDeltaParser from './parser';\n\n/**\n * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object\n * @export\n * @private\n * @class LocusInfo\n */\nexport default class LocusInfo extends EventsScope {\n compareAndUpdateFlags: any;\n emitChange: any;\n locusParser: any;\n meetingId: any;\n parsedLocus: any;\n updateMeeting: any;\n webex: any;\n aclUrl: any;\n baseSequence: any;\n created: any;\n deltaParticipants: any;\n identities: any;\n membership: any;\n participants: any;\n participantsUrl: any;\n replaces: any;\n scheduledMeeting: any;\n sequence: any;\n controls: any;\n conversationUrl: any;\n embeddedApps: any;\n fullState: any;\n host: any;\n info: any;\n roles: any;\n mediaShares: any;\n replace: any;\n url: any;\n services: any;\n mainSessionLocusCache: any;\n /**\n * Constructor\n * @param {function} updateMeeting callback to update the meeting object from an object\n * @param {object} webex\n * @param {string} meetingId\n * @returns {undefined}\n */\n constructor(updateMeeting, webex, meetingId) {\n super();\n this.parsedLocus = {\n states: [],\n };\n this.webex = webex;\n this.emitChange = false;\n this.compareAndUpdateFlags = {};\n this.meetingId = meetingId;\n this.updateMeeting = updateMeeting;\n this.locusParser = new LocusDeltaParser();\n }\n\n /**\n * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.\n *\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n private doLocusSync(meeting: any) {\n let isDelta;\n let url;\n\n if (this.locusParser.workingCopy.syncUrl) {\n url = this.locusParser.workingCopy.syncUrl;\n isDelta = true;\n } else {\n url = meeting.locusUrl;\n isDelta = false;\n }\n\n LoggerProxy.logger.info(\n `Locus-info:index#doLocusSync --> doing Locus sync (getting ${\n isDelta ? 'delta' : 'full'\n } DTO)`\n );\n\n // return value ignored on purpose\n meeting.meetingRequest\n .getLocusDTO({url})\n .then((res) => {\n if (isDelta) {\n if (!isEmpty(res.body)) {\n meeting.locusInfo.handleLocusDelta(res.body, meeting);\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO'\n );\n }\n } else {\n meeting.locusInfo.onFullLocus(res.body);\n }\n })\n .finally(() => {\n // Notify parser to resume processing delta events.\n // Any deltas in the queue that have now been superseded by this sync will simply be ignored\n this.locusParser.resume();\n });\n }\n\n /**\n * Apply locus delta data to meeting\n * @param {string} action Locus delta action\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n applyLocusDeltaData(action: string, locus: any, meeting: any) {\n const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT} = LocusDeltaParser.loci;\n\n switch (action) {\n case USE_INCOMING:\n meeting.locusInfo.onDeltaLocus(locus);\n break;\n case USE_CURRENT:\n case WAIT:\n // do nothing\n break;\n case DESYNC:\n this.doLocusSync(meeting);\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ${action}`\n );\n }\n }\n\n /**\n * Adds locus delta to parser's queue\n * and registers a function handler\n * to recieve parsed actions from queue.\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n handleLocusDelta(locus: any, meeting: any) {\n // register a function to process delta actions\n if (!this.locusParser.onDeltaAction) {\n // delta action, along with associated loci\n // is passed into the function.\n this.locusParser.onDeltaAction = (action, parsedLoci) => {\n this.applyLocusDeltaData(action, parsedLoci, meeting);\n };\n }\n // queue delta event with parser\n this.locusParser.onDeltaEvent(locus);\n }\n\n /**\n * @param {Locus} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n init(locus: any = {}) {\n this.created = locus.created || null;\n this.scheduledMeeting = locus.meeting || null;\n this.participantsUrl = locus.participantsUrl || null;\n this.replaces = locus.replaces || null;\n this.aclUrl = locus.aclUrl || null;\n this.baseSequence = locus.baseSequence || null;\n this.sequence = locus.sequence || null;\n this.membership = locus.membership || null;\n this.identities = locus.identities || null;\n this.participants = locus.participants || null;\n\n /**\n * Stores the delta values for a changed participant.\n *\n * @typedef {Object} DeltaParticipant\n * @property {Record<string, boolean>} delta - Contains changed streams.\n * @property {Object} person - Contains person data.\n */\n\n /**\n * Stored participant changes between the last event and the current event.\n * All previously stored events are overwritten between events.\n *\n * @instance\n * @type {Array<DeltaParticipant>}\n * @private\n * @member LocusInfo\n */\n this.deltaParticipants = [];\n\n this.updateLocusCache(locus);\n // above section only updates the locusInfo object\n // The below section makes sure it updates the locusInfo as well as updates the meeting object\n this.updateParticipants(locus.participants);\n // For 1:1 space meeting the conversation Url does not exist in locus.conversation\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateControls(locus.controls, locus.self);\n this.updateLocusUrl(locus.url);\n this.updateFullState(locus.fullState);\n this.updateMeetingInfo(locus.info);\n this.updateEmbeddedApps(locus.embeddedApps);\n // self and participants generate sipUrl for 1:1 meeting\n this.updateSelf(locus.self, locus.participants);\n this.updateHostInfo(locus.host);\n this.updateMediaShares(locus.mediaShares);\n this.updateServices(locus.links?.services);\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n initialSetup(locus: object) {\n this.updateLocusCache(locus);\n this.onFullLocus(locus);\n\n // Change it to true after it receives it first locus object\n this.emitChange = true;\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} data\n * @returns {undefined}\n * @memberof LocusInfo\n */\n parse(meeting: any, data: any) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n const locus = this.getTheLocusToUpdate(data.locus);\n LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);\n\n switch (eventType) {\n case LOCUSEVENT.PARTICIPANT_JOIN:\n case LOCUSEVENT.PARTICIPANT_LEFT:\n case LOCUSEVENT.CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:\n case LOCUSEVENT.SELF_CHANGED:\n case LOCUSEVENT.PARTICIPANT_UPDATED:\n case LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:\n case LOCUSEVENT.PARTICIPANT_DECLINED:\n case LOCUSEVENT.FLOOR_GRANTED:\n case LOCUSEVENT.FLOOR_RELEASED:\n this.onFullLocus(locus, eventType);\n break;\n case LOCUSEVENT.DIFFERENCE:\n this.handleLocusDelta(locus, meeting);\n break;\n\n default:\n // Why will there be a event with no eventType ????\n // we may not need this, we can get full locus\n this.handleLocusDelta(locus, meeting);\n }\n }\n\n /**\n * @param {String} scope\n * @param {String} eventName\n * @param {Array} args\n * @returns {undefined}\n * @memberof LocusInfo\n */\n emitScoped(scope?: any, eventName?: string, args?: any) {\n return this.emit(scope, eventName, args);\n }\n\n /**\n * updates the locus with full locus object\n * @param {object} locus locus object\n * @param {string} eventType particulat locus event\n * @returns {object} null\n * @memberof LocusInfo\n */\n onFullLocus(locus: any, eventType?: string) {\n if (!locus) {\n LoggerProxy.logger.error(\n 'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'\n );\n }\n\n if (!this.locusParser.isNewFullLocus(locus)) {\n LoggerProxy.logger.info(\n `Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=${eventType}`\n );\n\n return;\n }\n\n this.updateParticipantDeltas(locus.participants);\n this.scheduledMeeting = locus.meeting || null;\n this.participants = locus.participants;\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants, isReplaceMembers);\n this.isMeetingActive();\n this.handleOneOnOneEvent(eventType);\n this.updateEmbeddedApps(locus.embeddedApps);\n // set current (working copy) for parser\n this.locusParser.workingCopy = locus;\n }\n\n // used for ringing stops on one on one\n /**\n * @param {String} eventType\n * @returns {undefined}\n * @memberof LocusInfo\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n handleOneOnOneEvent(eventType: string) {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // for 1:1 bob calls alice and alice declines, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: true,\n remoteAnswered: false,\n }\n );\n }\n // for 1:1 bob calls alice and alice answers, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_JOIN) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: false,\n remoteAnswered: true,\n }\n );\n }\n }\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n onDeltaLocus(locus: any) {\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants, isReplaceMembers);\n this.isMeetingActive();\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusInfo(locus) {\n if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {\n // When moved to a breakout session locus sends a message for the previous locus\n // indicating that we have been moved. It isn't helpful to continue parsing this\n // as it gets interpreted as if we have left the call\n return;\n }\n\n this.updateControls(locus.controls, locus.self);\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateCreated(locus.created);\n this.updateFullState(locus.fullState);\n this.updateHostInfo(locus.host);\n this.updateMeetingInfo(locus.info, locus.self);\n this.updateMediaShares(locus.mediaShares);\n this.updateParticipantsUrl(locus.participantsUrl);\n this.updateReplace(locus.replace);\n this.updateSelf(locus.self, locus.participants);\n this.updateLocusUrl(locus.url);\n this.updateAclUrl(locus.aclUrl);\n this.updateBasequence(locus.baseSequence);\n this.updateSequence(locus.sequence);\n this.updateMemberShip(locus.membership);\n this.updateIdentifiers(locus.identities);\n this.updateEmbeddedApps(locus.embeddedApps);\n this.updateServices(locus.links?.services);\n this.compareAndUpdate();\n // update which required to compare different objects from locus\n }\n\n /**\n * @param {Array} participants\n * @param {Object} self\n * @returns {Array}\n * @memberof LocusInfo\n */\n getLocusPartner(participants: Array<any>, self: any) {\n if (!participants || participants.length === 0) {\n return null;\n }\n\n return (\n participants.find(\n (participant) =>\n self &&\n participant.identity !== self.identity &&\n (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))\n // @ts-ignore\n ) || this.partner\n );\n }\n\n // TODO: all the leave states need to be checked\n /**\n * @returns {undefined}\n * @memberof LocusInfo\n */\n isMeetingActive() {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // @ts-ignore\n const partner = this.getLocusPartner(this.participants, this.self);\n\n this.updateMeeting({partner});\n\n // Check if guest user needs to be checked here\n\n // 1) when bob declines call from bob, (bob='DECLINED')\n // 2) When alice rejects call to bob , (bob='NOTIFIED')\n\n // When we dont add MEDIA for condition 2. The state of bob='IDLE'\n\n if (this.fullState && this.fullState.state === LOCUS.STATE.INACTIVE) {\n // TODO: update the meeting state\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.CALL_INACTIVE,\n shouldLeave: false,\n }\n );\n } else if (\n partner.state === MEETING_STATE.STATES.LEFT &&\n this.parsedLocus.self &&\n (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.PARTNER_LEFT,\n shouldLeave:\n this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,\n }\n );\n } else if (\n this.parsedLocus.self &&\n this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&\n (partner.state === MEETING_STATE.STATES.LEFT ||\n partner.state === MEETING_STATE.STATES.DECLINED ||\n partner.state === MEETING_STATE.STATES.NOTIFIED ||\n partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.SELF_LEFT,\n shouldLeave: false,\n }\n );\n }\n } else if (this.parsedLocus.fullState.type === _MEETING_) {\n if (\n this.fullState &&\n (this.fullState.state === LOCUS.STATE.INACTIVE ||\n // @ts-ignore\n this.fullState.state === LOCUS.STATE.TERMINATING)\n ) {\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,\n shouldLeave: false,\n }\n );\n } else if (this.fullState && this.fullState.removed) {\n // user has been dropped from a meeting\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.FULLSTATE_REMOVED,\n shouldLeave: false,\n }\n );\n }\n // If you are guest and you are removed from the meeting\n // You wont get any further events\n else if (this.parsedLocus.self && this.parsedLocus.self.removed) {\n // Check if we need to send an event\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.SELF_REMOVED,\n shouldLeave: false,\n }\n );\n }\n } else {\n LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');\n }\n }\n\n /**\n * checks if the host permissions have changed while in the meeting\n * This would be the case if your role as host or moderator has been updated\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareAndUpdate() {\n // TODO: check with locus team on host and moderator doc\n // use host as a validator if needed\n if (\n this.compareAndUpdateFlags.compareSelfAndHost ||\n this.compareAndUpdateFlags.compareHostAndSelf\n ) {\n this.compareSelfAndHost();\n }\n }\n\n /**\n * compared the self object to check if the user has host permissions\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareSelfAndHost() {\n // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update\n if (\n this.parsedLocus.self.selfIdentity === this.parsedLocus.host?.hostId &&\n this.parsedLocus.self.moderator\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: true,\n }\n );\n } else {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: false,\n }\n );\n }\n }\n\n /**\n * Update the deltaParticipants property of this object based on a list of\n * provided participants.\n *\n * @param {Array} [participants] - The participants to update against.\n * @returns {void}\n */\n updateParticipantDeltas(participants: Array<any> = []) {\n // Used to find a participant within a participants collection.\n const findParticipant = (participant, collection) =>\n collection.find((item) => item.person.id === participant.person.id);\n\n // Generates an object that indicates which state properties have changed.\n const generateDelta = (prevState: any = {}, newState: any = {}) => {\n // Setup deltas.\n const deltas = {\n audioStatus: prevState.audioStatus !== newState.audioStatus,\n videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,\n videoStatus: prevState.videoStatus !== newState.videoStatus,\n };\n\n // Clean the object\n Object.keys(deltas).forEach((key) => {\n if (deltas[key] !== true) {\n delete deltas[key];\n }\n });\n\n return deltas;\n };\n\n this.deltaParticipants = participants.reduce((collection, participant) => {\n const existingParticipant = findParticipant(participant, this.participants || []) || {};\n\n const delta = generateDelta(existingParticipant.status, participant.status);\n\n const changed = Object.keys(delta).length > 0;\n\n if (changed) {\n collection.push({\n person: participant.person,\n delta,\n });\n }\n\n return collection;\n }, []);\n }\n\n /**\n * update meeting's members\n * @param {Object} participants new participants object\n * @param {Boolean} isReplace is replace the whole members\n * @returns {Array} updatedParticipants\n * @memberof LocusInfo\n */\n updateParticipants(participants: object, isReplace?: boolean) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\n {\n participants,\n recordingId: this.parsedLocus.controls && this.parsedLocus.controls.record?.modifiedBy,\n selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,\n selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,\n hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,\n isReplace,\n }\n );\n }\n\n /**\n * @param {Object} controls\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateControls(controls: object, self: object) {\n if (controls && !isEqual(this.controls, controls)) {\n this.parsedLocus.controls = ControlsUtils.parse(controls);\n const {\n updates: {\n hasRecordingChanged,\n hasRecordingPausedChanged,\n hasMeetingContainerChanged,\n hasTranscribeChanged,\n hasEntryExitToneChanged,\n hasBreakoutChanged,\n hasVideoEnabledChanged,\n hasMuteOnEntryChanged,\n hasShareControlChanged,\n hasDisallowUnmuteChanged,\n hasReactionsChanged,\n hasReactionDisplayNamesChanged,\n hasViewTheParticipantListChanged,\n hasRaiseHandChanged,\n hasVideoChanged,\n hasInterpretationChanged,\n },\n current,\n } = ControlsUtils.getControls(this.controls, controls);\n\n if (hasMuteOnEntryChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED,\n {state: current.muteOnEntry}\n );\n }\n\n if (hasShareControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED,\n {state: current.shareControl}\n );\n }\n\n if (hasDisallowUnmuteChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED,\n {state: current.disallowUnmute}\n );\n }\n\n if (hasReactionsChanged || hasReactionDisplayNamesChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED,\n {state: current.reactions}\n );\n }\n\n if (hasViewTheParticipantListChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED,\n {state: current.viewTheParticipantList}\n );\n }\n\n if (hasRaiseHandChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED,\n {state: current.raiseHand}\n );\n }\n\n if (hasVideoChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED,\n {state: current.video}\n );\n }\n\n if (hasRecordingChanged || hasRecordingPausedChanged) {\n let state = null;\n\n if (hasRecordingPausedChanged) {\n if (current.record.paused) {\n state = RECORDING_STATE.PAUSED;\n } else {\n // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.\n state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;\n }\n } else if (hasRecordingChanged) {\n state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n {\n state,\n modifiedBy: current.record.modifiedBy,\n lastModified: current.record.lastModified,\n }\n );\n }\n\n if (hasMeetingContainerChanged) {\n const {meetingContainerUrl} = current.meetingContainer;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n {\n meetingContainerUrl,\n }\n );\n }\n\n if (hasTranscribeChanged) {\n const {transcribing, caption} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n {\n transcribing,\n caption,\n }\n );\n }\n\n if (hasBreakoutChanged) {\n const {breakout} = current;\n breakout.breakoutMoveId = SelfUtils.getReplacedBreakoutMoveId(\n self,\n this.webex.internal.device.url\n );\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,\n {\n breakout,\n }\n );\n }\n\n if (hasInterpretationChanged) {\n const {interpretation} = current;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED,\n {\n interpretation,\n }\n );\n }\n\n if (hasEntryExitToneChanged) {\n const {entryExitTone} = current;\n\n this.updateMeeting({entryExitTone});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,\n {\n entryExitTone,\n }\n );\n }\n\n // videoEnabled is handled differently than other controls,\n // to fit with audio mute status logic\n if (hasVideoEnabledChanged) {\n const {videoEnabled} = current;\n\n this.updateMeeting({unmuteVideoAllowed: videoEnabled});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n // muted: not part of locus.controls\n unmuteAllowed: videoEnabled,\n }\n );\n }\n\n this.controls = controls;\n }\n }\n\n /**\n * @param {String} conversationUrl\n * @param {Object} info\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateConversationUrl(conversationUrl: string, info: any) {\n if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {\n this.conversationUrl = conversationUrl;\n this.updateMeeting({conversationUrl});\n } else if (\n info &&\n info.conversationUrl &&\n !isEqual(this.conversationUrl, info.conversationUrl)\n ) {\n this.conversationUrl = info.conversationUrl;\n this.updateMeeting({conversationUrl: info.conversationUrl});\n }\n }\n\n /**\n * @param {Object} created\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateCreated(created: object) {\n if (created && !isEqual(this.created, created)) {\n this.created = created;\n }\n }\n\n /**\n * @param {Object} services\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateServices(services: Record<'breakout' | 'record', {url: string}>) {\n if (services && !isEqual(this.services, services)) {\n this.services = services;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateServices',\n },\n LOCUSINFO.EVENTS.LINKS_SERVICES,\n {\n services,\n }\n );\n }\n }\n\n /**\n * @param {Object} fullState\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateFullState(fullState: object) {\n if (fullState && !isEqual(this.fullState, fullState)) {\n const result = FullState.getFullState(this.fullState, fullState);\n\n this.updateMeeting(result.current);\n\n if (result.updates.meetingStateChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE,\n {\n previousState: result.previous && result.previous.meetingState,\n currentState: result.current.meetingState,\n }\n );\n }\n\n if (result.updates.meetingTypeChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE,\n {\n type: result.current.type,\n }\n );\n }\n this.parsedLocus.fullState = result.current;\n this.fullState = fullState;\n }\n }\n\n /**\n * handles when the locus.host is updated\n * @param {Object} host the locus.host property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_host\n */\n updateHostInfo(host: object) {\n if (host && !isEqual(this.host, host)) {\n const parsedHosts = HostUtils.getHosts(this.host, host);\n\n this.updateMeeting(parsedHosts.current);\n this.parsedLocus.host = parsedHosts.current;\n if (parsedHosts.updates.isNewHost) {\n this.compareAndUpdateFlags.compareSelfAndHost = true;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateHostInfo',\n },\n EVENTS.LOCUS_INFO_UPDATE_HOST,\n {\n newHost: parsedHosts.current,\n oldHost: parsedHosts.previous,\n }\n );\n }\n this.host = host;\n } else {\n this.compareAndUpdateFlags.compareSelfAndHost = false;\n }\n }\n\n /**\n * @param {Object} info\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMeetingInfo(info: object, self?: object) {\n const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];\n if (\n (info && !isEqual(this.info, info)) ||\n (roles.length && !isEqual(this.roles, roles) && info)\n ) {\n const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);\n const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);\n\n if (parsedInfo.updates.isLocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_LOCKED,\n info\n );\n }\n if (parsedInfo.updates.isUnlocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_UNLOCKED,\n info\n );\n }\n\n this.info = info;\n this.parsedLocus.info = parsedInfo.current;\n // Parses the info and adds necessary values\n this.updateMeeting(parsedInfo.current);\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_INFO_UPDATED\n );\n }\n this.roles = roles;\n }\n\n /**\n * @param {Object} embeddedApps\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateEmbeddedApps(embeddedApps: object) {\n // don't do anything if the arrays of apps haven't changed significantly\n if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {\n return;\n }\n\n const parsedEmbeddedApps = EmbeddedAppsUtils.parse(embeddedApps);\n\n this.updateMeeting({embeddedApps: parsedEmbeddedApps});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateEmbeddedApps',\n },\n LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED,\n parsedEmbeddedApps\n );\n this.embeddedApps = embeddedApps;\n }\n\n /**\n * handles when the locus.mediaShares is updated\n * @param {Object} mediaShares the locus.mediaShares property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_media_shares\n */\n updateMediaShares(mediaShares: object) {\n if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {\n const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);\n\n this.updateMeeting(parsedMediaShares.current);\n this.parsedLocus.mediaShares = parsedMediaShares.current;\n this.mediaShares = mediaShares;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMediaShares',\n },\n EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,\n {\n current: parsedMediaShares.current,\n previous: parsedMediaShares.previous,\n }\n );\n }\n }\n\n /**\n * @param {String} participantsUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateParticipantsUrl(participantsUrl: string) {\n if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {\n this.participantsUrl = participantsUrl;\n }\n }\n\n /**\n * @param {Object} replace\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateReplace(replace: object) {\n if (replace && !isEqual(this.replace, replace)) {\n this.replace = replace;\n }\n }\n\n /**\n * handles when the locus.self is updated\n * @param {Object} self the locus.mediaShares property\n * @param {Array} participants the locus.participants property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self\n */\n updateSelf(self: any, participants: Array<any>) {\n // @ts-ignore - check where this.self come from\n if (self && !isEqual(this.self, self)) {\n // @ts-ignore\n const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);\n\n this.updateMeeting(parsedSelves.current);\n this.parsedLocus.self = parsedSelves.current;\n\n const element = this.parsedLocus.states[this.parsedLocus.states.length - 1];\n\n if (element !== parsedSelves.current.state) {\n this.parsedLocus.states.push(parsedSelves.current.state);\n }\n\n // TODO: check if we need to save the sipUri here as well\n // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));\n const result = SelfUtils.getSipUrl(\n this.getLocusPartner(participants, self),\n this.parsedLocus.fullState.type,\n this.parsedLocus.info.sipUri\n );\n\n if (result.sipUri) {\n this.updateMeeting(result);\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.compareAndUpdateFlags.compareHostAndSelf = true;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n\n if (parsedSelves.updates.layoutChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED,\n {layout: parsedSelves.current.layout}\n );\n }\n\n if (parsedSelves.updates.breakoutsChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,\n {breakoutSessions: parsedSelves.current.breakoutSessions}\n );\n }\n\n if (parsedSelves.updates.interpretationChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED,\n {\n interpretation: parsedSelves.current.interpretation,\n selfParticipantId: parsedSelves.current.selfId,\n }\n );\n }\n\n if (parsedSelves.updates.isMediaInactiveOrReleased) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.DISCONNECT_DUE_TO_INACTIVITY,\n {reason: self.reason}\n );\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED,\n self\n );\n }\n\n if (parsedSelves.updates.isRolesChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ROLES_CHANGED,\n {oldRoles: parsedSelves.previous?.roles, newRoles: parsedSelves.current?.roles}\n );\n }\n\n if (parsedSelves.updates.isVideoMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteVideoMuted,\n // unmuteAllowed: not part of .self\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.isMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED,\n {}\n );\n }\n if (parsedSelves.updates.isUserUnadmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST,\n self\n );\n }\n if (parsedSelves.updates.isUserAdmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST,\n self\n );\n }\n\n if (parsedSelves.updates.isMediaInactive) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n // @ts-ignore\n LOCUSINFO.EVENTS.MEDIA_INACTIVITY,\n SelfUtils.getMediaStatus(self.mediaSessions)\n );\n }\n\n if (\n parsedSelves.updates.audioStateChange ||\n parsedSelves.updates.videoStateChange ||\n parsedSelves.updates.shareStateChange\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE,\n {\n audioStatus: parsedSelves.current.currentMediaStatus?.audio,\n videoStatus: parsedSelves.current.currentMediaStatus?.video,\n shareStatus: parsedSelves.current.currentMediaStatus?.share,\n }\n );\n }\n\n if (parsedSelves.updates.isUserObserving) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_OBSERVING\n );\n }\n\n if (parsedSelves.updates.canNotViewTheParticipantListChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE,\n {canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList}\n );\n }\n\n if (parsedSelves.updates.isSharingBlockedChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE,\n {isSharingBlocked: parsedSelves.current.isSharingBlocked}\n );\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n EVENTS.LOCUS_INFO_UPDATE_SELF,\n {\n oldSelf: parsedSelves.previous,\n newSelf: parsedSelves.current,\n }\n );\n this.parsedLocus.self = parsedSelves.current;\n // @ts-ignore\n this.self = self;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n }\n\n /**\n * handles when the locus.url is updated\n * @param {String} url\n * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string) {\n if (url && this.url !== url) {\n this.url = url;\n this.updateMeeting({locusUrl: url});\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateLocusUrl',\n },\n EVENTS.LOCUS_INFO_UPDATE_URL,\n url\n );\n }\n }\n\n /**\n * @param {String} aclUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateAclUrl(aclUrl: string) {\n if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {\n this.aclUrl = aclUrl;\n }\n }\n\n /**\n * @param {Number} baseSequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateBasequence(baseSequence: number) {\n if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {\n this.baseSequence = baseSequence;\n }\n }\n\n /**\n * @param {Number} sequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateSequence(sequence: number) {\n if (sequence && !isEqual(this.sequence, sequence)) {\n this.sequence = sequence;\n }\n }\n\n /**\n * @param {Object} membership\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMemberShip(membership: object) {\n if (membership && !isEqual(this.membership, membership)) {\n this.membership = membership;\n }\n }\n\n /**\n * @param {Array} identities\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateIdentifiers(identities: Array<any>) {\n if (identities && !isEqual(this.identities, identities)) {\n this.identities = identities;\n }\n }\n\n /**\n * check the locus is main session's one or not, if is main session's, update main session cache\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusCache(locus: any) {\n const isMainSessionDTO = ControlsUtils.isMainSessionDTO(locus);\n if (isMainSessionDTO) {\n this.updateMainSessionLocusCache(locus);\n }\n }\n\n /**\n * if return from breakout to main session, need to use cached main session DTO since locus won't send the full locus (participants)\n * if join breakout from main session, need to query main locus url (if response with 403 means no privilege, need to clear the cache)\n * @param {Object} newLocus\n * @returns {Object}\n * @memberof LocusInfo\n */\n getTheLocusToUpdate(newLocus: any) {\n const switchStatus = ControlsUtils.getSessionSwitchStatus(this.controls, newLocus?.controls);\n if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {\n return cloneDeep(this.mainSessionLocusCache);\n }\n if (switchStatus.isJoinToBreakout) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_JOIN_BREAKOUT_FROM_MAIN,\n {\n mainLocusUrl: this.url,\n }\n );\n }\n\n return newLocus;\n }\n\n /**\n * merge participants by participant id\n * @param {Array} participants\n * @param {Array} sourceParticipants\n * @returns {Array} merged participants\n * @memberof LocusInfo\n */\n // eslint-disable-next-line class-methods-use-this\n mergeParticipants(participants, sourceParticipants) {\n if (!sourceParticipants || !sourceParticipants.length) return participants;\n if (!participants || !participants.length) {\n return sourceParticipants;\n }\n sourceParticipants.forEach((participant) => {\n const existIndex = participants.findIndex((p) => p.id === participant.id);\n if (existIndex > -1) {\n participants.splice(existIndex, 1, participant);\n } else {\n participants.push(participant);\n }\n });\n\n return participants;\n }\n\n /**\n * need cache main sessions' participants since locus will not send the full list when cohost/host leave breakout\n * @param {Object} mainLocus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMainSessionLocusCache(mainLocus: any) {\n if (!mainLocus) {\n return;\n }\n const locusClone = cloneDeep(mainLocus);\n if (this.mainSessionLocusCache) {\n // shallow merge and do special merge for participants\n assignWith(this.mainSessionLocusCache, locusClone, (objValue, srcValue, key) => {\n if (key === 'participants') {\n return this.mergeParticipants(objValue, srcValue);\n }\n\n return srcValue || objValue;\n });\n } else {\n this.mainSessionLocusCache = locusClone;\n }\n }\n\n /**\n * clear main session cache\n * @returns {undefined}\n * @memberof LocusInfo\n */\n clearMainSessionLocusCache() {\n this.mainSessionLocusCache = null;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lodash","require","_loggerProxy","_interopRequireDefault","_eventsScope","_constants","_infoUtils","_fullState","_selfUtils","_hostUtils","_controlsUtils","_embeddedAppsUtils","_mediaSharesUtils","_parser","_metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","LocusInfo","exports","_EventsScope","_inherits2","_super","updateMeeting","webex","meetingId","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","_createClass2","key","value","doLocusSync","meeting","_this2","isDelta","url","workingCopy","syncUrl","locusUrl","LoggerProxy","logger","info","concat","meetingRequest","getLocusDTO","catch","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","LOCUS_DELTA_SYNC_FAILED","correlationId","reason","message","errorName","name","stack","code","err","meetings","destroy","MEETING_REMOVED_REASON","LOCUS_DTO_SYNC_FAILED","then","res","isEmpty","body","locusInfo","handleLocusDelta","onFullLocus","resume","applyLocusDeltaData","action","locus","_LocusDeltaParser$loc","loci","DESYNC","USE_CURRENT","USE_INCOMING","WAIT","LOCUS_URL_CHANGED","onDeltaLocus","_this3","onDeltaAction","parsedLoci","onDeltaEvent","init","_locus$links","length","undefined","created","scheduledMeeting","participantsUrl","replaces","aclUrl","baseSequence","sequence","membership","identities","participants","deltaParticipants","updateLocusCache","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","self","updateLocusUrl","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","initialSetup","parse","data","eventType","getTheLocusToUpdate","LOCUSEVENT","PARTICIPANT_JOIN","PARTICIPANT_LEFT","CONTROLS_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","SELF_CHANGED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_DECLINED","FLOOR_GRANTED","FLOOR_RELEASED","DIFFERENCE","emitScoped","scope","eventName","args","emit","error","isNewFullLocus","updateParticipantDeltas","isReplaceMembers","ControlsUtils","isNeedReplaceMembers","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","type","_CALL_","_SIP_BRIDGE_","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","_locus$self","_locus$self2","_locus$links2","state","updateCreated","updateParticipantsUrl","updateReplace","replace","updateAclUrl","updateBasequence","updateSequence","updateMemberShip","updateIdentifiers","compareAndUpdate","getLocusPartner","find","participant","identity","_USER_","removed","partner","LOCUS","STATE","INACTIVE","warn","internal","newMetrics","submitClientEvent","options","DESTROY_MEETING","CALL_REMOVED_REASON","CALL_INACTIVE","shouldLeave","MEETING_STATE","STATES","LEFT","DECLINED","NOTIFIED","JOINED","PARTNER_LEFT","joinedWith","_LEFT_","IDLE","SELF_LEFT","_MEETING_","TERMINATING","MEETING_INACTIVE_TERMINATING","FULLSTATE_REMOVED","SELF_REMOVED","compareSelfAndHost","compareHostAndSelf","_this$parsedLocus$hos","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","_this4","findParticipant","collection","item","person","id","generateDelta","prevState","newState","deltas","audioStatus","videoSlidesStatus","videoStatus","_keys","forEach","reduce","existingParticipant","delta","status","changed","push","isReplace","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","isEqual","_ControlsUtils$getCon","getControls","_ControlsUtils$getCon2","updates","hasRecordingChanged","hasRecordingPausedChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasEntryExitToneChanged","hasBreakoutChanged","hasVideoEnabledChanged","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasInterpretationChanged","current","LOCUSINFO","CONTROLS_MUTE_ON_ENTRY_CHANGED","muteOnEntry","CONTROLS_SHARE_CONTROL_CHANGED","shareControl","CONTROLS_DISALLOW_UNMUTE_CHANGED","disallowUnmute","CONTROLS_REACTIONS_CHANGED","reactions","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","viewTheParticipantList","CONTROLS_RAISE_HAND_CHANGED","raiseHand","CONTROLS_VIDEO_CHANGED","video","paused","RECORDING_STATE","PAUSED","recording","RESUMED","RECORDING","CONTROLS_RECORDING_UPDATED","lastModified","meetingContainerUrl","meetingContainer","CONTROLS_MEETING_CONTAINER_UPDATED","_current$transcribe","transcribe","transcribing","caption","CONTROLS_MEETING_TRANSCRIBE_UPDATED","breakout","breakoutMoveId","SelfUtils","getReplacedBreakoutMoveId","device","CONTROLS_MEETING_BREAKOUT_UPDATED","interpretation","CONTROLS_MEETING_INTERPRETATION_UPDATED","entryExitTone","CONTROLS_ENTRY_EXIT_TONE_UPDATED","videoEnabled","unmuteVideoAllowed","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","unmuteAllowed","LINKS_SERVICES","FullState","getFullState","meetingStateChangedTo","FULL_STATE_MEETING_STATE_CHANGE","previousState","previous","meetingState","currentState","meetingTypeChangedTo","FULL_STATE_TYPE_UPDATE","parsedHosts","HostUtils","getHosts","isNewHost","LOCUS_INFO_UPDATE_HOST","newHost","oldHost","_this$parsedLocus$sel","roles","getRoles","isJoined","parsedInfo","InfoUtils","getInfos","isLocked","MEETING_LOCKED","isUnlocked","MEETING_UNLOCKED","MEETING_INFO_UPDATED","isInitializing","EmbeddedAppsUtils","areSimilar","parsedEmbeddedApps","EMBEDDED_APPS_UPDATED","parsedMediaShares","MediaSharesUtils","getMediaShares","LOCUS_INFO_UPDATE_MEDIA_SHARES","parsedSelves","getSelves","element","getSipUrl","sipUri","moderatorChanged","layoutChanged","CONTROLS_MEETING_LAYOUT_UPDATED","layout","breakoutsChanged","SELF_MEETING_BREAKOUTS_CHANGED","breakoutSessions","interpretationChanged","SELF_MEETING_INTERPRETATION_CHANGED","selfParticipantId","isMediaInactiveOrReleased","DISCONNECT_DUE_TO_INACTIVITY","SELF_MODERATOR_CHANGED","isRolesChanged","_parsedSelves$previou","_parsedSelves$current","SELF_ROLES_CHANGED","oldRoles","newRoles","isVideoMutedByOthersChanged","muted","remoteVideoMuted","localAudioUnmuteRequiredByServer","LOCAL_UNMUTE_REQUIRED","remoteMuted","isMutedByOthersChanged","SELF_REMOTE_MUTE_STATUS_UPDATED","localAudioUnmuteRequestedByServer","LOCAL_UNMUTE_REQUESTED","isUserUnadmitted","SELF_UNADMITTED_GUEST","isUserAdmitted","SELF_ADMITTED_GUEST","isMediaInactive","MEDIA_INACTIVITY","getMediaStatus","mediaSessions","audioStateChange","videoStateChange","shareStateChange","_parsedSelves$current2","_parsedSelves$current3","_parsedSelves$current4","MEDIA_STATUS_CHANGE","currentMediaStatus","audio","shareStatus","share","isUserObserving","SELF_OBSERVING","canNotViewTheParticipantListChanged","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","canNotViewTheParticipantList","isSharingBlockedChanged","SELF_IS_SHARING_BLOCKED_CHANGE","isSharingBlocked","LOCUS_INFO_UPDATE_SELF","oldSelf","newSelf","LOCUS_INFO_UPDATE_URL","isMainSessionDTO","updateMainSessionLocusCache","newLocus","switchStatus","getSessionSwitchStatus","isReturnToMain","mainSessionLocusCache","cloneDeep","_this$fullState","_this$mainSessionLocu","_this$mainSessionLocu2","isActive","ACTIVE","INITIALIZING","includes","clearMainSessionLocusCache","mergeParticipants","sourceParticipants","existIndex","findIndex","p","splice","mainLocus","_this5","locusClone","assignWith","objValue","srcValue","EventsScope"],"sources":["index.ts"],"sourcesContent":["import {isEqual, assignWith, cloneDeep, isEmpty} from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\nimport {\n EVENTS,\n LOCUSEVENT,\n _USER_,\n _CALL_,\n _SIP_BRIDGE_,\n MEETING_STATE,\n _MEETING_,\n LOCUSINFO,\n LOCUS,\n _LEFT_,\n MEETING_REMOVED_REASON,\n CALL_REMOVED_REASON,\n RECORDING_STATE,\n} from '../constants';\nimport InfoUtils from './infoUtils';\nimport FullState from './fullState';\nimport SelfUtils from './selfUtils';\nimport HostUtils from './hostUtils';\nimport ControlsUtils from './controlsUtils';\nimport EmbeddedAppsUtils from './embeddedAppsUtils';\nimport MediaSharesUtils from './mediaSharesUtils';\nimport LocusDeltaParser from './parser';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\n/**\n * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object\n * @export\n * @private\n * @class LocusInfo\n */\nexport default class LocusInfo extends EventsScope {\n compareAndUpdateFlags: any;\n emitChange: any;\n locusParser: any;\n meetingId: any;\n parsedLocus: any;\n updateMeeting: any;\n webex: any;\n aclUrl: any;\n baseSequence: any;\n created: any;\n deltaParticipants: any;\n identities: any;\n membership: any;\n participants: any;\n participantsUrl: any;\n replaces: any;\n scheduledMeeting: any;\n sequence: any;\n controls: any;\n conversationUrl: any;\n embeddedApps: any;\n fullState: any;\n host: any;\n info: any;\n roles: any;\n mediaShares: any;\n replace: any;\n url: any;\n services: any;\n mainSessionLocusCache: any;\n /**\n * Constructor\n * @param {function} updateMeeting callback to update the meeting object from an object\n * @param {object} webex\n * @param {string} meetingId\n * @returns {undefined}\n */\n constructor(updateMeeting, webex, meetingId) {\n super();\n this.parsedLocus = {\n states: [],\n };\n this.webex = webex;\n this.emitChange = false;\n this.compareAndUpdateFlags = {};\n this.meetingId = meetingId;\n this.updateMeeting = updateMeeting;\n this.locusParser = new LocusDeltaParser();\n }\n\n /**\n * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.\n *\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n private doLocusSync(meeting: any) {\n let isDelta;\n let url;\n\n if (this.locusParser.workingCopy.syncUrl) {\n url = this.locusParser.workingCopy.syncUrl;\n isDelta = true;\n } else {\n url = meeting.locusUrl;\n isDelta = false;\n }\n\n LoggerProxy.logger.info(\n `Locus-info:index#doLocusSync --> doing Locus sync (getting ${\n isDelta ? 'delta' : 'full'\n } DTO)`\n );\n\n // return value ignored on purpose\n meeting.meetingRequest\n .getLocusDTO({url})\n .catch((e) => {\n if (isDelta) {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> delta sync failed, falling back to full sync'\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_DELTA_SYNC_FAILED, {\n correlationId: meeting.correlationId,\n url,\n reason: e.message,\n errorName: e.name,\n stack: e.stack,\n code: e.code,\n });\n\n isDelta = false;\n\n return meeting.meetingRequest.getLocusDTO({url: meeting.locusUrl}).catch((err) => {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n throw err;\n });\n }\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n throw e;\n })\n .then((res) => {\n if (isDelta) {\n if (!isEmpty(res.body)) {\n meeting.locusInfo.handleLocusDelta(res.body, meeting);\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO'\n );\n }\n } else {\n meeting.locusInfo.onFullLocus(res.body);\n }\n // Notify parser to resume processing delta events.\n // Any deltas in the queue that have now been superseded by this sync will simply be ignored\n this.locusParser.resume();\n });\n }\n\n /**\n * Apply locus delta data to meeting\n * @param {string} action Locus delta action\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n applyLocusDeltaData(action: string, locus: any, meeting: any) {\n const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;\n\n switch (action) {\n case USE_INCOMING:\n meeting.locusInfo.onDeltaLocus(locus);\n break;\n case USE_CURRENT:\n case WAIT:\n // do nothing\n break;\n case DESYNC:\n case LOCUS_URL_CHANGED:\n this.doLocusSync(meeting);\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ${action}`\n );\n }\n }\n\n /**\n * Adds locus delta to parser's queue\n * and registers a function handler\n * to recieve parsed actions from queue.\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n handleLocusDelta(locus: any, meeting: any) {\n // register a function to process delta actions\n if (!this.locusParser.onDeltaAction) {\n // delta action, along with associated loci\n // is passed into the function.\n this.locusParser.onDeltaAction = (action, parsedLoci) => {\n this.applyLocusDeltaData(action, parsedLoci, meeting);\n };\n }\n // queue delta event with parser\n this.locusParser.onDeltaEvent(locus);\n }\n\n /**\n * @param {Locus} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n init(locus: any = {}) {\n this.created = locus.created || null;\n this.scheduledMeeting = locus.meeting || null;\n this.participantsUrl = locus.participantsUrl || null;\n this.replaces = locus.replaces || null;\n this.aclUrl = locus.aclUrl || null;\n this.baseSequence = locus.baseSequence || null;\n this.sequence = locus.sequence || null;\n this.membership = locus.membership || null;\n this.identities = locus.identities || null;\n this.participants = locus.participants || null;\n\n /**\n * Stores the delta values for a changed participant.\n *\n * @typedef {Object} DeltaParticipant\n * @property {Record<string, boolean>} delta - Contains changed streams.\n * @property {Object} person - Contains person data.\n */\n\n /**\n * Stored participant changes between the last event and the current event.\n * All previously stored events are overwritten between events.\n *\n * @instance\n * @type {Array<DeltaParticipant>}\n * @private\n * @member LocusInfo\n */\n this.deltaParticipants = [];\n\n this.updateLocusCache(locus);\n // above section only updates the locusInfo object\n // The below section makes sure it updates the locusInfo as well as updates the meeting object\n this.updateParticipants(locus.participants);\n // For 1:1 space meeting the conversation Url does not exist in locus.conversation\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateControls(locus.controls, locus.self);\n this.updateLocusUrl(locus.url);\n this.updateFullState(locus.fullState);\n this.updateMeetingInfo(locus.info);\n this.updateEmbeddedApps(locus.embeddedApps);\n // self and participants generate sipUrl for 1:1 meeting\n this.updateSelf(locus.self, locus.participants);\n this.updateHostInfo(locus.host);\n this.updateMediaShares(locus.mediaShares);\n this.updateServices(locus.links?.services);\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n initialSetup(locus: object) {\n this.updateLocusCache(locus);\n this.onFullLocus(locus);\n\n // Change it to true after it receives it first locus object\n this.emitChange = true;\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} data\n * @returns {undefined}\n * @memberof LocusInfo\n */\n parse(meeting: any, data: any) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n const locus = this.getTheLocusToUpdate(data.locus);\n LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);\n\n switch (eventType) {\n case LOCUSEVENT.PARTICIPANT_JOIN:\n case LOCUSEVENT.PARTICIPANT_LEFT:\n case LOCUSEVENT.CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:\n case LOCUSEVENT.SELF_CHANGED:\n case LOCUSEVENT.PARTICIPANT_UPDATED:\n case LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:\n case LOCUSEVENT.PARTICIPANT_DECLINED:\n case LOCUSEVENT.FLOOR_GRANTED:\n case LOCUSEVENT.FLOOR_RELEASED:\n this.onFullLocus(locus, eventType);\n break;\n case LOCUSEVENT.DIFFERENCE:\n this.handleLocusDelta(locus, meeting);\n break;\n\n default:\n // Why will there be a event with no eventType ????\n // we may not need this, we can get full locus\n this.handleLocusDelta(locus, meeting);\n }\n }\n\n /**\n * @param {String} scope\n * @param {String} eventName\n * @param {Array} args\n * @returns {undefined}\n * @memberof LocusInfo\n */\n emitScoped(scope?: any, eventName?: string, args?: any) {\n return this.emit(scope, eventName, args);\n }\n\n /**\n * updates the locus with full locus object\n * @param {object} locus locus object\n * @param {string} eventType particulat locus event\n * @returns {object} null\n * @memberof LocusInfo\n */\n onFullLocus(locus: any, eventType?: string) {\n if (!locus) {\n LoggerProxy.logger.error(\n 'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'\n );\n }\n\n if (!this.locusParser.isNewFullLocus(locus)) {\n LoggerProxy.logger.info(\n `Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=${eventType}`\n );\n\n return;\n }\n\n this.updateParticipantDeltas(locus.participants);\n this.scheduledMeeting = locus.meeting || null;\n this.participants = locus.participants;\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants, isReplaceMembers);\n this.isMeetingActive();\n this.handleOneOnOneEvent(eventType);\n this.updateEmbeddedApps(locus.embeddedApps);\n // set current (working copy) for parser\n this.locusParser.workingCopy = locus;\n }\n\n // used for ringing stops on one on one\n /**\n * @param {String} eventType\n * @returns {undefined}\n * @memberof LocusInfo\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n handleOneOnOneEvent(eventType: string) {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // for 1:1 bob calls alice and alice declines, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: true,\n remoteAnswered: false,\n }\n );\n }\n // for 1:1 bob calls alice and alice answers, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_JOIN) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: false,\n remoteAnswered: true,\n }\n );\n }\n }\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n onDeltaLocus(locus: any) {\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants, isReplaceMembers);\n this.isMeetingActive();\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusInfo(locus) {\n if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {\n // When moved to a breakout session locus sends a message for the previous locus\n // indicating that we have been moved. It isn't helpful to continue parsing this\n // as it gets interpreted as if we have left the call\n return;\n }\n\n this.updateControls(locus.controls, locus.self);\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateCreated(locus.created);\n this.updateFullState(locus.fullState);\n this.updateHostInfo(locus.host);\n this.updateMeetingInfo(locus.info, locus.self);\n this.updateMediaShares(locus.mediaShares);\n this.updateParticipantsUrl(locus.participantsUrl);\n this.updateReplace(locus.replace);\n this.updateSelf(locus.self, locus.participants);\n this.updateLocusUrl(locus.url);\n this.updateAclUrl(locus.aclUrl);\n this.updateBasequence(locus.baseSequence);\n this.updateSequence(locus.sequence);\n this.updateMemberShip(locus.membership);\n this.updateIdentifiers(locus.identities);\n this.updateEmbeddedApps(locus.embeddedApps);\n this.updateServices(locus.links?.services);\n this.compareAndUpdate();\n // update which required to compare different objects from locus\n }\n\n /**\n * @param {Array} participants\n * @param {Object} self\n * @returns {Array}\n * @memberof LocusInfo\n */\n getLocusPartner(participants: Array<any>, self: any) {\n if (!participants || participants.length === 0) {\n return null;\n }\n\n return (\n participants.find(\n (participant) =>\n self &&\n participant.identity !== self.identity &&\n (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))\n // @ts-ignore\n ) || this.partner\n );\n }\n\n // TODO: all the leave states need to be checked\n /**\n * @returns {undefined}\n * @memberof LocusInfo\n */\n isMeetingActive() {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // @ts-ignore\n const partner = this.getLocusPartner(this.participants, this.self);\n\n this.updateMeeting({partner});\n\n // Check if guest user needs to be checked here\n\n // 1) when bob declines call from bob, (bob='DECLINED')\n // 2) When alice rejects call to bob , (bob='NOTIFIED')\n\n // When we dont add MEDIA for condition 2. The state of bob='IDLE'\n\n if (this.fullState && this.fullState.state === LOCUS.STATE.INACTIVE) {\n // TODO: update the meeting state\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.CALL_INACTIVE,\n shouldLeave: false,\n }\n );\n } else if (\n partner.state === MEETING_STATE.STATES.LEFT &&\n this.parsedLocus.self &&\n (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.PARTNER_LEFT,\n shouldLeave:\n this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,\n }\n );\n } else if (\n this.parsedLocus.self &&\n this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&\n (partner.state === MEETING_STATE.STATES.LEFT ||\n partner.state === MEETING_STATE.STATES.DECLINED ||\n partner.state === MEETING_STATE.STATES.NOTIFIED ||\n partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.SELF_LEFT,\n shouldLeave: false,\n }\n );\n }\n } else if (this.parsedLocus.fullState.type === _MEETING_) {\n if (\n this.fullState &&\n (this.fullState.state === LOCUS.STATE.INACTIVE ||\n // @ts-ignore\n this.fullState.state === LOCUS.STATE.TERMINATING)\n ) {\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,\n shouldLeave: false,\n }\n );\n } else if (this.fullState && this.fullState.removed) {\n // user has been dropped from a meeting\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.FULLSTATE_REMOVED,\n shouldLeave: false,\n }\n );\n }\n // If you are guest and you are removed from the meeting\n // You wont get any further events\n else if (this.parsedLocus.self && this.parsedLocus.self.removed) {\n // Check if we need to send an event\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.SELF_REMOVED,\n shouldLeave: false,\n }\n );\n }\n } else {\n LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');\n }\n }\n\n /**\n * checks if the host permissions have changed while in the meeting\n * This would be the case if your role as host or moderator has been updated\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareAndUpdate() {\n // TODO: check with locus team on host and moderator doc\n // use host as a validator if needed\n if (\n this.compareAndUpdateFlags.compareSelfAndHost ||\n this.compareAndUpdateFlags.compareHostAndSelf\n ) {\n this.compareSelfAndHost();\n }\n }\n\n /**\n * compared the self object to check if the user has host permissions\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareSelfAndHost() {\n // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update\n if (\n this.parsedLocus.self.selfIdentity === this.parsedLocus.host?.hostId &&\n this.parsedLocus.self.moderator\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: true,\n }\n );\n } else {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: false,\n }\n );\n }\n }\n\n /**\n * Update the deltaParticipants property of this object based on a list of\n * provided participants.\n *\n * @param {Array} [participants] - The participants to update against.\n * @returns {void}\n */\n updateParticipantDeltas(participants: Array<any> = []) {\n // Used to find a participant within a participants collection.\n const findParticipant = (participant, collection) =>\n collection.find((item) => item.person.id === participant.person.id);\n\n // Generates an object that indicates which state properties have changed.\n const generateDelta = (prevState: any = {}, newState: any = {}) => {\n // Setup deltas.\n const deltas = {\n audioStatus: prevState.audioStatus !== newState.audioStatus,\n videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,\n videoStatus: prevState.videoStatus !== newState.videoStatus,\n };\n\n // Clean the object\n Object.keys(deltas).forEach((key) => {\n if (deltas[key] !== true) {\n delete deltas[key];\n }\n });\n\n return deltas;\n };\n\n this.deltaParticipants = participants.reduce((collection, participant) => {\n const existingParticipant = findParticipant(participant, this.participants || []) || {};\n\n const delta = generateDelta(existingParticipant.status, participant.status);\n\n const changed = Object.keys(delta).length > 0;\n\n if (changed) {\n collection.push({\n person: participant.person,\n delta,\n });\n }\n\n return collection;\n }, []);\n }\n\n /**\n * update meeting's members\n * @param {Object} participants new participants object\n * @param {Boolean} isReplace is replace the whole members\n * @returns {Array} updatedParticipants\n * @memberof LocusInfo\n */\n updateParticipants(participants: object, isReplace?: boolean) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\n {\n participants,\n recordingId: this.parsedLocus.controls && this.parsedLocus.controls.record?.modifiedBy,\n selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,\n selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,\n hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,\n isReplace,\n }\n );\n }\n\n /**\n * @param {Object} controls\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateControls(controls: object, self: object) {\n if (controls && !isEqual(this.controls, controls)) {\n this.parsedLocus.controls = ControlsUtils.parse(controls);\n const {\n updates: {\n hasRecordingChanged,\n hasRecordingPausedChanged,\n hasMeetingContainerChanged,\n hasTranscribeChanged,\n hasEntryExitToneChanged,\n hasBreakoutChanged,\n hasVideoEnabledChanged,\n hasMuteOnEntryChanged,\n hasShareControlChanged,\n hasDisallowUnmuteChanged,\n hasReactionsChanged,\n hasReactionDisplayNamesChanged,\n hasViewTheParticipantListChanged,\n hasRaiseHandChanged,\n hasVideoChanged,\n hasInterpretationChanged,\n },\n current,\n } = ControlsUtils.getControls(this.controls, controls);\n\n if (hasMuteOnEntryChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED,\n {state: current.muteOnEntry}\n );\n }\n\n if (hasShareControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED,\n {state: current.shareControl}\n );\n }\n\n if (hasDisallowUnmuteChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED,\n {state: current.disallowUnmute}\n );\n }\n\n if (hasReactionsChanged || hasReactionDisplayNamesChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED,\n {state: current.reactions}\n );\n }\n\n if (hasViewTheParticipantListChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED,\n {state: current.viewTheParticipantList}\n );\n }\n\n if (hasRaiseHandChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED,\n {state: current.raiseHand}\n );\n }\n\n if (hasVideoChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED,\n {state: current.video}\n );\n }\n\n if (hasRecordingChanged || hasRecordingPausedChanged) {\n let state = null;\n\n if (hasRecordingPausedChanged) {\n if (current.record.paused) {\n state = RECORDING_STATE.PAUSED;\n } else {\n // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.\n state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;\n }\n } else if (hasRecordingChanged) {\n state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n {\n state,\n modifiedBy: current.record.modifiedBy,\n lastModified: current.record.lastModified,\n }\n );\n }\n\n if (hasMeetingContainerChanged) {\n const {meetingContainerUrl} = current.meetingContainer;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n {\n meetingContainerUrl,\n }\n );\n }\n\n if (hasTranscribeChanged) {\n const {transcribing, caption} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n {\n transcribing,\n caption,\n }\n );\n }\n\n if (hasBreakoutChanged) {\n const {breakout} = current;\n breakout.breakoutMoveId = SelfUtils.getReplacedBreakoutMoveId(\n self,\n this.webex.internal.device.url\n );\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,\n {\n breakout,\n }\n );\n }\n\n if (hasInterpretationChanged) {\n const {interpretation} = current;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED,\n {\n interpretation,\n }\n );\n }\n\n if (hasEntryExitToneChanged) {\n const {entryExitTone} = current;\n\n this.updateMeeting({entryExitTone});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,\n {\n entryExitTone,\n }\n );\n }\n\n // videoEnabled is handled differently than other controls,\n // to fit with audio mute status logic\n if (hasVideoEnabledChanged) {\n const {videoEnabled} = current;\n\n this.updateMeeting({unmuteVideoAllowed: videoEnabled});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n // muted: not part of locus.controls\n unmuteAllowed: videoEnabled,\n }\n );\n }\n\n this.controls = controls;\n }\n }\n\n /**\n * @param {String} conversationUrl\n * @param {Object} info\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateConversationUrl(conversationUrl: string, info: any) {\n if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {\n this.conversationUrl = conversationUrl;\n this.updateMeeting({conversationUrl});\n } else if (\n info &&\n info.conversationUrl &&\n !isEqual(this.conversationUrl, info.conversationUrl)\n ) {\n this.conversationUrl = info.conversationUrl;\n this.updateMeeting({conversationUrl: info.conversationUrl});\n }\n }\n\n /**\n * @param {Object} created\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateCreated(created: object) {\n if (created && !isEqual(this.created, created)) {\n this.created = created;\n }\n }\n\n /**\n * @param {Object} services\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateServices(services: Record<'breakout' | 'record', {url: string}>) {\n if (services && !isEqual(this.services, services)) {\n this.services = services;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateServices',\n },\n LOCUSINFO.EVENTS.LINKS_SERVICES,\n {\n services,\n }\n );\n }\n }\n\n /**\n * @param {Object} fullState\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateFullState(fullState: object) {\n if (fullState && !isEqual(this.fullState, fullState)) {\n const result = FullState.getFullState(this.fullState, fullState);\n\n this.updateMeeting(result.current);\n\n if (result.updates.meetingStateChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE,\n {\n previousState: result.previous && result.previous.meetingState,\n currentState: result.current.meetingState,\n }\n );\n }\n\n if (result.updates.meetingTypeChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE,\n {\n type: result.current.type,\n }\n );\n }\n this.parsedLocus.fullState = result.current;\n this.fullState = fullState;\n }\n }\n\n /**\n * handles when the locus.host is updated\n * @param {Object} host the locus.host property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_host\n */\n updateHostInfo(host: object) {\n if (host && !isEqual(this.host, host)) {\n const parsedHosts = HostUtils.getHosts(this.host, host);\n\n this.updateMeeting(parsedHosts.current);\n this.parsedLocus.host = parsedHosts.current;\n if (parsedHosts.updates.isNewHost) {\n this.compareAndUpdateFlags.compareSelfAndHost = true;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateHostInfo',\n },\n EVENTS.LOCUS_INFO_UPDATE_HOST,\n {\n newHost: parsedHosts.current,\n oldHost: parsedHosts.previous,\n }\n );\n }\n this.host = host;\n } else {\n this.compareAndUpdateFlags.compareSelfAndHost = false;\n }\n }\n\n /**\n * @param {Object} info\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMeetingInfo(info: object, self?: object) {\n const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];\n if (\n (info && !isEqual(this.info, info)) ||\n (roles.length && !isEqual(this.roles, roles) && info)\n ) {\n const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);\n const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);\n\n if (parsedInfo.updates.isLocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_LOCKED,\n info\n );\n }\n if (parsedInfo.updates.isUnlocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_UNLOCKED,\n info\n );\n }\n\n this.info = info;\n this.parsedLocus.info = parsedInfo.current;\n // Parses the info and adds necessary values\n this.updateMeeting(parsedInfo.current);\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,\n {\n isInitializing: !self, // if self is undefined, then the update is caused by locus init\n }\n );\n }\n this.roles = roles;\n }\n\n /**\n * @param {Object} embeddedApps\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateEmbeddedApps(embeddedApps: object) {\n // don't do anything if the arrays of apps haven't changed significantly\n if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {\n return;\n }\n\n const parsedEmbeddedApps = EmbeddedAppsUtils.parse(embeddedApps);\n\n this.updateMeeting({embeddedApps: parsedEmbeddedApps});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateEmbeddedApps',\n },\n LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED,\n parsedEmbeddedApps\n );\n this.embeddedApps = embeddedApps;\n }\n\n /**\n * handles when the locus.mediaShares is updated\n * @param {Object} mediaShares the locus.mediaShares property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_media_shares\n */\n updateMediaShares(mediaShares: object) {\n if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {\n const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);\n\n this.updateMeeting(parsedMediaShares.current);\n this.parsedLocus.mediaShares = parsedMediaShares.current;\n this.mediaShares = mediaShares;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMediaShares',\n },\n EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,\n {\n current: parsedMediaShares.current,\n previous: parsedMediaShares.previous,\n }\n );\n }\n }\n\n /**\n * @param {String} participantsUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateParticipantsUrl(participantsUrl: string) {\n if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {\n this.participantsUrl = participantsUrl;\n }\n }\n\n /**\n * @param {Object} replace\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateReplace(replace: object) {\n if (replace && !isEqual(this.replace, replace)) {\n this.replace = replace;\n }\n }\n\n /**\n * handles when the locus.self is updated\n * @param {Object} self the locus.mediaShares property\n * @param {Array} participants the locus.participants property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self\n */\n updateSelf(self: any, participants: Array<any>) {\n // @ts-ignore - check where this.self come from\n if (self && !isEqual(this.self, self)) {\n // @ts-ignore\n const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);\n\n this.updateMeeting(parsedSelves.current);\n this.parsedLocus.self = parsedSelves.current;\n\n const element = this.parsedLocus.states[this.parsedLocus.states.length - 1];\n\n if (element !== parsedSelves.current.state) {\n this.parsedLocus.states.push(parsedSelves.current.state);\n }\n\n // TODO: check if we need to save the sipUri here as well\n // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));\n const result = SelfUtils.getSipUrl(\n this.getLocusPartner(participants, self),\n this.parsedLocus.fullState.type,\n this.parsedLocus.info.sipUri\n );\n\n if (result.sipUri) {\n this.updateMeeting(result);\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.compareAndUpdateFlags.compareHostAndSelf = true;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n\n if (parsedSelves.updates.layoutChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED,\n {layout: parsedSelves.current.layout}\n );\n }\n\n if (parsedSelves.updates.breakoutsChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,\n {breakoutSessions: parsedSelves.current.breakoutSessions}\n );\n }\n\n if (parsedSelves.updates.interpretationChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED,\n {\n interpretation: parsedSelves.current.interpretation,\n selfParticipantId: parsedSelves.current.selfId,\n }\n );\n }\n\n if (parsedSelves.updates.isMediaInactiveOrReleased) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.DISCONNECT_DUE_TO_INACTIVITY,\n {reason: self.reason}\n );\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED,\n self\n );\n }\n\n if (parsedSelves.updates.isRolesChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ROLES_CHANGED,\n {oldRoles: parsedSelves.previous?.roles, newRoles: parsedSelves.current?.roles}\n );\n }\n\n if (parsedSelves.updates.isVideoMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteVideoMuted,\n // unmuteAllowed: not part of .self\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.isMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED,\n {}\n );\n }\n if (parsedSelves.updates.isUserUnadmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST,\n self\n );\n }\n if (parsedSelves.updates.isUserAdmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST,\n self\n );\n }\n\n if (parsedSelves.updates.isMediaInactive) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n // @ts-ignore\n LOCUSINFO.EVENTS.MEDIA_INACTIVITY,\n SelfUtils.getMediaStatus(self.mediaSessions)\n );\n }\n\n if (\n parsedSelves.updates.audioStateChange ||\n parsedSelves.updates.videoStateChange ||\n parsedSelves.updates.shareStateChange\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE,\n {\n audioStatus: parsedSelves.current.currentMediaStatus?.audio,\n videoStatus: parsedSelves.current.currentMediaStatus?.video,\n shareStatus: parsedSelves.current.currentMediaStatus?.share,\n }\n );\n }\n\n if (parsedSelves.updates.isUserObserving) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_OBSERVING\n );\n }\n\n if (parsedSelves.updates.canNotViewTheParticipantListChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE,\n {canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList}\n );\n }\n\n if (parsedSelves.updates.isSharingBlockedChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE,\n {isSharingBlocked: parsedSelves.current.isSharingBlocked}\n );\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n EVENTS.LOCUS_INFO_UPDATE_SELF,\n {\n oldSelf: parsedSelves.previous,\n newSelf: parsedSelves.current,\n }\n );\n this.parsedLocus.self = parsedSelves.current;\n // @ts-ignore\n this.self = self;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n }\n\n /**\n * handles when the locus.url is updated\n * @param {String} url\n * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string) {\n if (url && this.url !== url) {\n this.url = url;\n this.updateMeeting({locusUrl: url});\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateLocusUrl',\n },\n EVENTS.LOCUS_INFO_UPDATE_URL,\n url\n );\n }\n }\n\n /**\n * @param {String} aclUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateAclUrl(aclUrl: string) {\n if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {\n this.aclUrl = aclUrl;\n }\n }\n\n /**\n * @param {Number} baseSequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateBasequence(baseSequence: number) {\n if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {\n this.baseSequence = baseSequence;\n }\n }\n\n /**\n * @param {Number} sequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateSequence(sequence: number) {\n if (sequence && !isEqual(this.sequence, sequence)) {\n this.sequence = sequence;\n }\n }\n\n /**\n * @param {Object} membership\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMemberShip(membership: object) {\n if (membership && !isEqual(this.membership, membership)) {\n this.membership = membership;\n }\n }\n\n /**\n * @param {Array} identities\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateIdentifiers(identities: Array<any>) {\n if (identities && !isEqual(this.identities, identities)) {\n this.identities = identities;\n }\n }\n\n /**\n * check the locus is main session's one or not, if is main session's, update main session cache\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusCache(locus: any) {\n const isMainSessionDTO = ControlsUtils.isMainSessionDTO(locus);\n if (isMainSessionDTO) {\n this.updateMainSessionLocusCache(locus);\n }\n }\n\n /**\n * if return from breakout to main session, need to use cached main session DTO since locus won't send the full locus (participants)\n * if join breakout from main session, main session is not active for the attendee and remove main session locus cache\n * @param {Object} newLocus\n * @returns {Object}\n * @memberof LocusInfo\n */\n getTheLocusToUpdate(newLocus: any) {\n const switchStatus = ControlsUtils.getSessionSwitchStatus(this.controls, newLocus?.controls);\n if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {\n return cloneDeep(this.mainSessionLocusCache);\n }\n const isMainSessionDTO =\n this.mainSessionLocusCache && ControlsUtils.isMainSessionDTO(this.mainSessionLocusCache);\n\n if (isMainSessionDTO) {\n const isActive =\n [LOCUS.STATE.ACTIVE, LOCUS.STATE.INITIALIZING, LOCUS.STATE.TERMINATING].includes(\n this.fullState?.state\n ) && !this.mainSessionLocusCache?.self?.removed;\n\n if (!isActive) {\n this.clearMainSessionLocusCache();\n }\n }\n\n return newLocus;\n }\n\n /**\n * merge participants by participant id\n * @param {Array} participants\n * @param {Array} sourceParticipants\n * @returns {Array} merged participants\n * @memberof LocusInfo\n */\n // eslint-disable-next-line class-methods-use-this\n mergeParticipants(participants, sourceParticipants) {\n if (!sourceParticipants || !sourceParticipants.length) return participants;\n if (!participants || !participants.length) {\n return sourceParticipants;\n }\n sourceParticipants.forEach((participant) => {\n const existIndex = participants.findIndex((p) => p.id === participant.id);\n if (existIndex > -1) {\n participants.splice(existIndex, 1, participant);\n } else {\n participants.push(participant);\n }\n });\n\n return participants;\n }\n\n /**\n * need cache main sessions' participants since locus will not send the full list when cohost/host leave breakout\n * @param {Object} mainLocus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMainSessionLocusCache(mainLocus: any) {\n if (!mainLocus) {\n return;\n }\n const locusClone = cloneDeep(mainLocus);\n if (this.mainSessionLocusCache) {\n // shallow merge and do special merge for participants\n assignWith(this.mainSessionLocusCache, locusClone, (objValue, srcValue, key) => {\n if (key === 'participants') {\n return this.mergeParticipants(objValue, srcValue);\n }\n\n return srcValue || objValue;\n });\n } else {\n this.mainSessionLocusCache = locusClone;\n }\n }\n\n /**\n * clear main session cache\n * @returns {undefined}\n * @memberof LocusInfo\n */\n clearMainSessionLocusCache() {\n this.mainSessionLocusCache = null;\n }\n}\n"],"mappings":"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"}
@@ -16,8 +16,8 @@ var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/objec
16
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
17
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
18
18
  var _constants = require("../constants");
19
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(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; }
20
- 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; }
19
+ function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
21
21
  var InfoUtils = {};
22
22
  InfoUtils.parse = function (info, roles) {
23
23
  var isJoined = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
@@ -98,6 +98,5 @@ InfoUtils.getInfos = function (oldInfo, newInfo, roles, isJoined) {
98
98
  updates: updates
99
99
  };
100
100
  };
101
- var _default = InfoUtils;
102
- exports.default = _default;
101
+ var _default = exports.default = InfoUtils;
103
102
  //# sourceMappingURL=infoUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["InfoUtils","parse","info","roles","isJoined","parsed","policy","parsePolicy","moderator","parseModerator","coHost","parseCoHost","userDisplayHints","Object","fromEntries","filter","hint","INTERSTITIAL_DISPLAY_HINTS","includes","SELF_ROLES","COHOST","MODERATOR","sipUri","meetingId","meetingNumber","datachannelUrl","parseDisplayHintSection","displayHintKey","displayHints","length","forEach","key","DISPLAY_HINTS","LOWER_SOMEONE_ELSES_HAND","isLocked","LOCK_STATUS_LOCKED","isUnlocked","LOCK_STATUS_UNLOCKED","getInfos","oldInfo","newInfo","previous","current","updates"],"sources":["infoUtils.ts"],"sourcesContent":["import {SELF_ROLES, DISPLAY_HINTS, INTERSTITIAL_DISPLAY_HINTS} from '../constants';\n\nconst InfoUtils: any = {};\n\nInfoUtils.parse = (info, roles, isJoined = true) => {\n const parsed: any = {\n policy: InfoUtils.parsePolicy(info),\n moderator: InfoUtils.parseModerator(info),\n coHost: InfoUtils.parseCoHost(info),\n };\n\n let userDisplayHints = isJoined\n ? {...parsed.policy}\n : {\n ...Object.fromEntries(\n Object.entries(parsed.policy).filter(([hint]) =>\n INTERSTITIAL_DISPLAY_HINTS.includes(hint)\n )\n ),\n };\n\n if (roles.includes(SELF_ROLES.COHOST)) {\n userDisplayHints = {...userDisplayHints, ...parsed.coHost};\n }\n\n if (roles.includes(SELF_ROLES.MODERATOR)) {\n userDisplayHints = {...userDisplayHints, ...parsed.moderator};\n }\n\n parsed.userDisplayHints = Object.keys(userDisplayHints);\n\n if (info.sipUri) {\n parsed.sipUri = info.sipUri;\n }\n\n if (info.meetingId) {\n parsed.meetingNumber = info.meetingId;\n }\n\n if (info.datachannelUrl) {\n parsed.datachannelUrl = info.datachannelUrl;\n }\n\n return parsed;\n};\n\nInfoUtils.parseDisplayHintSection = (info, displayHintKey) => {\n const displayHints = {};\n\n if (\n info &&\n info.displayHints &&\n info.displayHints[displayHintKey] &&\n info.displayHints[displayHintKey].length > 0\n ) {\n info.displayHints[displayHintKey].forEach((key) => {\n displayHints[key] = true;\n });\n }\n\n return displayHints;\n};\n\nInfoUtils.parsePolicy = (info) => InfoUtils.parseDisplayHintSection(info, 'joined');\n\nInfoUtils.parseModerator = (info) => {\n const displayHints = InfoUtils.parseDisplayHintSection(info, 'moderator');\n\n return {...displayHints, [DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND]: true};\n};\n\nInfoUtils.parseCoHost = (info) => {\n const displayHints = InfoUtils.parseDisplayHintSection(info, 'coHost');\n\n return {...displayHints, [DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND]: true};\n};\n\nInfoUtils.isLocked = (policy) => policy.LOCK_STATUS_LOCKED || false;\n\nInfoUtils.isUnlocked = (policy) => policy.LOCK_STATUS_UNLOCKED || false;\n\nInfoUtils.getInfos = (oldInfo, newInfo, roles, isJoined) => {\n let previous = null;\n\n if (oldInfo) {\n previous = oldInfo;\n }\n const current = newInfo && InfoUtils.parse(newInfo, roles, isJoined);\n const updates: any = {};\n\n if (current) {\n current.isLocked = InfoUtils.isLocked(current.policy);\n current.isUnlocked = InfoUtils.isUnlocked(current.policy);\n\n if ((previous && previous.isUnlocked && current.isLocked) || (!previous && current.isLocked)) {\n updates.isLocked = current.isLocked;\n }\n if (\n (previous && previous.isLocked && current.isUnlocked) ||\n (!previous && current.isUnlocked)\n ) {\n updates.isUnlocked = current.isUnlocked;\n }\n }\n\n return {\n previous,\n current,\n updates,\n };\n};\n\nexport default InfoUtils;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","InfoUtils","parse","info","roles","isJoined","undefined","parsed","policy","parsePolicy","moderator","parseModerator","coHost","parseCoHost","userDisplayHints","fromEntries","_entries","_ref","_ref2","_slicedToArray2","hint","INTERSTITIAL_DISPLAY_HINTS","includes","SELF_ROLES","COHOST","MODERATOR","_keys","sipUri","meetingId","meetingNumber","datachannelUrl","parseDisplayHintSection","displayHintKey","displayHints","key","DISPLAY_HINTS","LOWER_SOMEONE_ELSES_HAND","isLocked","LOCK_STATUS_LOCKED","isUnlocked","LOCK_STATUS_UNLOCKED","getInfos","oldInfo","newInfo","previous","current","updates","_default","exports"],"sources":["infoUtils.ts"],"sourcesContent":["import {SELF_ROLES, DISPLAY_HINTS, INTERSTITIAL_DISPLAY_HINTS} from '../constants';\n\nconst InfoUtils: any = {};\n\nInfoUtils.parse = (info, roles, isJoined = true) => {\n const parsed: any = {\n policy: InfoUtils.parsePolicy(info),\n moderator: InfoUtils.parseModerator(info),\n coHost: InfoUtils.parseCoHost(info),\n };\n\n let userDisplayHints = isJoined\n ? {...parsed.policy}\n : {\n ...Object.fromEntries(\n Object.entries(parsed.policy).filter(([hint]) =>\n INTERSTITIAL_DISPLAY_HINTS.includes(hint)\n )\n ),\n };\n\n if (roles.includes(SELF_ROLES.COHOST)) {\n userDisplayHints = {...userDisplayHints, ...parsed.coHost};\n }\n\n if (roles.includes(SELF_ROLES.MODERATOR)) {\n userDisplayHints = {...userDisplayHints, ...parsed.moderator};\n }\n\n parsed.userDisplayHints = Object.keys(userDisplayHints);\n\n if (info.sipUri) {\n parsed.sipUri = info.sipUri;\n }\n\n if (info.meetingId) {\n parsed.meetingNumber = info.meetingId;\n }\n\n if (info.datachannelUrl) {\n parsed.datachannelUrl = info.datachannelUrl;\n }\n\n return parsed;\n};\n\nInfoUtils.parseDisplayHintSection = (info, displayHintKey) => {\n const displayHints = {};\n\n if (\n info &&\n info.displayHints &&\n info.displayHints[displayHintKey] &&\n info.displayHints[displayHintKey].length > 0\n ) {\n info.displayHints[displayHintKey].forEach((key) => {\n displayHints[key] = true;\n });\n }\n\n return displayHints;\n};\n\nInfoUtils.parsePolicy = (info) => InfoUtils.parseDisplayHintSection(info, 'joined');\n\nInfoUtils.parseModerator = (info) => {\n const displayHints = InfoUtils.parseDisplayHintSection(info, 'moderator');\n\n return {...displayHints, [DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND]: true};\n};\n\nInfoUtils.parseCoHost = (info) => {\n const displayHints = InfoUtils.parseDisplayHintSection(info, 'coHost');\n\n return {...displayHints, [DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND]: true};\n};\n\nInfoUtils.isLocked = (policy) => policy.LOCK_STATUS_LOCKED || false;\n\nInfoUtils.isUnlocked = (policy) => policy.LOCK_STATUS_UNLOCKED || false;\n\nInfoUtils.getInfos = (oldInfo, newInfo, roles, isJoined) => {\n let previous = null;\n\n if (oldInfo) {\n previous = oldInfo;\n }\n const current = newInfo && InfoUtils.parse(newInfo, roles, isJoined);\n const updates: any = {};\n\n if (current) {\n current.isLocked = InfoUtils.isLocked(current.policy);\n current.isUnlocked = InfoUtils.isUnlocked(current.policy);\n\n if ((previous && previous.isUnlocked && current.isLocked) || (!previous && current.isLocked)) {\n updates.isLocked = current.isLocked;\n }\n if (\n (previous && previous.isLocked && current.isUnlocked) ||\n (!previous && current.isUnlocked)\n ) {\n updates.isUnlocked = current.isUnlocked;\n }\n }\n\n return {\n previous,\n current,\n updates,\n };\n};\n\nexport default InfoUtils;\n"],"mappings":"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"}
@@ -21,7 +21,8 @@ MediaSharesUtils.parse = function (mediaShares) {
21
21
  disposition: MediaSharesUtils.getContentDisposition(mediaShares),
22
22
  annotation: MediaSharesUtils.getContentAnnotation(mediaShares),
23
23
  url: MediaSharesUtils.getContentUrl(mediaShares),
24
- shareInstanceId: MediaSharesUtils.getShareInstanceId(mediaShares)
24
+ shareInstanceId: MediaSharesUtils.getShareInstanceId(mediaShares),
25
+ deviceUrlSharing: MediaSharesUtils.getContentBeneficiaryDeviceUrl(mediaShares)
25
26
  },
26
27
  whiteboard: {
27
28
  beneficiaryId: MediaSharesUtils.getWhiteboardBeneficiaryId(mediaShares),
@@ -181,6 +182,19 @@ MediaSharesUtils.getShareInstanceId = function (mediaShares) {
181
182
  return extractContent.floor.shareInstanceId;
182
183
  };
183
184
 
185
+ /**
186
+ * get deviceUrl that is requesting the floor for media shares (content)
187
+ * @param {Object} mediaShares
188
+ * @returns {Object}
189
+ */
190
+ MediaSharesUtils.getContentBeneficiaryDeviceUrl = function (mediaShares) {
191
+ var contentFloor = MediaSharesUtils.extractContentFloor(mediaShares);
192
+ if (!contentFloor || !contentFloor.beneficiary || !contentFloor.beneficiary.deviceUrl) {
193
+ return null;
194
+ }
195
+ return contentFloor.beneficiary.deviceUrl;
196
+ };
197
+
184
198
  /**
185
199
  * get who is sharing from media shares (whiteboard)
186
200
  * @param {Object} mediaShares
@@ -206,6 +220,5 @@ MediaSharesUtils.getWhiteboardResourceUrl = function (mediaShares) {
206
220
  }
207
221
  return whiteboard.resourceUrl;
208
222
  };
209
- var _default = MediaSharesUtils;
210
- exports.default = _default;
223
+ var _default = exports.default = MediaSharesUtils;
211
224
  //# sourceMappingURL=mediaSharesUtils.js.map