@webex/plugin-meetings 3.10.0-next.6 → 3.10.0-wxc-disconnect.1

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 (65) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/common/errors/webex-errors.js +1 -21
  4. package/dist/common/errors/webex-errors.js.map +1 -1
  5. package/dist/constants.js +0 -7
  6. package/dist/constants.js.map +1 -1
  7. package/dist/controls-options-manager/index.js +5 -22
  8. package/dist/controls-options-manager/index.js.map +1 -1
  9. package/dist/index.js +0 -7
  10. package/dist/index.js.map +1 -1
  11. package/dist/interpretation/index.js +1 -1
  12. package/dist/interpretation/siLanguage.js +1 -1
  13. package/dist/locus-info/controlsUtils.js +2 -11
  14. package/dist/locus-info/controlsUtils.js.map +1 -1
  15. package/dist/locus-info/index.js +3 -17
  16. package/dist/locus-info/index.js.map +1 -1
  17. package/dist/media/index.js +0 -5
  18. package/dist/media/index.js.map +1 -1
  19. package/dist/meeting/in-meeting-actions.js +0 -6
  20. package/dist/meeting/in-meeting-actions.js.map +1 -1
  21. package/dist/meeting/index.js +33 -103
  22. package/dist/meeting/index.js.map +1 -1
  23. package/dist/meeting/request.js +14 -152
  24. package/dist/meeting/request.js.map +1 -1
  25. package/dist/meeting/util.js +0 -9
  26. package/dist/meeting/util.js.map +1 -1
  27. package/dist/member/index.js +0 -9
  28. package/dist/member/index.js.map +1 -1
  29. package/dist/member/util.js +0 -10
  30. package/dist/member/util.js.map +1 -1
  31. package/dist/types/common/errors/webex-errors.d.ts +0 -12
  32. package/dist/types/constants.d.ts +0 -5
  33. package/dist/types/controls-options-manager/index.d.ts +1 -9
  34. package/dist/types/index.d.ts +1 -2
  35. package/dist/types/locus-info/index.d.ts +1 -2
  36. package/dist/types/meeting/in-meeting-actions.d.ts +0 -6
  37. package/dist/types/meeting/index.d.ts +0 -30
  38. package/dist/types/meeting/request.d.ts +0 -33
  39. package/dist/types/meeting/util.d.ts +0 -3
  40. package/dist/types/member/index.d.ts +0 -1
  41. package/dist/types/member/util.d.ts +0 -5
  42. package/dist/webinar/index.js +1 -1
  43. package/package.json +22 -22
  44. package/src/common/errors/webex-errors.ts +0 -19
  45. package/src/constants.ts +1 -9
  46. package/src/controls-options-manager/index.ts +5 -26
  47. package/src/index.ts +0 -2
  48. package/src/locus-info/controlsUtils.ts +0 -18
  49. package/src/locus-info/index.ts +4 -14
  50. package/src/media/index.ts +0 -6
  51. package/src/meeting/in-meeting-actions.ts +0 -12
  52. package/src/meeting/index.ts +21 -99
  53. package/src/meeting/request.ts +0 -118
  54. package/src/meeting/util.ts +0 -9
  55. package/src/member/index.ts +0 -10
  56. package/src/member/util.ts +0 -14
  57. package/test/unit/spec/controls-options-manager/index.js +0 -47
  58. package/test/unit/spec/fixture/locus.js +0 -1
  59. package/test/unit/spec/locus-info/index.js +0 -39
  60. package/test/unit/spec/media/index.ts +9 -140
  61. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -6
  62. package/test/unit/spec/meeting/index.js +70 -171
  63. package/test/unit/spec/meeting/utils.js +0 -3
  64. package/test/unit/spec/meetings/index.js +2 -0
  65. package/test/unit/spec/member/util.js +0 -24
@@ -343,7 +343,7 @@ export default class LocusInfo extends EventsScope {
343
343
  // For 1:1 space meeting the conversation Url does not exist in locus.conversation
344
344
  this.updateConversationUrl(locus.conversationUrl, locus.info);
345
345
  this.updateControls(locus.controls, locus.self);
346
- this.updateLocusUrl(locus.url, ControlsUtils.isMainSessionDTO(locus));
346
+ this.updateLocusUrl(locus.url);
347
347
  this.updateFullState(locus.fullState);
348
348
  this.updateMeetingInfo(locus.info);
349
349
  this.updateEmbeddedApps(locus.embeddedApps);
@@ -549,7 +549,7 @@ export default class LocusInfo extends EventsScope {
549
549
  this.updateCreated(locus.created);
550
550
  this.updateFullState(locus.fullState);
551
551
  this.updateHostInfo(locus.host);
552
- this.updateLocusUrl(locus.url, ControlsUtils.isMainSessionDTO(locus));
552
+ this.updateLocusUrl(locus.url);
553
553
  this.updateMeetingInfo(locus.info, locus.self);
554
554
  this.updateMediaShares(locus.mediaShares);
555
555
  this.updateParticipantsUrl(locus.participantsUrl);
@@ -895,7 +895,6 @@ export default class LocusInfo extends EventsScope {
895
895
  hasAnnotationControlChanged,
896
896
  hasRemoteDesktopControlChanged,
897
897
  hasPollingQAControlChanged,
898
- hasAutoEndMeetingChanged,
899
898
  },
900
899
  current,
901
900
  } = ControlsUtils.getControls(this.controls, controls);
@@ -1170,14 +1169,6 @@ export default class LocusInfo extends EventsScope {
1170
1169
  );
1171
1170
  }
1172
1171
 
1173
- if (hasAutoEndMeetingChanged) {
1174
- this.emitScoped(
1175
- {file: 'locus-info', function: 'updateControls'},
1176
- LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED,
1177
- {state: current.autoEndMeetingWarning}
1178
- );
1179
- }
1180
-
1181
1172
  this.controls = controls;
1182
1173
  }
1183
1174
  }
@@ -1741,11 +1732,10 @@ export default class LocusInfo extends EventsScope {
1741
1732
  /**
1742
1733
  * handles when the locus.url is updated
1743
1734
  * @param {String} url
1744
- * @param {Boolean} isMainLocus
1745
1735
  * @returns {undefined}
1746
1736
  * emits internal event locus_info_update_url
1747
1737
  */
1748
- updateLocusUrl(url: string, isMainLocus = true) {
1738
+ updateLocusUrl(url: string) {
1749
1739
  if (url && this.url !== url) {
1750
1740
  this.url = url;
1751
1741
  this.updateMeeting({locusUrl: url});
@@ -1755,7 +1745,7 @@ export default class LocusInfo extends EventsScope {
1755
1745
  function: 'updateLocusUrl',
1756
1746
  },
1757
1747
  EVENTS.LOCUS_INFO_UPDATE_URL,
1758
- {url, isMainLocus}
1748
+ url
1759
1749
  );
1760
1750
  }
1761
1751
  }
@@ -194,12 +194,6 @@ Media.createMediaConnection = (
194
194
  config.stopIceGatheringAfterFirstRelayCandidate = stopIceGatheringAfterFirstRelayCandidate;
195
195
  }
196
196
 
197
- if (BrowserInfo.isEdge() || BrowserInfo.isChrome()) {
198
- // we need this for getting inbound audio metadata
199
- // but the audioLevel that we use is only available on Chromium based browsers
200
- config.enableInboundAudioLevelMonitoring = true;
201
- }
202
-
203
197
  return new MultistreamRoapMediaConnection(
204
198
  config,
205
199
  meetingId,
@@ -41,8 +41,6 @@ interface IInMeetingActions {
41
41
  isLocalRecordingStarted?: boolean;
42
42
  isLocalRecordingStopped?: boolean;
43
43
  isLocalRecordingPaused?: boolean;
44
- isLocalStreamingStarted?: boolean;
45
- isLocalStreamingStopped?: boolean;
46
44
 
47
45
  isManualCaptionActive?: boolean;
48
46
  isSaveTranscriptsEnabled?: boolean;
@@ -94,7 +92,6 @@ interface IInMeetingActions {
94
92
  canDoVideo?: boolean;
95
93
  canAnnotate?: boolean;
96
94
  canUseVoip?: boolean;
97
- showAutoEndMeetingWarning?: boolean;
98
95
  supportHQV?: boolean;
99
96
  supportHDV?: boolean;
100
97
  canShareWhiteBoard?: boolean;
@@ -189,10 +186,6 @@ export default class InMeetingActions implements IInMeetingActions {
189
186
 
190
187
  isManualCaptionActive = null;
191
188
 
192
- isLocalStreamingStarted = null;
193
-
194
- isLocalStreamingStopped = null;
195
-
196
189
  isSaveTranscriptsEnabled = null;
197
190
 
198
191
  isSpokenLanguageAutoDetectionEnabled = null;
@@ -291,8 +284,6 @@ export default class InMeetingActions implements IInMeetingActions {
291
284
 
292
285
  canUseVoip = null;
293
286
 
294
- showAutoEndMeetingWarning = null;
295
-
296
287
  supportHQV = null;
297
288
 
298
289
  enforceVirtualBackground = null;
@@ -372,8 +363,6 @@ export default class InMeetingActions implements IInMeetingActions {
372
363
  isLocalRecordingStarted: this.isLocalRecordingStarted,
373
364
  isLocalRecordingStopped: this.isLocalRecordingStopped,
374
365
  isLocalRecordingPaused: this.isLocalRecordingPaused,
375
- isLocalStreamingStarted: this.isLocalStreamingStarted,
376
- isLocalStreamingStopped: this.isLocalStreamingStopped,
377
366
  canStopManualCaption: this.canStopManualCaption,
378
367
  isManualCaptionActive: this.isManualCaptionActive,
379
368
  isSaveTranscriptsEnabled: this.isSaveTranscriptsEnabled,
@@ -416,7 +405,6 @@ export default class InMeetingActions implements IInMeetingActions {
416
405
  canShareFile: this.canShareFile,
417
406
  canShareApplication: this.canShareApplication,
418
407
  canShareCamera: this.canShareCamera,
419
- showAutoEndMeetingWarning: this.showAutoEndMeetingWarning,
420
408
  canShareDesktop: this.canShareDesktop,
421
409
  canShareContent: this.canShareContent,
422
410
  canTransferFile: this.canTransferFile,
@@ -30,7 +30,6 @@ import {
30
30
  NetworkQualityMonitor,
31
31
  StatsMonitor,
32
32
  StatsMonitorEventNames,
33
- InboundAudioIssueSubTypes,
34
33
  } from '@webex/internal-media-core';
35
34
 
36
35
  import {
@@ -58,7 +57,6 @@ import {
58
57
  NoMediaEstablishedYetError,
59
58
  UserNotJoinedError,
60
59
  AddMediaFailed,
61
- SdpResponseTimeoutError,
62
60
  } from '../common/errors/webex-errors';
63
61
 
64
62
  import LoggerProxy from '../common/logs/logger-proxy';
@@ -2978,18 +2976,6 @@ export default class Meeting extends StatelessWebexPlugin {
2978
2976
  );
2979
2977
  });
2980
2978
 
2981
- this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, ({state}) => {
2982
- Trigger.trigger(
2983
- this,
2984
- {
2985
- file: 'meeting/index',
2986
- function: 'setupLocusControlsListener',
2987
- },
2988
- EVENT_TRIGGERS.MEETING_CONTROLS_AUTO_END_MEETING_WARNING_UPDATED,
2989
- {state}
2990
- );
2991
- });
2992
-
2993
2979
  this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, ({state}) => {
2994
2980
  Trigger.trigger(
2995
2981
  this,
@@ -3370,31 +3356,27 @@ export default class Meeting extends StatelessWebexPlugin {
3370
3356
  * @memberof Meeting
3371
3357
  */
3372
3358
  private setUpLocusUrlListener() {
3373
- this.locusInfo.on(
3374
- EVENTS.LOCUS_INFO_UPDATE_URL,
3375
- (payload: {url: string; isMainLocus?: boolean}) => {
3376
- const {url, isMainLocus} = payload;
3377
- this.members.locusUrlUpdate(url);
3378
- this.breakouts.locusUrlUpdate(url);
3379
- this.simultaneousInterpretation.locusUrlUpdate(url);
3380
- this.annotation.locusUrlUpdate(url);
3381
- this.locusUrl = url;
3382
- this.locusId = this.locusUrl?.split('/').pop();
3383
- this.recordingController.setLocusUrl(this.locusUrl);
3384
- this.controlsOptionsManager.setLocusUrl(this.locusUrl, !!isMainLocus);
3385
- this.webinar.locusUrlUpdate(url);
3359
+ this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_URL, (payload) => {
3360
+ this.members.locusUrlUpdate(payload);
3361
+ this.breakouts.locusUrlUpdate(payload);
3362
+ this.simultaneousInterpretation.locusUrlUpdate(payload);
3363
+ this.annotation.locusUrlUpdate(payload);
3364
+ this.locusUrl = payload;
3365
+ this.locusId = this.locusUrl?.split('/').pop();
3366
+ this.recordingController.setLocusUrl(this.locusUrl);
3367
+ this.controlsOptionsManager.setLocusUrl(this.locusUrl);
3368
+ this.webinar.locusUrlUpdate(payload);
3386
3369
 
3387
- Trigger.trigger(
3388
- this,
3389
- {
3390
- file: 'meeting/index',
3391
- function: 'setUpLocusSelfListener',
3392
- },
3393
- EVENT_TRIGGERS.MEETING_LOCUS_URL_UPDATE,
3394
- {locusUrl: url}
3395
- );
3396
- }
3397
- );
3370
+ Trigger.trigger(
3371
+ this,
3372
+ {
3373
+ file: 'meeting/index',
3374
+ function: 'setUpLocusSelfListener',
3375
+ },
3376
+ EVENT_TRIGGERS.MEETING_LOCUS_URL_UPDATE,
3377
+ {locusUrl: payload}
3378
+ );
3379
+ });
3398
3380
  }
3399
3381
 
3400
3382
  /**
@@ -4237,7 +4219,6 @@ export default class Meeting extends StatelessWebexPlugin {
4237
4219
  this.userDisplayHints,
4238
4220
  this.selfUserPolicies
4239
4221
  ),
4240
- showAutoEndMeetingWarning: MeetingUtil.showAutoEndMeetingWarning(this.userDisplayHints),
4241
4222
  canRaiseHand: MeetingUtil.canUserRaiseHand(this.userDisplayHints),
4242
4223
  canLowerAllHands: MeetingUtil.canUserLowerAllHands(this.userDisplayHints),
4243
4224
  canLowerSomeoneElsesHand: MeetingUtil.canUserLowerSomeoneElsesHand(this.userDisplayHints),
@@ -4253,8 +4234,6 @@ export default class Meeting extends StatelessWebexPlugin {
4253
4234
  isLocalRecordingStarted: MeetingUtil.isLocalRecordingStarted(this.userDisplayHints),
4254
4235
  isLocalRecordingStopped: MeetingUtil.isLocalRecordingStopped(this.userDisplayHints),
4255
4236
  isLocalRecordingPaused: MeetingUtil.isLocalRecordingPaused(this.userDisplayHints),
4256
- isLocalStreamingStarted: MeetingUtil.isLocalStreamingStarted(this.userDisplayHints),
4257
- isLocalStreamingStopped: MeetingUtil.isLocalStreamingStopped(this.userDisplayHints),
4258
4237
  isManualCaptionActive: MeetingUtil.isManualCaptionActive(this.userDisplayHints),
4259
4238
  isSaveTranscriptsEnabled: MeetingUtil.isSaveTranscriptsEnabled(this.userDisplayHints),
4260
4239
  isSpokenLanguageAutoDetectionEnabled: MeetingUtil.isSpokenLanguageAutoDetectionEnabled(
@@ -7453,7 +7432,7 @@ export default class Meeting extends StatelessWebexPlugin {
7453
7432
  } seconds`
7454
7433
  );
7455
7434
 
7456
- const error = new SdpResponseTimeoutError();
7435
+ const error = new Error('Timed out waiting for REMOTE SDP ANSWER');
7457
7436
 
7458
7437
  // @ts-ignore
7459
7438
  this.webex.internal.newMetrics.submitClientEvent({
@@ -9470,36 +9449,6 @@ export default class Meeting extends StatelessWebexPlugin {
9470
9449
  return Promise.reject(new Error('Error sending reaction, service url not found.'));
9471
9450
  }
9472
9451
 
9473
- /**
9474
- * Extend the current meeting duration.
9475
- *
9476
- * @param {number} extensionMinutes - how many minutes to extend
9477
- * @returns {Promise}
9478
- * @public
9479
- * @memberof Meeting
9480
- */
9481
- public extendMeeting({
9482
- meetingPolicyUrl,
9483
- meetingInstanceId,
9484
- participantId,
9485
- extensionMinutes = 30,
9486
- }) {
9487
- if (!meetingInstanceId || !participantId) {
9488
- return Promise.reject(new Error('Missing meetingInstanceId or participantId'));
9489
- }
9490
-
9491
- if (!meetingPolicyUrl) {
9492
- return Promise.reject(new Error('Missing meetingPolicyUrl'));
9493
- }
9494
-
9495
- return this.meetingRequest.extendMeeting({
9496
- meetingInstanceId,
9497
- participantId,
9498
- extensionMinutes,
9499
- meetingPolicyUrl,
9500
- });
9501
- }
9502
-
9503
9452
  /**
9504
9453
  * Method to enable or disable reactions inside the meeting.
9505
9454
  *
@@ -10045,31 +9994,4 @@ export default class Meeting extends StatelessWebexPlugin {
10045
9994
  displayName
10046
9995
  );
10047
9996
  }
10048
-
10049
- /**
10050
- * Call out a SIP participant to a meeting
10051
- * @param {string} address - The SIP address or phone number
10052
- * @param {string} displayName - The display name for the participant
10053
- * @param {string} [correlationId] - Optional correlation ID
10054
- * @returns {Promise} Promise that resolves when the call-out is initiated
10055
- */
10056
- sipCallOut(address: string, displayName: string) {
10057
- return this.meetingRequest.sipCallOut(
10058
- this.meetingInfo.meetingId,
10059
- this.meetingInfo.meetingId,
10060
- address,
10061
- displayName
10062
- );
10063
- }
10064
-
10065
- /**
10066
- * Cancel an ongoing SIP call-out
10067
- * @param {string} participantId - The participant ID to cancel
10068
- * @returns {Promise} Promise that resolves when the call-out is cancelled
10069
- * @public
10070
- * @memberof Meetings
10071
- */
10072
- cancelSipCallOut(participantId: string) {
10073
- return this.meetingRequest.cancelSipCallOut(participantId);
10074
- }
10075
9997
  }
@@ -886,44 +886,6 @@ export default class MeetingRequest extends StatelessWebexPlugin {
886
886
  });
887
887
  }
888
888
 
889
- /**
890
- * Extend the current meeting duration.
891
- *
892
- * @param {Object} params - Parameters for extending the meeting.
893
- * @param {string} params.meetingInstanceId - The unique ID of the meeting instance.
894
- * @param {string} params.participantId - The ID of the participant requesting the extension.
895
- * @param {number} params.extensionMinutes - The number of minutes to extend the meeting by.
896
- * @param {string} params.meetingPolicyUrl - The base URL for meeting policy service (dynamic, from locus links)
897
- * @returns {Promise<any>} A promise that resolves with the server response.
898
- */
899
- extendMeeting({
900
- meetingInstanceId,
901
- participantId,
902
- extensionMinutes,
903
- meetingPolicyUrl,
904
- }: {
905
- meetingInstanceId: string;
906
- participantId: string;
907
- extensionMinutes: number;
908
- meetingPolicyUrl: string;
909
- }) {
910
- if (!meetingPolicyUrl) {
911
- return Promise.reject(new Error('meetingPolicyUrl is required'));
912
- }
913
- const uri = `${meetingPolicyUrl}/continueMeeting`;
914
-
915
- // @ts-ignore
916
- return this.request({
917
- method: HTTP_VERBS.POST,
918
- uri,
919
- body: {
920
- meetingInstanceId,
921
- requestParticipantId: participantId,
922
- extensionMinutes,
923
- },
924
- });
925
- }
926
-
927
889
  /**
928
890
  * Make a network request to enable or disable reactions.
929
891
  * @param {boolean} options.enable - determines if we need to enable or disable.
@@ -1046,84 +1008,4 @@ export default class MeetingRequest extends StatelessWebexPlugin {
1046
1008
  },
1047
1009
  });
1048
1010
  }
1049
-
1050
- /**
1051
- * Call out to a SIP participant
1052
- *
1053
- * @param {any} meetingId - The meeting ID.
1054
- * @param {any} meetingNumber - The meeting number.
1055
- * @param {string} address - The SIP address to call out.
1056
- * @param {string} displayName - The display name for the participant.
1057
- * @returns {Promise} The API response
1058
- */
1059
- public async sipCallOut(meetingId, meetingNumber, address, displayName) {
1060
- const body: any = {
1061
- meetingId,
1062
- meetingNumber,
1063
- address,
1064
- displayName,
1065
- };
1066
- try {
1067
- // @ts-ignore
1068
- const response = await this.request({
1069
- method: HTTP_VERBS.POST,
1070
- service: 'hydra',
1071
- resource: 'meetingParticipants/callout',
1072
- body,
1073
- headers: {
1074
- Accept: 'application/json',
1075
- },
1076
- });
1077
-
1078
- LoggerProxy.logger.info('Meetings:request#sipCallOut --> SIP call-out successful', response);
1079
-
1080
- return response.body;
1081
- } catch (err) {
1082
- LoggerProxy.logger.error(
1083
- `Meetings:request#sipCallOut --> Error calling out SIP participant, error ${JSON.stringify(
1084
- err
1085
- )}`
1086
- );
1087
- throw err;
1088
- }
1089
- }
1090
-
1091
- /**
1092
- * Cancel an ongoing SIP call-out
1093
- *
1094
- * @param {string} participantId - The ID of the participant whose SIP call-out should be cancelled.
1095
- * @returns {Promise} The API response
1096
- */
1097
- public async cancelSipCallOut(participantId) {
1098
- const body = {
1099
- participantId,
1100
- };
1101
-
1102
- try {
1103
- // @ts-ignore
1104
- const response = await this.request({
1105
- method: HTTP_VERBS.POST,
1106
- service: 'hydra',
1107
- resource: 'meetingParticipants/cancelCallout',
1108
- body,
1109
- headers: {
1110
- Accept: 'application/json',
1111
- },
1112
- });
1113
-
1114
- LoggerProxy.logger.info(
1115
- 'Meetings:request#cancelSipCallOut --> SIP call-out cancelled successfully',
1116
- response
1117
- );
1118
-
1119
- return response.body;
1120
- } catch (err) {
1121
- LoggerProxy.logger.error(
1122
- `Meetings:request#cancelSipCallOut --> Error cancelling SIP participant call-out, error ${JSON.stringify(
1123
- err
1124
- )}`
1125
- );
1126
- throw err;
1127
- }
1128
- }
1129
1011
  }
@@ -633,12 +633,6 @@ const MeetingUtil = {
633
633
  isLocalRecordingPaused: (displayHints) =>
634
634
  displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_PAUSED),
635
635
 
636
- isLocalStreamingStarted: (displayHints) =>
637
- displayHints.includes(DISPLAY_HINTS.STREAMING_STATUS_STARTED),
638
-
639
- isLocalStreamingStopped: (displayHints) =>
640
- displayHints.includes(DISPLAY_HINTS.STREAMING_STATUS_STOPPED),
641
-
642
636
  canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),
643
637
 
644
638
  isManualCaptionActive: (displayHints) =>
@@ -660,9 +654,6 @@ const MeetingUtil = {
660
654
 
661
655
  waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),
662
656
 
663
- showAutoEndMeetingWarning: (displayHints) =>
664
- displayHints.includes(DISPLAY_HINTS.SHOW_AUTO_END_MEETING_WARNING),
665
-
666
657
  canSendReactions: (originalValue, displayHints) => {
667
658
  if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {
668
659
  return true;
@@ -42,7 +42,6 @@ export default class Member {
42
42
  status: any;
43
43
  supportsBreakouts: boolean;
44
44
  supportsInterpretation: boolean;
45
- supportsSingleUserAutoEndMeeting: boolean;
46
45
  supportLiveAnnotation: boolean;
47
46
  type: any;
48
47
  namespace = MEETINGS;
@@ -131,13 +130,6 @@ export default class Member {
131
130
  * @memberof Member
132
131
  */
133
132
  this.supportsBreakouts = null;
134
- /**
135
- * @instance
136
- * @type {Boolean}
137
- * @public
138
- * @memberof Member
139
- */
140
- this.supportsSingleUserAutoEndMeeting = null;
141
133
  /**
142
134
  * @instance
143
135
  * @type {Boolean}
@@ -347,8 +339,6 @@ export default class Member {
347
339
  this.isVideoMuted = MemberUtil.isVideoMuted(participant);
348
340
  this.isHandRaised = MemberUtil.isHandRaised(participant);
349
341
  this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);
350
- this.supportsSingleUserAutoEndMeeting =
351
- MemberUtil.isSupportsSingleUserAutoEndMeeting(participant);
352
342
  this.supportsInterpretation = MemberUtil.isInterpretationSupported(participant);
353
343
  this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);
354
344
  this.isGuest = MemberUtil.isGuest(participant);
@@ -207,20 +207,6 @@ const MemberUtil = {
207
207
  return !participant.doesNotSupportBreakouts;
208
208
  },
209
209
 
210
- /**
211
- * @param {Object} participant - The locus participant object.
212
- * @returns {Boolean}
213
- */
214
- isSupportsSingleUserAutoEndMeeting: (participant) => {
215
- if (!participant) {
216
- throw new ParameterError(
217
- 'Single user auto end meeting support could not be processed, participant is undefined.'
218
- );
219
- }
220
-
221
- return !participant.doesNotSupportSingleUserAutoEndMeeting;
222
- },
223
-
224
210
  /**
225
211
  * @param {Object} participant - The locus participant object.
226
212
  * @returns {Boolean}
@@ -133,7 +133,6 @@ describe('plugin-meetings', () => {
133
133
 
134
134
  manager.set({
135
135
  locusUrl: 'test/id',
136
- mainLocusUrl: '',
137
136
  displayHints: [],
138
137
  });
139
138
  });
@@ -202,38 +201,6 @@ describe('plugin-meetings', () => {
202
201
  Util.canUpdate = restorable;
203
202
  });
204
203
  });
205
-
206
- it('should call request with mainLocusUrl and locusUrl as authorizingLocusUrl if mainLocusUrl is exist and not same with locusUrl', () => {
207
- const restorable = Util.canUpdate;
208
- Util.canUpdate = sinon.stub().returns(true);
209
- manager.mainLocusUrl = 'test/main';
210
-
211
- const audio = {scope: 'audio', properties: {a: 1, b: 2}};
212
- const reactions = {scope: 'reactions', properties: {c: 3, d: 4}};
213
-
214
- return manager.update(audio, reactions)
215
- .then(() => {
216
- assert.calledWith(request.request, {
217
- uri: 'test/main/controls',
218
- body: {
219
- audio: audio.properties,
220
- authorizingLocusUrl: 'test/id'
221
- },
222
- method: HTTP_VERBS.PATCH,
223
- });
224
-
225
- assert.calledWith(request.request, {
226
- uri: 'test/main/controls',
227
- body: {
228
- reactions: reactions.properties,
229
- authorizingLocusUrl: 'test/id'
230
- },
231
- method: HTTP_VERBS.PATCH,
232
- });
233
-
234
- Util.canUpdate = restorable;
235
- });
236
- });
237
204
  });
238
205
 
239
206
  describe('Mute/Unmute All', () => {
@@ -247,7 +214,6 @@ describe('plugin-meetings', () => {
247
214
 
248
215
  manager.set({
249
216
  locusUrl: 'test/id',
250
- mainLocusUrl: '',
251
217
  displayHints: [],
252
218
  })
253
219
  });
@@ -339,19 +305,6 @@ describe('plugin-meetings', () => {
339
305
 
340
306
  assert.deepEqual(result, request.request.firstCall.returnValue);
341
307
  });
342
-
343
- it('request with mainLocusUrl and make locusUrl as authorizingLocusUrl if mainLocusUrl is exist and not same with locusUrl', () => {
344
- manager.setDisplayHints(['MUTE_ALL', 'DISABLE_HARD_MUTE', 'DISABLE_MUTE_ON_ENTRY']);
345
- manager.mainLocusUrl = `test/main`;
346
-
347
- const result = manager.setMuteAll(true, true, true, ['attendee']);
348
-
349
- assert.calledWith(request.request, { uri: 'test/main/controls',
350
- body: { audio: { muted: true, disallowUnmute: true, muteOnEntry: true, roles: ['attendee'] }, authorizingLocusUrl: 'test/id' },
351
- method: HTTP_VERBS.PATCH});
352
-
353
- assert.deepEqual(result, request.request.firstCall.returnValue);
354
- });
355
308
  });
356
309
  });
357
310
  });
@@ -36,7 +36,6 @@ export default {
36
36
  'LOCK_STATUS_UNLOCKED',
37
37
  'ROSTER_IN_MEETING',
38
38
  'SHARE_WHITEBOARD',
39
- 'SHOW_AUTO_END_MEETING_WARNING',
40
39
  'SHARE_WHITEBOARD_POLICY',
41
40
  'WEBEX_ASSISTANT_STATUS_INACTIVE',
42
41
  'CAPTION_START',
@@ -3020,45 +3020,6 @@ describe('plugin-meetings', () => {
3020
3020
  });
3021
3021
  });
3022
3022
 
3023
- describe('#updateLocusUrl', () => {
3024
- it('trigger LOCUS_INFO_UPDATE_URL event with isMainLocus is true as default', () => {
3025
- const fakeUrl = "https://fake.com/locus";
3026
- locusInfo.emitScoped = sinon.stub();
3027
- locusInfo.updateLocusUrl(fakeUrl);
3028
-
3029
- assert.calledWith(
3030
- locusInfo.emitScoped,
3031
- {
3032
- file: 'locus-info',
3033
- function: 'updateLocusUrl',
3034
- },
3035
- EVENTS.LOCUS_INFO_UPDATE_URL,
3036
- {
3037
- url: fakeUrl,
3038
- isMainLocus: true
3039
- },
3040
- );
3041
- });
3042
- it('trigger LOCUS_INFO_UPDATE_URL event with isMainLocus is false', () => {
3043
- const fakeUrl = "https://fake.com/locus";
3044
- locusInfo.emitScoped = sinon.stub();
3045
- locusInfo.updateLocusUrl(fakeUrl, false);
3046
-
3047
- assert.calledWith(
3048
- locusInfo.emitScoped,
3049
- {
3050
- file: 'locus-info',
3051
- function: 'updateLocusUrl',
3052
- },
3053
- EVENTS.LOCUS_INFO_UPDATE_URL,
3054
- {
3055
- url: fakeUrl,
3056
- isMainLocus: false
3057
- },
3058
- );
3059
- });
3060
- });
3061
-
3062
3023
  // semi-integration tests that use real LocusInfo with real Parser
3063
3024
  // and test various scenarios related to handling out-of-order Locus delta events
3064
3025
  describe('handling of out-of-order Locus delta events', () => {