@webex/plugin-meetings 3.8.0-next.8 → 3.8.0-next.80

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 (171) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +70 -6
  3. package/dist/breakouts/index.js.map +1 -1
  4. package/dist/common/errors/webex-errors.js +12 -2
  5. package/dist/common/errors/webex-errors.js.map +1 -1
  6. package/dist/config.js +5 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +20 -123
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +2 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/types.js.map +1 -1
  13. package/dist/controls-options-manager/util.js +52 -0
  14. package/dist/controls-options-manager/util.js.map +1 -1
  15. package/dist/interpretation/index.js +1 -1
  16. package/dist/interpretation/siLanguage.js +1 -1
  17. package/dist/locus-info/controlsUtils.js +28 -10
  18. package/dist/locus-info/controlsUtils.js.map +1 -1
  19. package/dist/locus-info/index.js +62 -12
  20. package/dist/locus-info/index.js.map +1 -1
  21. package/dist/locus-info/selfUtils.js +432 -418
  22. package/dist/locus-info/selfUtils.js.map +1 -1
  23. package/dist/media/index.js +17 -17
  24. package/dist/media/index.js.map +1 -1
  25. package/dist/media/properties.js +94 -6
  26. package/dist/media/properties.js.map +1 -1
  27. package/dist/meeting/brbState.js +6 -0
  28. package/dist/meeting/brbState.js.map +1 -1
  29. package/dist/meeting/in-meeting-actions.js +17 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +570 -302
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/locusMediaRequest.js +0 -17
  34. package/dist/meeting/locusMediaRequest.js.map +1 -1
  35. package/dist/meeting/muteState.js +0 -2
  36. package/dist/meeting/muteState.js.map +1 -1
  37. package/dist/meeting/request.js +30 -0
  38. package/dist/meeting/request.js.map +1 -1
  39. package/dist/meeting/request.type.js.map +1 -1
  40. package/dist/meeting/util.js +13 -2
  41. package/dist/meeting/util.js.map +1 -1
  42. package/dist/meeting-info/meeting-info-v2.js +373 -68
  43. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  44. package/dist/meeting-info/utilv2.js +5 -1
  45. package/dist/meeting-info/utilv2.js.map +1 -1
  46. package/dist/meetings/index.js +136 -1
  47. package/dist/meetings/index.js.map +1 -1
  48. package/dist/meetings/util.js +14 -0
  49. package/dist/meetings/util.js.map +1 -1
  50. package/dist/member/index.js +10 -0
  51. package/dist/member/index.js.map +1 -1
  52. package/dist/member/util.js +330 -353
  53. package/dist/member/util.js.map +1 -1
  54. package/dist/members/index.js +42 -0
  55. package/dist/members/index.js.map +1 -1
  56. package/dist/members/request.js +38 -0
  57. package/dist/members/request.js.map +1 -1
  58. package/dist/members/util.js +36 -1
  59. package/dist/members/util.js.map +1 -1
  60. package/dist/metrics/constants.js +9 -0
  61. package/dist/metrics/constants.js.map +1 -1
  62. package/dist/reachability/clusterReachability.js +63 -27
  63. package/dist/reachability/clusterReachability.js.map +1 -1
  64. package/dist/reachability/index.js +112 -47
  65. package/dist/reachability/index.js.map +1 -1
  66. package/dist/reachability/reachability.types.js +14 -0
  67. package/dist/reachability/reachability.types.js.map +1 -1
  68. package/dist/reachability/request.js +19 -3
  69. package/dist/reachability/request.js.map +1 -1
  70. package/dist/reconnection-manager/index.js +2 -2
  71. package/dist/reconnection-manager/index.js.map +1 -1
  72. package/dist/roap/index.js.map +1 -1
  73. package/dist/roap/turnDiscovery.js +45 -27
  74. package/dist/roap/turnDiscovery.js.map +1 -1
  75. package/dist/roap/types.js +17 -0
  76. package/dist/roap/types.js.map +1 -0
  77. package/dist/types/common/errors/webex-errors.d.ts +7 -1
  78. package/dist/types/config.d.ts +3 -0
  79. package/dist/types/constants.d.ts +13 -85
  80. package/dist/types/controls-options-manager/enums.d.ts +3 -1
  81. package/dist/types/controls-options-manager/types.d.ts +7 -1
  82. package/dist/types/locus-info/index.d.ts +3 -3
  83. package/dist/types/locus-info/selfUtils.d.ts +216 -1
  84. package/dist/types/media/properties.d.ts +15 -0
  85. package/dist/types/meeting/in-meeting-actions.d.ts +16 -0
  86. package/dist/types/meeting/index.d.ts +43 -1
  87. package/dist/types/meeting/muteState.d.ts +0 -1
  88. package/dist/types/meeting/request.d.ts +12 -1
  89. package/dist/types/meeting/request.type.d.ts +6 -0
  90. package/dist/types/meeting/util.d.ts +3 -1
  91. package/dist/types/meeting-info/meeting-info-v2.d.ts +82 -1
  92. package/dist/types/meetings/index.d.ts +57 -0
  93. package/dist/types/member/index.d.ts +1 -0
  94. package/dist/types/member/util.d.ts +159 -1
  95. package/dist/types/members/index.d.ts +15 -0
  96. package/dist/types/members/request.d.ts +26 -0
  97. package/dist/types/members/util.d.ts +27 -0
  98. package/dist/types/metrics/constants.d.ts +9 -0
  99. package/dist/types/reachability/clusterReachability.d.ts +15 -7
  100. package/dist/types/reachability/index.d.ts +10 -1
  101. package/dist/types/reachability/reachability.types.d.ts +5 -0
  102. package/dist/types/roap/index.d.ts +3 -2
  103. package/dist/types/roap/turnDiscovery.d.ts +5 -17
  104. package/dist/types/roap/types.d.ts +16 -0
  105. package/dist/webinar/index.js +1 -1
  106. package/package.json +24 -23
  107. package/src/breakouts/index.ts +69 -0
  108. package/src/common/errors/webex-errors.ts +8 -1
  109. package/src/config.ts +3 -0
  110. package/src/constants.ts +20 -90
  111. package/src/controls-options-manager/enums.ts +2 -0
  112. package/src/controls-options-manager/types.ts +11 -1
  113. package/src/controls-options-manager/util.ts +62 -0
  114. package/src/locus-info/controlsUtils.ts +44 -14
  115. package/src/locus-info/index.ts +56 -13
  116. package/src/locus-info/selfUtils.ts +496 -442
  117. package/src/media/index.ts +23 -21
  118. package/src/media/properties.ts +96 -0
  119. package/src/meeting/brbState.ts +7 -0
  120. package/src/meeting/in-meeting-actions.ts +32 -0
  121. package/src/meeting/index.ts +382 -93
  122. package/src/meeting/locusMediaRequest.ts +0 -18
  123. package/src/meeting/muteState.ts +0 -2
  124. package/src/meeting/request.ts +36 -1
  125. package/src/meeting/request.type.ts +7 -0
  126. package/src/meeting/util.ts +11 -2
  127. package/src/meeting-info/meeting-info-v2.ts +254 -8
  128. package/src/meeting-info/utilv2.ts +5 -0
  129. package/src/meetings/index.ts +148 -1
  130. package/src/meetings/util.ts +18 -0
  131. package/src/member/index.ts +13 -2
  132. package/src/member/util.ts +351 -348
  133. package/src/members/index.ts +47 -0
  134. package/src/members/request.ts +44 -0
  135. package/src/members/util.ts +43 -1
  136. package/src/metrics/constants.ts +9 -0
  137. package/src/reachability/clusterReachability.ts +73 -26
  138. package/src/reachability/index.ts +70 -1
  139. package/src/reachability/reachability.types.ts +6 -0
  140. package/src/reachability/request.ts +7 -0
  141. package/src/reconnection-manager/index.ts +2 -2
  142. package/src/roap/index.ts +3 -7
  143. package/src/roap/turnDiscovery.ts +34 -39
  144. package/src/roap/types.ts +23 -0
  145. package/test/unit/spec/breakouts/index.ts +167 -95
  146. package/test/unit/spec/controls-options-manager/util.js +120 -0
  147. package/test/unit/spec/locus-info/controlsUtils.js +103 -9
  148. package/test/unit/spec/locus-info/index.js +167 -73
  149. package/test/unit/spec/locus-info/selfUtils.js +98 -24
  150. package/test/unit/spec/media/index.ts +150 -18
  151. package/test/unit/spec/media/properties.ts +130 -0
  152. package/test/unit/spec/meeting/brbState.ts +19 -0
  153. package/test/unit/spec/meeting/in-meeting-actions.ts +19 -4
  154. package/test/unit/spec/meeting/index.js +557 -35
  155. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -30
  156. package/test/unit/spec/meeting/muteState.js +0 -2
  157. package/test/unit/spec/meeting/request.js +32 -1
  158. package/test/unit/spec/meeting/utils.js +119 -18
  159. package/test/unit/spec/meeting-info/meetinginfov2.js +484 -114
  160. package/test/unit/spec/meeting-info/utilv2.js +19 -0
  161. package/test/unit/spec/meetings/index.js +146 -2
  162. package/test/unit/spec/member/index.js +7 -0
  163. package/test/unit/spec/member/util.js +24 -0
  164. package/test/unit/spec/members/index.js +140 -26
  165. package/test/unit/spec/members/request.js +68 -22
  166. package/test/unit/spec/members/utils.js +75 -0
  167. package/test/unit/spec/reachability/clusterReachability.ts +88 -56
  168. package/test/unit/spec/reachability/index.ts +101 -0
  169. package/test/unit/spec/reachability/request.js +47 -2
  170. package/test/unit/spec/reconnection-manager/index.js +4 -4
  171. package/test/unit/spec/roap/turnDiscovery.ts +110 -28
@@ -7,6 +7,8 @@ import {
7
7
  ReactionsProperties,
8
8
  ViewTheParticipantListProperties,
9
9
  VideoProperties,
10
+ type RemoteDesktopControlProperties,
11
+ type AnnotationProperties,
10
12
  } from './types';
11
13
 
12
14
  /**
@@ -256,6 +258,52 @@ class Utils {
256
258
  return Utils.hasHints({requiredHints, displayHints});
257
259
  }
258
260
 
261
+ /**
262
+ * Validate if a annotation-scoped control is allowed to be sent to the service.
263
+ *
264
+ * @param {ControlConfig<AnnotationProperties>} control - Annotation control config to validate
265
+ * @param {Array<string>} displayHints - All available hints
266
+ * @returns {boolean} - True if all of the actions are allowed.
267
+ */
268
+ public static canUpdateAnnotation(
269
+ control: ControlConfig<AnnotationProperties>,
270
+ displayHints: Array<string>
271
+ ): boolean {
272
+ const requiredHints = [];
273
+
274
+ if (control.properties.enabled === true) {
275
+ requiredHints.push(DISPLAY_HINTS.ENABLE_ANNOTATION_MEETING_OPTION);
276
+ }
277
+ if (control.properties.enabled === false) {
278
+ requiredHints.push(DISPLAY_HINTS.DISABLE_ANNOTATION_MEETING_OPTION);
279
+ }
280
+
281
+ return Utils.hasHints({requiredHints, displayHints});
282
+ }
283
+
284
+ /**
285
+ * Validate if a rdc-scoped control is allowed to be sent to the service.
286
+ *
287
+ * @param {ControlConfig<RemoteDesktopControlProperties>} control - Remote Desktop Control config to validate
288
+ * @param {Array<string>} displayHints - All available hints
289
+ * @returns {boolean} - True if all of the actions are allowed.
290
+ */
291
+ public static canUpdateRemoteDesktopControl(
292
+ control: ControlConfig<RemoteDesktopControlProperties>,
293
+ displayHints: Array<string>
294
+ ): boolean {
295
+ const requiredHints = [];
296
+
297
+ if (control.properties.enabled === true) {
298
+ requiredHints.push(DISPLAY_HINTS.ENABLE_RDC_MEETING_OPTION);
299
+ }
300
+ if (control.properties.enabled === false) {
301
+ requiredHints.push(DISPLAY_HINTS.DISABLE_RDC_MEETING_OPTION);
302
+ }
303
+
304
+ return Utils.hasHints({requiredHints, displayHints});
305
+ }
306
+
259
307
  /**
260
308
  * Validate that a control can be sent to the service based on the provided
261
309
  * display hints.
@@ -301,6 +349,20 @@ class Utils {
301
349
  );
302
350
  break;
303
351
 
352
+ case Control.annotation:
353
+ determinant = Utils.canUpdateAnnotation(
354
+ control as ControlConfig<AnnotationProperties>,
355
+ displayHints
356
+ );
357
+ break;
358
+
359
+ case Control.rdc:
360
+ determinant = Utils.canUpdateRemoteDesktopControl(
361
+ control as ControlConfig<RemoteDesktopControlProperties>,
362
+ displayHints
363
+ );
364
+ break;
365
+
304
366
  default:
305
367
  determinant = false;
306
368
  }
@@ -1,5 +1,5 @@
1
1
  import {isEqual} from 'lodash';
2
- import {BREAKOUTS} from '../constants';
2
+ import {BREAKOUTS, MEETING_STATE} from '../constants';
3
3
 
4
4
  const ControlsUtils: any = {};
5
5
 
@@ -111,6 +111,18 @@ ControlsUtils.parse = (controls: any) => {
111
111
  };
112
112
  }
113
113
 
114
+ if (controls?.annotationControl) {
115
+ parsedControls.annotationControl = {
116
+ enabled: controls.annotationControl.enabled,
117
+ };
118
+ }
119
+
120
+ if (controls?.rdcControl) {
121
+ parsedControls.rdcControl = {
122
+ enabled: controls.rdcControl.enabled,
123
+ };
124
+ }
125
+
114
126
  return parsedControls;
115
127
  };
116
128
 
@@ -206,11 +218,17 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
206
218
  ),
207
219
 
208
220
  hasPracticeSessionEnabledChanged: !isEqual(
209
- previous?.practiceSession?.enabled,
210
- current?.practiceSession?.enabled
221
+ !!previous?.practiceSession?.enabled,
222
+ !!current?.practiceSession?.enabled
211
223
  ),
212
224
 
213
225
  hasStageViewChanged: !isEqual(previous?.videoLayout, current?.videoLayout),
226
+
227
+ hasAnnotationControlChanged:
228
+ current?.annotationControl?.enabled !== previous?.annotationControl?.enabled,
229
+
230
+ hasRemoteDesktopControlChanged:
231
+ current?.rdcControl?.enabled !== previous?.rdcControl?.enabled,
214
232
  },
215
233
  };
216
234
  };
@@ -242,30 +260,42 @@ ControlsUtils.isNeedReplaceMembers = (oldControls: any, controls: any) => {
242
260
  }
243
261
 
244
262
  return (
245
- oldControls.breakout.groupId !== controls.breakout.groupId ||
246
- oldControls.breakout.sessionId !== controls.breakout.sessionId
263
+ oldControls?.breakout?.groupId !== controls?.breakout?.groupId ||
264
+ oldControls?.breakout?.sessionId !== controls?.breakout?.sessionId
247
265
  );
248
266
  };
249
267
 
250
268
  /**
251
269
  * determine the switch status between breakout session and main session.
252
- * @param {LocusControls} oldControls
253
- * @param {LocusControls} controls
270
+ * @param {LocusInfo} oldLocus
271
+ * @param {LocusInfo} newLocus
254
272
  * @returns {Object}
255
273
  */
256
- ControlsUtils.getSessionSwitchStatus = (oldControls: any, controls: any) => {
274
+ ControlsUtils.getSessionSwitchStatus = (oldLocus: any, newLocus: any) => {
257
275
  const status = {isReturnToMain: false, isJoinToBreakout: false};
258
276
  // no breakout case
259
- if (!oldControls?.breakout || !controls?.breakout) {
277
+ if (!oldLocus.controls?.breakout || !newLocus.controls?.breakout) {
260
278
  return status;
261
279
  }
262
280
 
263
- status.isReturnToMain =
264
- oldControls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&
265
- controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;
281
+ // It is used to fix the timing issue triggered when the creator leaves session to ensure that the member list is complete
282
+ const needUseCache = !!(
283
+ oldLocus.self?.isCreator &&
284
+ newLocus.participants?.length === 1 &&
285
+ newLocus.participants?.[0].isCreator &&
286
+ newLocus.participants?.[0].state === MEETING_STATE.STATES.JOINED &&
287
+ newLocus.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
288
+ newLocus.controls?.breakout?.groups?.length
289
+ );
290
+
291
+ const isReturnToMain =
292
+ oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&
293
+ newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;
294
+
295
+ status.isReturnToMain = needUseCache || isReturnToMain;
266
296
  status.isJoinToBreakout =
267
- oldControls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
268
- controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
297
+ oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
298
+ newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
269
299
 
270
300
  return status;
271
301
  };
@@ -1,4 +1,4 @@
1
- import {isEqual, assignWith, cloneDeep, isEmpty} from 'lodash';
1
+ import {isEqual, assignWith, cloneDeep, isEmpty, forEach} from 'lodash';
2
2
 
3
3
  import LoggerProxy from '../common/logs/logger-proxy';
4
4
  import EventsScope from '../common/events/events-scope';
@@ -17,7 +17,9 @@ import {
17
17
  MEETING_REMOVED_REASON,
18
18
  CALL_REMOVED_REASON,
19
19
  RECORDING_STATE,
20
+ BREAKOUTS,
20
21
  } from '../constants';
22
+
21
23
  import InfoUtils from './infoUtils';
22
24
  import FullState from './fullState';
23
25
  import SelfUtils from './selfUtils';
@@ -67,6 +69,7 @@ export default class LocusInfo extends EventsScope {
67
69
  services: any;
68
70
  resources: any;
69
71
  mainSessionLocusCache: any;
72
+ self: any;
70
73
  /**
71
74
  * Constructor
72
75
  * @param {function} updateMeeting callback to update the meeting object from an object
@@ -261,7 +264,7 @@ export default class LocusInfo extends EventsScope {
261
264
  this.updateMeetingInfo(locus.info);
262
265
  this.updateEmbeddedApps(locus.embeddedApps);
263
266
  // self and participants generate sipUrl for 1:1 meeting
264
- this.updateSelf(locus.self, locus.participants);
267
+ this.updateSelf(locus.self);
265
268
  this.updateHostInfo(locus.host);
266
269
  this.updateMediaShares(locus.mediaShares);
267
270
  this.updateServices(locus.links?.services);
@@ -419,6 +422,7 @@ export default class LocusInfo extends EventsScope {
419
422
  */
420
423
  onDeltaLocus(locus: any) {
421
424
  const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);
425
+ this.mergeParticipants(this.participants, locus.participants);
422
426
  this.updateLocusInfo(locus);
423
427
  this.updateParticipants(locus.participants, isReplaceMembers);
424
428
  this.isMeetingActive();
@@ -446,7 +450,7 @@ export default class LocusInfo extends EventsScope {
446
450
  this.updateMediaShares(locus.mediaShares);
447
451
  this.updateParticipantsUrl(locus.participantsUrl);
448
452
  this.updateReplace(locus.replace);
449
- this.updateSelf(locus.self, locus.participants);
453
+ this.updateSelf(locus.self);
450
454
  this.updateLocusUrl(locus.url);
451
455
  this.updateAclUrl(locus.aclUrl);
452
456
  this.updateBasequence(locus.baseSequence);
@@ -780,6 +784,23 @@ export default class LocusInfo extends EventsScope {
780
784
  isReplace,
781
785
  }
782
786
  );
787
+
788
+ if (participants && Array.isArray(participants) && participants.length > 0) {
789
+ for (const participant of participants) {
790
+ if (participant && participant?.reason === 'FAILURE') {
791
+ this.emitScoped(
792
+ {
793
+ file: 'locus-info',
794
+ function: 'updateParticipants',
795
+ },
796
+ LOCUSINFO.EVENTS.PARTICIPANT_REASON_CHANGED,
797
+ {
798
+ displayName: participant?.person?.primaryDisplayString,
799
+ }
800
+ );
801
+ }
802
+ }
803
+ }
783
804
  }
784
805
 
785
806
  /**
@@ -814,6 +835,8 @@ export default class LocusInfo extends EventsScope {
814
835
  hasMeetingFullChanged,
815
836
  hasPracticeSessionEnabledChanged,
816
837
  hasStageViewChanged,
838
+ hasAnnotationControlChanged,
839
+ hasRemoteDesktopControlChanged,
817
840
  },
818
841
  current,
819
842
  } = ControlsUtils.getControls(this.controls, controls);
@@ -1049,6 +1072,22 @@ export default class LocusInfo extends EventsScope {
1049
1072
  );
1050
1073
  }
1051
1074
 
1075
+ if (hasAnnotationControlChanged) {
1076
+ this.emitScoped(
1077
+ {file: 'locus-info', function: 'updateControls'},
1078
+ LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED,
1079
+ {state: current.annotationControl}
1080
+ );
1081
+ }
1082
+
1083
+ if (hasRemoteDesktopControlChanged) {
1084
+ this.emitScoped(
1085
+ {file: 'locus-info', function: 'updateControls'},
1086
+ LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED,
1087
+ {state: current.rdcControl}
1088
+ );
1089
+ }
1090
+
1052
1091
  this.controls = controls;
1053
1092
  }
1054
1093
  }
@@ -1336,17 +1375,20 @@ export default class LocusInfo extends EventsScope {
1336
1375
 
1337
1376
  /**
1338
1377
  * handles when the locus.self is updated
1339
- * @param {Object} self the locus.mediaShares property
1340
- * @param {Array} participants the locus.participants property
1378
+ * @param {Object} self the new locus.self
1341
1379
  * @returns {undefined}
1342
1380
  * @memberof LocusInfo
1343
1381
  * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self
1344
1382
  */
1345
- updateSelf(self: any, participants: Array<any>) {
1346
- // @ts-ignore - check where this.self come from
1347
- if (self && !isEqual(this.self, self)) {
1383
+ updateSelf(self: any) {
1384
+ if (self) {
1348
1385
  // @ts-ignore
1349
- const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);
1386
+ const parsedSelves = SelfUtils.getSelves(
1387
+ this.parsedLocus.self,
1388
+ self,
1389
+ this.webex.internal.device.url,
1390
+ this.participants // using this.participants instead of locus.participants here, because with delta DTOs locus.participants will only contain a small subset of participants
1391
+ );
1350
1392
 
1351
1393
  this.updateMeeting(parsedSelves.current);
1352
1394
  this.parsedLocus.self = parsedSelves.current;
@@ -1360,7 +1402,7 @@ export default class LocusInfo extends EventsScope {
1360
1402
  // TODO: check if we need to save the sipUri here as well
1361
1403
  // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));
1362
1404
  const result = SelfUtils.getSipUrl(
1363
- this.getLocusPartner(participants, self),
1405
+ this.getLocusPartner(this.participants, self),
1364
1406
  this.parsedLocus.fullState.type,
1365
1407
  this.parsedLocus.info.sipUri
1366
1408
  );
@@ -1506,7 +1548,7 @@ export default class LocusInfo extends EventsScope {
1506
1548
  {}
1507
1549
  );
1508
1550
  }
1509
- if (parsedSelves.updates.isUserUnadmitted) {
1551
+ if (parsedSelves.updates.hasUserEnteredLobby) {
1510
1552
  this.emitScoped(
1511
1553
  {
1512
1554
  file: 'locus-info',
@@ -1516,7 +1558,7 @@ export default class LocusInfo extends EventsScope {
1516
1558
  self
1517
1559
  );
1518
1560
  }
1519
- if (parsedSelves.updates.isUserAdmitted) {
1561
+ if (parsedSelves.updates.hasUserBeenAdmitted) {
1520
1562
  this.emitScoped(
1521
1563
  {
1522
1564
  file: 'locus-info',
@@ -1706,7 +1748,8 @@ export default class LocusInfo extends EventsScope {
1706
1748
  * @memberof LocusInfo
1707
1749
  */
1708
1750
  getTheLocusToUpdate(newLocus: any) {
1709
- const switchStatus = ControlsUtils.getSessionSwitchStatus(this.controls, newLocus?.controls);
1751
+ const switchStatus = ControlsUtils.getSessionSwitchStatus(this, newLocus);
1752
+
1710
1753
  if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {
1711
1754
  return cloneDeep(this.mainSessionLocusCache);
1712
1755
  }