@webex/plugin-meetings 3.6.0 → 3.7.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 (277) hide show
  1. package/README.md +2 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/webinar-registration-error.js +50 -0
  5. package/dist/common/errors/webinar-registration-error.js.map +1 -0
  6. package/dist/config.js +3 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +31 -2
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +1 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/index.js +10 -3
  13. package/dist/controls-options-manager/index.js.map +1 -1
  14. package/dist/controls-options-manager/types.js.map +1 -1
  15. package/dist/controls-options-manager/util.js +12 -0
  16. package/dist/controls-options-manager/util.js.map +1 -1
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/interpretation/index.js +1 -1
  20. package/dist/interpretation/siLanguage.js +1 -1
  21. package/dist/locus-info/controlsUtils.js +28 -4
  22. package/dist/locus-info/controlsUtils.js.map +1 -1
  23. package/dist/locus-info/fullState.js +2 -1
  24. package/dist/locus-info/fullState.js.map +1 -1
  25. package/dist/locus-info/index.js +61 -3
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/parser.js +5 -1
  28. package/dist/locus-info/parser.js.map +1 -1
  29. package/dist/meeting/in-meeting-actions.js +19 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +664 -490
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/muteState.js +5 -2
  34. package/dist/meeting/muteState.js.map +1 -1
  35. package/dist/meeting/util.js +3 -2
  36. package/dist/meeting/util.js.map +1 -1
  37. package/dist/meeting-info/meeting-info-v2.js +68 -17
  38. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  39. package/dist/meetings/index.js +25 -1
  40. package/dist/meetings/index.js.map +1 -1
  41. package/dist/members/index.js +3 -2
  42. package/dist/members/index.js.map +1 -1
  43. package/dist/members/util.js +9 -5
  44. package/dist/members/util.js.map +1 -1
  45. package/dist/metrics/constants.js +2 -1
  46. package/dist/metrics/constants.js.map +1 -1
  47. package/dist/multistream/remoteMedia.js +4 -0
  48. package/dist/multistream/remoteMedia.js.map +1 -1
  49. package/dist/networkQualityMonitor/index.js +19 -13
  50. package/dist/networkQualityMonitor/index.js.map +1 -1
  51. package/dist/reachability/index.js +3 -3
  52. package/dist/reachability/index.js.map +1 -1
  53. package/dist/reachability/request.js +2 -1
  54. package/dist/reachability/request.js.map +1 -1
  55. package/dist/roap/request.js +1 -1
  56. package/dist/roap/request.js.map +1 -1
  57. package/dist/{common/errors/parameter.d.ts → types/common/errors/webinar-registration-error.d.ts} +4 -5
  58. package/dist/types/config.d.ts +2 -0
  59. package/dist/types/constants.d.ts +25 -0
  60. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  61. package/dist/types/controls-options-manager/index.d.ts +2 -1
  62. package/dist/types/controls-options-manager/types.d.ts +2 -0
  63. package/dist/types/index.d.ts +2 -1
  64. package/dist/types/locus-info/index.d.ts +9 -0
  65. package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
  66. package/dist/types/meeting/index.d.ts +12 -1
  67. package/dist/types/meeting/muteState.d.ts +2 -1
  68. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  69. package/dist/types/meetings/index.d.ts +9 -0
  70. package/dist/types/members/index.d.ts +2 -1
  71. package/dist/types/members/util.d.ts +3 -1
  72. package/dist/types/metrics/constants.d.ts +1 -0
  73. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  74. package/dist/webinar/index.js +32 -19
  75. package/dist/webinar/index.js.map +1 -1
  76. package/package.json +22 -22
  77. package/src/common/errors/webinar-registration-error.ts +27 -0
  78. package/src/config.ts +2 -0
  79. package/src/constants.ts +31 -0
  80. package/src/controls-options-manager/enums.ts +1 -0
  81. package/src/controls-options-manager/index.ts +19 -2
  82. package/src/controls-options-manager/types.ts +2 -0
  83. package/src/controls-options-manager/util.ts +12 -0
  84. package/src/index.ts +2 -0
  85. package/src/locus-info/controlsUtils.ts +46 -2
  86. package/src/locus-info/fullState.ts +1 -0
  87. package/src/locus-info/index.ts +60 -0
  88. package/src/locus-info/parser.ts +8 -1
  89. package/src/meeting/in-meeting-actions.ts +37 -0
  90. package/src/meeting/index.ts +154 -20
  91. package/src/meeting/muteState.ts +6 -2
  92. package/src/meeting/util.ts +6 -2
  93. package/src/meeting-info/meeting-info-v2.ts +51 -0
  94. package/src/meetings/index.ts +68 -40
  95. package/src/members/index.ts +4 -2
  96. package/src/members/util.ts +3 -1
  97. package/src/metrics/constants.ts +1 -0
  98. package/src/multistream/remoteMedia.ts +5 -0
  99. package/src/reachability/index.ts +3 -3
  100. package/src/reachability/request.ts +1 -0
  101. package/src/roap/request.ts +3 -1
  102. package/src/webinar/index.ts +31 -17
  103. package/test/unit/spec/controls-options-manager/index.js +56 -32
  104. package/test/unit/spec/controls-options-manager/util.js +44 -0
  105. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  106. package/test/unit/spec/locus-info/index.js +88 -2
  107. package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
  108. package/test/unit/spec/meeting/index.js +263 -64
  109. package/test/unit/spec/meeting/muteState.js +8 -4
  110. package/test/unit/spec/meeting/utils.js +16 -1
  111. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  112. package/test/unit/spec/meetings/index.js +32 -1
  113. package/test/unit/spec/members/index.js +25 -2
  114. package/test/unit/spec/members/request.js +37 -3
  115. package/test/unit/spec/members/utils.js +15 -1
  116. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
  117. package/test/unit/spec/reachability/index.ts +1 -1
  118. package/test/unit/spec/reachability/request.js +13 -8
  119. package/test/unit/spec/webinar/index.ts +82 -16
  120. package/dist/annotation/annotation.types.d.ts +0 -42
  121. package/dist/annotation/constants.d.ts +0 -31
  122. package/dist/annotation/index.d.ts +0 -117
  123. package/dist/breakouts/breakout.d.ts +0 -8
  124. package/dist/breakouts/collection.d.ts +0 -5
  125. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  126. package/dist/breakouts/events.d.ts +0 -8
  127. package/dist/breakouts/index.d.ts +0 -5
  128. package/dist/breakouts/request.d.ts +0 -22
  129. package/dist/breakouts/utils.d.ts +0 -15
  130. package/dist/common/browser-detection.d.ts +0 -9
  131. package/dist/common/collection.d.ts +0 -48
  132. package/dist/common/config.d.ts +0 -2
  133. package/dist/common/errors/captcha-error.d.ts +0 -15
  134. package/dist/common/errors/intent-to-join.d.ts +0 -16
  135. package/dist/common/errors/join-meeting.d.ts +0 -17
  136. package/dist/common/errors/media.d.ts +0 -15
  137. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  138. package/dist/common/errors/password-error.d.ts +0 -15
  139. package/dist/common/errors/permission.d.ts +0 -14
  140. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  141. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  142. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  143. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  144. package/dist/common/errors/reconnection-in-progress.js +0 -33
  145. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  146. package/dist/common/errors/reconnection.d.ts +0 -15
  147. package/dist/common/errors/stats.d.ts +0 -15
  148. package/dist/common/errors/webex-errors.d.ts +0 -93
  149. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  150. package/dist/common/events/events-scope.d.ts +0 -17
  151. package/dist/common/events/events.d.ts +0 -12
  152. package/dist/common/events/trigger-proxy.d.ts +0 -2
  153. package/dist/common/events/util.d.ts +0 -2
  154. package/dist/common/logs/logger-config.d.ts +0 -2
  155. package/dist/common/logs/logger-proxy.d.ts +0 -2
  156. package/dist/common/logs/request.d.ts +0 -36
  157. package/dist/common/queue.d.ts +0 -34
  158. package/dist/config.d.ts +0 -72
  159. package/dist/constants.d.ts +0 -1088
  160. package/dist/controls-options-manager/constants.d.ts +0 -4
  161. package/dist/controls-options-manager/enums.d.ts +0 -15
  162. package/dist/controls-options-manager/index.d.ts +0 -136
  163. package/dist/controls-options-manager/types.d.ts +0 -43
  164. package/dist/controls-options-manager/util.d.ts +0 -1
  165. package/dist/index.d.ts +0 -7
  166. package/dist/interceptors/index.d.ts +0 -2
  167. package/dist/interceptors/locusRetry.d.ts +0 -27
  168. package/dist/interpretation/collection.d.ts +0 -5
  169. package/dist/interpretation/index.d.ts +0 -5
  170. package/dist/interpretation/siLanguage.d.ts +0 -5
  171. package/dist/locus-info/controlsUtils.d.ts +0 -2
  172. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  173. package/dist/locus-info/fullState.d.ts +0 -2
  174. package/dist/locus-info/hostUtils.d.ts +0 -2
  175. package/dist/locus-info/index.d.ts +0 -322
  176. package/dist/locus-info/infoUtils.d.ts +0 -2
  177. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  178. package/dist/locus-info/parser.d.ts +0 -272
  179. package/dist/locus-info/selfUtils.d.ts +0 -2
  180. package/dist/media/index.d.ts +0 -34
  181. package/dist/media/properties.d.ts +0 -93
  182. package/dist/media/util.d.ts +0 -2
  183. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  184. package/dist/mediaQualityMetrics/config.js +0 -502
  185. package/dist/mediaQualityMetrics/config.js.map +0 -1
  186. package/dist/meeting/effectsState.js +0 -260
  187. package/dist/meeting/effectsState.js.map +0 -1
  188. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  189. package/dist/meeting/index.d.ts +0 -1825
  190. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  191. package/dist/meeting/muteState.d.ts +0 -178
  192. package/dist/meeting/request.d.ts +0 -295
  193. package/dist/meeting/request.type.d.ts +0 -11
  194. package/dist/meeting/state.d.ts +0 -9
  195. package/dist/meeting/util.d.ts +0 -119
  196. package/dist/meeting/voicea-meeting.d.ts +0 -16
  197. package/dist/meeting-info/collection.d.ts +0 -20
  198. package/dist/meeting-info/index.d.ts +0 -69
  199. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  200. package/dist/meeting-info/request.d.ts +0 -22
  201. package/dist/meeting-info/util.d.ts +0 -2
  202. package/dist/meeting-info/utilv2.d.ts +0 -2
  203. package/dist/meetings/collection.d.ts +0 -40
  204. package/dist/meetings/index.d.ts +0 -390
  205. package/dist/meetings/meetings.types.d.ts +0 -4
  206. package/dist/meetings/request.d.ts +0 -27
  207. package/dist/meetings/util.d.ts +0 -18
  208. package/dist/member/index.d.ts +0 -160
  209. package/dist/member/member.types.js +0 -17
  210. package/dist/member/member.types.js.map +0 -1
  211. package/dist/member/types.d.ts +0 -32
  212. package/dist/member/util.d.ts +0 -2
  213. package/dist/members/collection.d.ts +0 -29
  214. package/dist/members/index.d.ts +0 -353
  215. package/dist/members/request.d.ts +0 -114
  216. package/dist/members/types.d.ts +0 -25
  217. package/dist/members/util.d.ts +0 -215
  218. package/dist/metrics/config.js +0 -276
  219. package/dist/metrics/config.js.map +0 -1
  220. package/dist/metrics/constants.d.ts +0 -70
  221. package/dist/metrics/index.d.ts +0 -45
  222. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  223. package/dist/multistream/receiveSlot.d.ts +0 -68
  224. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  225. package/dist/multistream/remoteMedia.d.ts +0 -72
  226. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  227. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  228. package/dist/multistream/sendSlotManager.d.ts +0 -69
  229. package/dist/networkQualityMonitor/index.d.ts +0 -70
  230. package/dist/peer-connection-manager/index.js +0 -671
  231. package/dist/peer-connection-manager/index.js.map +0 -1
  232. package/dist/peer-connection-manager/util.js +0 -109
  233. package/dist/peer-connection-manager/util.js.map +0 -1
  234. package/dist/personal-meeting-room/index.d.ts +0 -47
  235. package/dist/personal-meeting-room/request.d.ts +0 -14
  236. package/dist/personal-meeting-room/util.d.ts +0 -2
  237. package/dist/reachability/clusterReachability.d.ts +0 -109
  238. package/dist/reachability/index.d.ts +0 -105
  239. package/dist/reachability/request.d.ts +0 -39
  240. package/dist/reachability/util.d.ts +0 -8
  241. package/dist/reactions/constants.d.ts +0 -3
  242. package/dist/reactions/reactions.d.ts +0 -4
  243. package/dist/reactions/reactions.type.d.ts +0 -52
  244. package/dist/reconnection-manager/index.d.ts +0 -136
  245. package/dist/recording-controller/enums.d.ts +0 -7
  246. package/dist/recording-controller/index.d.ts +0 -207
  247. package/dist/recording-controller/util.d.ts +0 -14
  248. package/dist/roap/collection.js +0 -62
  249. package/dist/roap/collection.js.map +0 -1
  250. package/dist/roap/handler.js +0 -275
  251. package/dist/roap/handler.js.map +0 -1
  252. package/dist/roap/index.d.ts +0 -86
  253. package/dist/roap/request.d.ts +0 -39
  254. package/dist/roap/state.js +0 -126
  255. package/dist/roap/state.js.map +0 -1
  256. package/dist/roap/turnDiscovery.d.ts +0 -155
  257. package/dist/roap/util.js +0 -75
  258. package/dist/roap/util.js.map +0 -1
  259. package/dist/rtcMetrics/constants.d.ts +0 -4
  260. package/dist/rtcMetrics/index.d.ts +0 -61
  261. package/dist/statsAnalyzer/global.d.ts +0 -36
  262. package/dist/statsAnalyzer/global.js +0 -126
  263. package/dist/statsAnalyzer/global.js.map +0 -1
  264. package/dist/statsAnalyzer/index.d.ts +0 -217
  265. package/dist/statsAnalyzer/index.js +0 -1013
  266. package/dist/statsAnalyzer/index.js.map +0 -1
  267. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  268. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  269. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  270. package/dist/transcription/index.d.ts +0 -64
  271. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  272. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  273. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  274. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  275. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  276. package/dist/webinar/collection.d.ts +0 -16
  277. package/dist/webinar/index.d.ts +0 -5
@@ -177,7 +177,12 @@ export default class ControlsOptionsManager {
177
177
  * @memberof ControlsOptionsManager
178
178
  * @returns {Promise}
179
179
  */
180
- private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {
180
+ private setControls(setting: {
181
+ [Setting.muted]?: boolean;
182
+ [Setting.disallowUnmute]?: boolean;
183
+ [Setting.muteOnEntry]?: boolean;
184
+ [Setting.roles]?: Array<string>;
185
+ }): Promise<any> {
181
186
  LoggerProxy.logger.log(
182
187
  `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`
183
188
  );
@@ -190,6 +195,7 @@ export default class ControlsOptionsManager {
190
195
  Object.entries(setting).forEach(([key, value]) => {
191
196
  if (
192
197
  !shouldSkipCheckToMergeBody &&
198
+ value !== undefined &&
193
199
  !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)
194
200
  ) {
195
201
  error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
@@ -219,6 +225,14 @@ export default class ControlsOptionsManager {
219
225
  }
220
226
  break;
221
227
 
228
+ case Setting.roles:
229
+ if (Array.isArray(value)) {
230
+ body.audio = body.audio
231
+ ? {...body.audio, [camelCase(key)]: value}
232
+ : {[camelCase(key)]: value};
233
+ }
234
+ break;
235
+
222
236
  default:
223
237
  error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
224
238
  }
@@ -261,18 +275,21 @@ export default class ControlsOptionsManager {
261
275
  * @param {boolean} mutedEnabled
262
276
  * @param {boolean} disallowUnmuteEnabled
263
277
  * @param {boolean} muteOnEntryEnabled
278
+ * @param {array} roles which should be muted
264
279
  * @memberof ControlsOptionsManager
265
280
  * @returns {Promise}
266
281
  */
267
282
  public setMuteAll(
268
283
  mutedEnabled: boolean,
269
284
  disallowUnmuteEnabled: boolean,
270
- muteOnEntryEnabled: boolean
285
+ muteOnEntryEnabled: boolean,
286
+ roles: Array<string>
271
287
  ): Promise<any> {
272
288
  return this.setControls({
273
289
  [Setting.muted]: mutedEnabled,
274
290
  [Setting.disallowUnmute]: disallowUnmuteEnabled,
275
291
  [Setting.muteOnEntry]: muteOnEntryEnabled,
292
+ [Setting.roles]: roles,
276
293
  });
277
294
  }
278
295
  }
@@ -36,6 +36,8 @@ export interface VideoProperties {
36
36
 
37
37
  export interface ViewTheParticipantListProperties {
38
38
  enabled?: boolean;
39
+ panelistEnabled?: boolean;
40
+ attendeeCount?: boolean;
39
41
  }
40
42
 
41
43
  export type Properties =
@@ -217,6 +217,18 @@ class Utils {
217
217
  if (control.properties.enabled === false) {
218
218
  requiredHints.push(DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST);
219
219
  }
220
+ if (control.properties.panelistEnabled === true) {
221
+ requiredHints.push(DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST);
222
+ }
223
+ if (control.properties.panelistEnabled === false) {
224
+ requiredHints.push(DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST);
225
+ }
226
+ if (control.properties.attendeeCount === true) {
227
+ requiredHints.push(DISPLAY_HINTS.ENABLE_SHOW_ATTENDEE_COUNT);
228
+ }
229
+ if (control.properties.attendeeCount === false) {
230
+ requiredHints.push(DISPLAY_HINTS.DISABLE_SHOW_ATTENDEE_COUNT);
231
+ }
220
232
 
221
233
  return Utils.hasHints({requiredHints, displayHints});
222
234
  }
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ import CaptchaError from './common/errors/captcha-error';
8
8
  import IntentToJoinError from './common/errors/intent-to-join';
9
9
  import PasswordError from './common/errors/password-error';
10
10
  import PermissionError from './common/errors/permission';
11
+ import WebinarRegistrationError from './common/errors/webinar-registration-error';
11
12
  import {
12
13
  ReclaimHostEmptyWrongKeyError,
13
14
  ReclaimHostIsHostAlreadyError,
@@ -68,6 +69,7 @@ export {
68
69
  ReclaimHostEmptyWrongKeyError,
69
70
  Meeting,
70
71
  MeetingInfoUtil,
72
+ WebinarRegistrationError,
71
73
  };
72
74
 
73
75
  export {RemoteMedia} from './multistream/remoteMedia';
@@ -79,7 +79,11 @@ ControlsUtils.parse = (controls: any) => {
79
79
  }
80
80
 
81
81
  if (controls?.viewTheParticipantList) {
82
- parsedControls.viewTheParticipantList = {enabled: controls.viewTheParticipantList.enabled};
82
+ parsedControls.viewTheParticipantList = {
83
+ enabled: controls.viewTheParticipantList?.enabled ?? false,
84
+ panelistEnabled: controls.viewTheParticipantList?.panelistEnabled ?? false,
85
+ attendeeCount: controls.viewTheParticipantList?.attendeeCount ?? 0,
86
+ };
83
87
  }
84
88
 
85
89
  if (controls?.raiseHand) {
@@ -90,6 +94,23 @@ ControlsUtils.parse = (controls: any) => {
90
94
  parsedControls.video = {enabled: controls.video.enabled};
91
95
  }
92
96
 
97
+ if (controls?.webcastControl) {
98
+ parsedControls.webcastControl = {streaming: controls.webcastControl.streaming};
99
+ }
100
+
101
+ if (controls?.meetingFull) {
102
+ parsedControls.meetingFull = {
103
+ meetingFull: controls.meetingFull?.meetingFull ?? false,
104
+ meetingPanelistFull: controls.meetingFull?.meetingPanelistFull ?? false,
105
+ };
106
+ }
107
+
108
+ if (controls?.practiceSession) {
109
+ parsedControls.practiceSession = {
110
+ enabled: controls.practiceSession.enabled,
111
+ };
112
+ }
113
+
93
114
  return parsedControls;
94
115
  };
95
116
 
@@ -121,7 +142,11 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
121
142
  previous?.reactions?.showDisplayNameWithReactions,
122
143
 
123
144
  hasViewTheParticipantListChanged:
124
- current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled,
145
+ current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled ||
146
+ current?.viewTheParticipantList?.panelistEnabled !==
147
+ previous?.viewTheParticipantList?.panelistEnabled ||
148
+ current?.viewTheParticipantList?.attendeeCount !==
149
+ previous?.viewTheParticipantList?.attendeeCount,
125
150
 
126
151
  hasRaiseHandChanged: current?.raiseHand?.enabled !== previous?.raiseHand?.enabled,
127
152
 
@@ -167,6 +192,25 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
167
192
  hasVideoEnabledChanged:
168
193
  newControls.video?.enabled !== undefined &&
169
194
  !isEqual(previous?.videoEnabled, current?.videoEnabled),
195
+
196
+ hasWebcastChanged: !isEqual(
197
+ previous?.webcastControl?.streaming,
198
+ current?.webcastControl?.streaming
199
+ ),
200
+
201
+ hasMeetingFullChanged:
202
+ !isEqual(previous?.meetingFull?.meetingFull, current?.meetingFull?.meetingFull) ||
203
+ !isEqual(
204
+ previous?.meetingFull?.meetingPanelistFull,
205
+ current?.meetingFull?.meetingPanelistFull
206
+ ),
207
+
208
+ hasPracticeSessionEnabledChanged: !isEqual(
209
+ previous?.practiceSession?.enabled,
210
+ current?.practiceSession?.enabled
211
+ ),
212
+
213
+ hasStageViewChanged: !isEqual(previous?.videoLayout, current?.videoLayout),
170
214
  },
171
215
  };
172
216
  };
@@ -6,6 +6,7 @@ FullState.parse = (fullState) => ({
6
6
  type: fullState.type || FULL_STATE.UNKNOWN,
7
7
  meetingState: fullState.state,
8
8
  locked: fullState.locked,
9
+ attendeeCount: typeof fullState.attendeeCount === 'number' ? fullState.attendeeCount : 0,
9
10
  });
10
11
 
11
12
  FullState.getFullState = (oldFullState, newFullState) => {
@@ -64,6 +64,7 @@ export default class LocusInfo extends EventsScope {
64
64
  replace: any;
65
65
  url: any;
66
66
  services: any;
67
+ resources: any;
67
68
  mainSessionLocusCache: any;
68
69
  /**
69
70
  * Constructor
@@ -263,6 +264,7 @@ export default class LocusInfo extends EventsScope {
263
264
  this.updateHostInfo(locus.host);
264
265
  this.updateMediaShares(locus.mediaShares);
265
266
  this.updateServices(locus.links?.services);
267
+ this.updateResources(locus.links?.resources);
266
268
  }
267
269
 
268
270
  /**
@@ -452,6 +454,7 @@ export default class LocusInfo extends EventsScope {
452
454
  this.updateIdentifiers(locus.identities);
453
455
  this.updateEmbeddedApps(locus.embeddedApps);
454
456
  this.updateServices(locus.links?.services);
457
+ this.updateResources(locus.links?.resources);
455
458
  this.compareAndUpdate();
456
459
  // update which required to compare different objects from locus
457
460
  }
@@ -805,6 +808,10 @@ export default class LocusInfo extends EventsScope {
805
808
  hasRaiseHandChanged,
806
809
  hasVideoChanged,
807
810
  hasInterpretationChanged,
811
+ hasWebcastChanged,
812
+ hasMeetingFullChanged,
813
+ hasPracticeSessionEnabledChanged,
814
+ hasStageViewChanged,
808
815
  },
809
816
  current,
810
817
  } = ControlsUtils.getControls(this.controls, controls);
@@ -1008,6 +1015,38 @@ export default class LocusInfo extends EventsScope {
1008
1015
  );
1009
1016
  }
1010
1017
 
1018
+ if (hasWebcastChanged) {
1019
+ this.emitScoped(
1020
+ {file: 'locus-info', function: 'updateControls'},
1021
+ LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED,
1022
+ {state: current.webcastControl}
1023
+ );
1024
+ }
1025
+
1026
+ if (hasMeetingFullChanged) {
1027
+ this.emitScoped(
1028
+ {file: 'locus-info', function: 'updateControls'},
1029
+ LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED,
1030
+ {state: current.meetingFull}
1031
+ );
1032
+ }
1033
+
1034
+ if (hasPracticeSessionEnabledChanged) {
1035
+ this.emitScoped(
1036
+ {file: 'locus-info', function: 'updateControls'},
1037
+ LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED,
1038
+ {state: current.practiceSession}
1039
+ );
1040
+ }
1041
+
1042
+ if (hasStageViewChanged) {
1043
+ this.emitScoped(
1044
+ {file: 'locus-info', function: 'updateControls'},
1045
+ LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED,
1046
+ {state: current.videoLayout}
1047
+ );
1048
+ }
1049
+
1011
1050
  this.controls = controls;
1012
1051
  }
1013
1052
  }
@@ -1064,6 +1103,27 @@ export default class LocusInfo extends EventsScope {
1064
1103
  }
1065
1104
  }
1066
1105
 
1106
+ /**
1107
+ * @param {Object} resources
1108
+ * @returns {undefined}
1109
+ * @memberof LocusInfo
1110
+ */
1111
+ updateResources(resources: Record<'webcastInstance', {url: string}>) {
1112
+ if (resources && !isEqual(this.resources, resources)) {
1113
+ this.resources = resources;
1114
+ this.emitScoped(
1115
+ {
1116
+ file: 'locus-info',
1117
+ function: 'updateResources',
1118
+ },
1119
+ LOCUSINFO.EVENTS.LINKS_RESOURCES,
1120
+ {
1121
+ resources,
1122
+ }
1123
+ );
1124
+ }
1125
+ }
1126
+
1067
1127
  /**
1068
1128
  * @param {Object} fullState
1069
1129
  * @returns {undefined}
@@ -771,7 +771,14 @@ export default class Parser {
771
771
  )}, Action: ${lociComparison}`
772
772
  );
773
773
 
774
- this.onDeltaAction(lociComparison, newLoci);
774
+ try {
775
+ this.onDeltaAction(lociComparison, newLoci);
776
+ } catch (error) {
777
+ LoggerProxy.logger.error(
778
+ 'Locus-info:parser#processDeltaEvent --> Error in onDeltaAction',
779
+ error
780
+ );
781
+ }
775
782
  }
776
783
 
777
784
  this.nextEvent();
@@ -3,6 +3,7 @@
3
3
  */
4
4
 
5
5
  import {MEETINGS} from '../constants';
6
+ import ControlsOptionsUtil from '../controls-options-manager/util';
6
7
 
7
8
  /**
8
9
  * IInMeetingActions
@@ -64,6 +65,10 @@ interface IInMeetingActions {
64
65
  canUpdateShareControl?: boolean;
65
66
  canEnableViewTheParticipantsList?: boolean;
66
67
  canDisableViewTheParticipantsList?: boolean;
68
+ canEnableViewTheParticipantsListPanelist?: boolean;
69
+ canDisableViewTheParticipantsListPanelist?: boolean;
70
+ canEnableShowAttendeeCount?: boolean;
71
+ canDisableShowAttendeeCount?: boolean;
67
72
  canEnableRaiseHand?: boolean;
68
73
  canDisableRaiseHand?: boolean;
69
74
  canEnableVideo?: boolean;
@@ -83,6 +88,11 @@ interface IInMeetingActions {
83
88
  canShareWhiteBoard?: boolean;
84
89
  enforceVirtualBackground?: boolean;
85
90
  canPollingAndQA?: boolean;
91
+ canStartWebcast?: boolean;
92
+ canStopWebcast?: boolean;
93
+ canShowStageView?: boolean;
94
+ canEnableStageView?: boolean;
95
+ canDisableStageView?: boolean;
86
96
  }
87
97
 
88
98
  /**
@@ -201,6 +211,14 @@ export default class InMeetingActions implements IInMeetingActions {
201
211
 
202
212
  canDisableViewTheParticipantsList = null;
203
213
 
214
+ canEnableViewTheParticipantsListPanelist = null;
215
+
216
+ canDisableViewTheParticipantsListPanelist = null;
217
+
218
+ canEnableShowAttendeeCount = null;
219
+
220
+ canDisableShowAttendeeCount = null;
221
+
204
222
  canEnableRaiseHand = null;
205
223
 
206
224
  canDisableRaiseHand = null;
@@ -238,6 +256,16 @@ export default class InMeetingActions implements IInMeetingActions {
238
256
  canShareWhiteBoard = null;
239
257
 
240
258
  canPollingAndQA = null;
259
+
260
+ canStartWebcast = null;
261
+
262
+ canStopWebcast = null;
263
+
264
+ canShowStageView = null;
265
+
266
+ canEnableStageView = null;
267
+
268
+ canDisableStageView = null;
241
269
  /**
242
270
  * Returns all meeting action options
243
271
  * @returns {Object}
@@ -298,6 +326,10 @@ export default class InMeetingActions implements IInMeetingActions {
298
326
  canUpdateShareControl: this.canUpdateShareControl,
299
327
  canEnableViewTheParticipantsList: this.canEnableViewTheParticipantsList,
300
328
  canDisableViewTheParticipantsList: this.canDisableViewTheParticipantsList,
329
+ canEnableViewTheParticipantsListPanelist: this.canEnableViewTheParticipantsListPanelist,
330
+ canDisableViewTheParticipantsListPanelist: this.canDisableViewTheParticipantsListPanelist,
331
+ canEnableShowAttendeeCount: this.canEnableShowAttendeeCount,
332
+ canDisableShowAttendeeCount: this.canDisableShowAttendeeCount,
301
333
  canEnableRaiseHand: this.canEnableRaiseHand,
302
334
  canDisableRaiseHand: this.canDisableRaiseHand,
303
335
  canEnableVideo: this.canEnableVideo,
@@ -317,6 +349,11 @@ export default class InMeetingActions implements IInMeetingActions {
317
349
  supportHDV: this.supportHDV,
318
350
  canShareWhiteBoard: this.canShareWhiteBoard,
319
351
  canPollingAndQA: this.canPollingAndQA,
352
+ canStartWebcast: this.canStartWebcast,
353
+ canStopWebcast: this.canStopWebcast,
354
+ canShowStageView: this.canShowStageView,
355
+ canEnableStageView: this.canEnableStageView,
356
+ canDisableStageView: this.canDisableStageView,
320
357
  });
321
358
 
322
359
  /**