@webex/plugin-meetings 3.10.0-next.2 → 3.10.0-next.4

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.
@@ -97,3 +97,15 @@ declare class AddMediaFailed extends WebexMeetingsError {
97
97
  constructor(cause?: Error);
98
98
  }
99
99
  export { AddMediaFailed };
100
+ /**
101
+ * @class SdpResponseTimeoutError
102
+ * @classdesc Raised whenever we timeout waiting for remote SDP answer
103
+ * @extends WebexMeetingsError
104
+ * @property {number} code - 30204
105
+ * @property {string} message - 'Timed out waiting for REMOTE SDP ANSWER'
106
+ */
107
+ declare class SdpResponseTimeoutError extends WebexMeetingsError {
108
+ static CODE: number;
109
+ constructor();
110
+ }
111
+ export { SdpResponseTimeoutError };
@@ -8,6 +8,7 @@ import { ReclaimHostEmptyWrongKeyError, ReclaimHostIsHostAlreadyError, ReclaimHo
8
8
  import Meeting from './meeting';
9
9
  import MeetingInfoUtil from './meeting-info/utilv2';
10
10
  import JoinMeetingError from './common/errors/join-meeting';
11
+ import { SdpResponseTimeoutError } from './common/errors/webex-errors';
11
12
  export { LocalStream, LocalDisplayStream, LocalSystemAudioStream, LocalStreamEventNames, StreamEventNames, RemoteStreamEventNames, type ServerMuteReason, LocalMicrophoneStreamEventNames, LocalCameraStreamEventNames, LocalMicrophoneStream, LocalCameraStream, createMicrophoneStream, createCameraStream, createCameraAndMicrophoneStreams, createDisplayStream, createDisplayStreamWithAudio, createDisplayMedia, FacingMode, DisplaySurface, PresetCameraConstraints, type VideoContentHint, type StreamState, } from '@webex/media-helpers';
12
13
  export default Meetings;
13
14
  export * as CONSTANTS from './constants';
@@ -15,6 +16,6 @@ export * as REACTIONS from './reactions/reactions';
15
16
  export * as sdkAnnotationTypes from './annotation/annotation.types';
16
17
  export * as MeetingInfoV2 from './meeting-info/meeting-info-v2';
17
18
  export { type Reaction } from './reactions/reactions.type';
18
- export { CaptchaError, IntentToJoinError, JoinMeetingError, PasswordError, PermissionError, ReclaimHostIsHostAlreadyError, ReclaimHostNotAllowedError, ReclaimHostNotSupportedError, ReclaimHostEmptyWrongKeyError, Meeting, MeetingInfoUtil, JoinWebinarError, };
19
+ export { CaptchaError, IntentToJoinError, JoinMeetingError, PasswordError, PermissionError, ReclaimHostIsHostAlreadyError, ReclaimHostNotAllowedError, ReclaimHostNotSupportedError, ReclaimHostEmptyWrongKeyError, Meeting, MeetingInfoUtil, JoinWebinarError, SdpResponseTimeoutError, };
19
20
  export { RemoteMedia } from './multistream/remoteMedia';
20
21
  export { default as TriggerProxy } from './common/events/trigger-proxy';
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.10.0-next.2"
461
+ version: "3.10.0-next.4"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -43,7 +43,7 @@
43
43
  "@webex/eslint-config-legacy": "0.0.0",
44
44
  "@webex/jest-config-legacy": "0.0.0",
45
45
  "@webex/legacy-tools": "0.0.0",
46
- "@webex/plugin-rooms": "3.9.0-next.8",
46
+ "@webex/plugin-rooms": "3.10.0-next.1",
47
47
  "@webex/test-helper-chai": "3.8.1-next.11",
48
48
  "@webex/test-helper-mocha": "3.8.1-next.11",
49
49
  "@webex/test-helper-mock-webex": "3.8.1-next.11",
@@ -63,20 +63,20 @@
63
63
  "@webex/common": "3.8.1-next.11",
64
64
  "@webex/event-dictionary-ts": "^1.0.1930",
65
65
  "@webex/internal-media-core": "2.20.1",
66
- "@webex/internal-plugin-conversation": "3.9.0-next.8",
67
- "@webex/internal-plugin-device": "3.9.0-next.6",
68
- "@webex/internal-plugin-llm": "3.9.0-next.7",
69
- "@webex/internal-plugin-mercury": "3.9.0-next.7",
70
- "@webex/internal-plugin-metrics": "3.9.0-next.6",
71
- "@webex/internal-plugin-support": "3.9.0-next.9",
72
- "@webex/internal-plugin-user": "3.9.0-next.6",
73
- "@webex/internal-plugin-voicea": "3.9.0-next.8",
66
+ "@webex/internal-plugin-conversation": "3.10.0-next.1",
67
+ "@webex/internal-plugin-device": "3.10.0-next.1",
68
+ "@webex/internal-plugin-llm": "3.10.0-next.1",
69
+ "@webex/internal-plugin-mercury": "3.10.0-next.1",
70
+ "@webex/internal-plugin-metrics": "3.10.0-next.1",
71
+ "@webex/internal-plugin-support": "3.10.0-next.1",
72
+ "@webex/internal-plugin-user": "3.10.0-next.1",
73
+ "@webex/internal-plugin-voicea": "3.10.0-next.1",
74
74
  "@webex/media-helpers": "3.10.0-next.1",
75
- "@webex/plugin-people": "3.9.0-next.7",
76
- "@webex/plugin-rooms": "3.9.0-next.8",
75
+ "@webex/plugin-people": "3.10.0-next.1",
76
+ "@webex/plugin-rooms": "3.10.0-next.1",
77
77
  "@webex/ts-sdp": "^1.8.1",
78
78
  "@webex/web-capabilities": "^1.7.1",
79
- "@webex/webex-core": "3.9.0-next.6",
79
+ "@webex/webex-core": "3.10.0-next.1",
80
80
  "ampersand-collection": "^2.0.2",
81
81
  "bowser": "^2.11.0",
82
82
  "btoa": "^1.2.1",
@@ -92,5 +92,5 @@
92
92
  "//": [
93
93
  "TODO: upgrade jwt-decode when moving to node 18"
94
94
  ],
95
- "version": "3.10.0-next.2"
95
+ "version": "3.10.0-next.4"
96
96
  }
@@ -169,3 +169,22 @@ class AddMediaFailed extends WebexMeetingsError {
169
169
  }
170
170
  export {AddMediaFailed};
171
171
  WebExMeetingsErrors[AddMediaFailed.CODE] = AddMediaFailed;
172
+
173
+ /**
174
+ * @class SdpResponseTimeoutError
175
+ * @classdesc Raised whenever we timeout waiting for remote SDP answer
176
+ * @extends WebexMeetingsError
177
+ * @property {number} code - 30204
178
+ * @property {string} message - 'Timed out waiting for REMOTE SDP ANSWER'
179
+ */
180
+ class SdpResponseTimeoutError extends WebexMeetingsError {
181
+ static CODE = 30204;
182
+
183
+ // eslint-disable-next-line require-jsdoc
184
+ constructor() {
185
+ super(SdpResponseTimeoutError.CODE, 'Timed out waiting for REMOTE SDP ANSWER');
186
+ }
187
+ }
188
+
189
+ export {SdpResponseTimeoutError};
190
+ WebExMeetingsErrors[SdpResponseTimeoutError.CODE] = SdpResponseTimeoutError;
package/src/index.ts CHANGED
@@ -18,6 +18,7 @@ import {
18
18
  import Meeting from './meeting';
19
19
  import MeetingInfoUtil from './meeting-info/utilv2';
20
20
  import JoinMeetingError from './common/errors/join-meeting';
21
+ import {SdpResponseTimeoutError} from './common/errors/webex-errors';
21
22
 
22
23
  registerPlugin('meetings', Meetings, {
23
24
  config,
@@ -73,6 +74,7 @@ export {
73
74
  Meeting,
74
75
  MeetingInfoUtil,
75
76
  JoinWebinarError,
77
+ SdpResponseTimeoutError,
76
78
  };
77
79
 
78
80
  export {RemoteMedia} from './multistream/remoteMedia';
@@ -58,6 +58,7 @@ import {
58
58
  NoMediaEstablishedYetError,
59
59
  UserNotJoinedError,
60
60
  AddMediaFailed,
61
+ SdpResponseTimeoutError,
61
62
  } from '../common/errors/webex-errors';
62
63
 
63
64
  import LoggerProxy from '../common/logs/logger-proxy';
@@ -7452,7 +7453,7 @@ export default class Meeting extends StatelessWebexPlugin {
7452
7453
  } seconds`
7453
7454
  );
7454
7455
 
7455
- const error = new Error('Timed out waiting for REMOTE SDP ANSWER');
7456
+ const error = new SdpResponseTimeoutError();
7456
7457
 
7457
7458
  // @ts-ignore
7458
7459
  this.webex.internal.newMetrics.submitClientEvent({
@@ -97,6 +97,7 @@ import PermissionError from '../../../../src/common/errors/permission';
97
97
  import JoinWebinarError from '../../../../src/common/errors/join-webinar-error';
98
98
  import IntentToJoinError from '../../../../src/common/errors/intent-to-join';
99
99
  import MultistreamNotSupportedError from '../../../../src/common/errors/multistream-not-supported-error';
100
+ import {SdpResponseTimeoutError} from '@webex/plugin-meetings/src/common/errors/webex-errors';
100
101
  import testUtils from '../../../utils/testUtils';
101
102
  import {
102
103
  MeetingInfoV2CaptchaError,
@@ -1999,18 +2000,15 @@ describe('plugin-meetings', () => {
1999
2000
 
2000
2001
  // Assert that client.locus.join.response error event is not sent from this function, it is now emitted from MeetingUtil.joinMeeting
2001
2002
  assert.calledOnce(webex.internal.newMetrics.submitClientEvent);
2002
- assert.calledWithMatch(
2003
- webex.internal.newMetrics.submitClientEvent,
2004
- {
2005
- name: 'client.call.initiated',
2006
- payload: {
2007
- trigger: 'user-interaction',
2008
- isRoapCallEnabled: true,
2009
- pstnAudioType: undefined
2010
- },
2011
- options: {meetingId: meeting.id},
2012
- }
2013
- );
2003
+ assert.calledWithMatch(webex.internal.newMetrics.submitClientEvent, {
2004
+ name: 'client.call.initiated',
2005
+ payload: {
2006
+ trigger: 'user-interaction',
2007
+ isRoapCallEnabled: true,
2008
+ pstnAudioType: undefined,
2009
+ },
2010
+ options: {meetingId: meeting.id},
2011
+ });
2014
2012
  });
2015
2013
  });
2016
2014
  it('should fail if password is required', async () => {
@@ -2679,7 +2677,11 @@ describe('plugin-meetings', () => {
2679
2677
  // simulate timeout waiting for the SDP answer that never comes
2680
2678
  await clock.tickAsync(ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
2681
2679
 
2682
- await assert.isRejected(result);
2680
+ await assert.isRejected(
2681
+ result,
2682
+ SdpResponseTimeoutError,
2683
+ 'Timed out waiting for REMOTE SDP ANSWER'
2684
+ );
2683
2685
 
2684
2686
  assert.calledOnceWithExactly(getErrorPayloadForClientErrorCodeStub, {
2685
2687
  clientErrorCode: 2007,
@@ -4087,7 +4089,7 @@ describe('plugin-meetings', () => {
4087
4089
  member2: {isInMeeting: false, isInLobby: true},
4088
4090
  member3: {isInMeeting: false, isInLobby: false},
4089
4091
  member4: {isInMeeting: true, isInLobby: false},
4090
- }
4092
+ },
4091
4093
  };
4092
4094
  sinon.stub(meeting, 'getMembers').returns({membersCollection: fakeMembersCollection});
4093
4095
  const fakeData = {intervalMetadata: {}};
@@ -6739,7 +6741,7 @@ describe('plugin-meetings', () => {
6739
6741
  // Verify pstnCorrelationId was set
6740
6742
  assert.exists(meeting.pstnCorrelationId);
6741
6743
  assert.notEqual(meeting.pstnCorrelationId, meeting.correlationId);
6742
- const firstPstnCorrelationId = meeting.pstnCorrelationId
6744
+ const firstPstnCorrelationId = meeting.pstnCorrelationId;
6743
6745
 
6744
6746
  meeting.meetingRequest.dialIn.resetHistory();
6745
6747
 
@@ -6814,15 +6816,19 @@ describe('plugin-meetings', () => {
6814
6816
  assert.equal(e, error);
6815
6817
 
6816
6818
  // Verify behavioral metric was sent with dial_in_correlation_id
6817
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ADD_DIAL_IN_FAILURE, {
6818
- correlation_id: meeting.correlationId,
6819
- dial_in_url: meeting.dialInUrl,
6820
- dial_in_correlation_id: sinon.match.string,
6821
- locus_id: meeting.locusUrl.split('/').pop(),
6822
- client_url: meeting.deviceUrl,
6823
- reason: error.error.message,
6824
- stack: error.stack,
6825
- });
6819
+ assert.calledWith(
6820
+ Metrics.sendBehavioralMetric,
6821
+ BEHAVIORAL_METRICS.ADD_DIAL_IN_FAILURE,
6822
+ {
6823
+ correlation_id: meeting.correlationId,
6824
+ dial_in_url: meeting.dialInUrl,
6825
+ dial_in_correlation_id: sinon.match.string,
6826
+ locus_id: meeting.locusUrl.split('/').pop(),
6827
+ client_url: meeting.deviceUrl,
6828
+ reason: error.error.message,
6829
+ stack: error.stack,
6830
+ }
6831
+ );
6826
6832
 
6827
6833
  // Verify pstnCorrelationId was cleared after error
6828
6834
  assert.equal(meeting.pstnCorrelationId, undefined);
@@ -6841,15 +6847,19 @@ describe('plugin-meetings', () => {
6841
6847
  assert.equal(e, error);
6842
6848
 
6843
6849
  // Verify behavioral metric was sent with dial_out_correlation_id
6844
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ADD_DIAL_OUT_FAILURE, {
6845
- correlation_id: meeting.correlationId,
6846
- dial_out_url: meeting.dialOutUrl,
6847
- dial_out_correlation_id: sinon.match.string,
6848
- locus_id: meeting.locusUrl.split('/').pop(),
6849
- client_url: meeting.deviceUrl,
6850
- reason: error.error.message,
6851
- stack: error.stack,
6852
- });
6850
+ assert.calledWith(
6851
+ Metrics.sendBehavioralMetric,
6852
+ BEHAVIORAL_METRICS.ADD_DIAL_OUT_FAILURE,
6853
+ {
6854
+ correlation_id: meeting.correlationId,
6855
+ dial_out_url: meeting.dialOutUrl,
6856
+ dial_out_correlation_id: sinon.match.string,
6857
+ locus_id: meeting.locusUrl.split('/').pop(),
6858
+ client_url: meeting.deviceUrl,
6859
+ reason: error.error.message,
6860
+ stack: error.stack,
6861
+ }
6862
+ );
6853
6863
 
6854
6864
  // Verify pstnCorrelationId was cleared after error
6855
6865
  assert.equal(meeting.pstnCorrelationId, undefined);
@@ -6894,7 +6904,7 @@ describe('plugin-meetings', () => {
6894
6904
 
6895
6905
  // Verify that pstnCorrelationId is still cleared even when no phone connection is active
6896
6906
  assert.equal(meeting.pstnCorrelationId, undefined);
6897
- // And verify no disconnect was attempted
6907
+ // And verify no disconnect was attempted
6898
6908
  assert.notCalled(MeetingUtil.disconnectPhoneAudio);
6899
6909
  });
6900
6910
  });
@@ -10568,7 +10578,7 @@ describe('plugin-meetings', () => {
10568
10578
  describe('#setUpLocusUrlListener', () => {
10569
10579
  it('listens to the locus url update event', (done) => {
10570
10580
  const newLocusUrl = 'newLocusUrl/12345';
10571
- const payload = {url: newLocusUrl}
10581
+ const payload = {url: newLocusUrl};
10572
10582
 
10573
10583
  meeting.members = {locusUrlUpdate: sinon.stub().returns(Promise.resolve(test1))};
10574
10584
  meeting.recordingController = {setLocusUrl: sinon.stub().returns(undefined)};
@@ -10611,7 +10621,7 @@ describe('plugin-meetings', () => {
10611
10621
  });
10612
10622
  it('update mainLocusUrl for controlsOptionManager if payload.isMainLocus as true', (done) => {
10613
10623
  const newLocusUrl = 'newLocusUrl/12345';
10614
- const payload = {url: newLocusUrl, isMainLocus: true}
10624
+ const payload = {url: newLocusUrl, isMainLocus: true};
10615
10625
 
10616
10626
  meeting.controlsOptionsManager = {setLocusUrl: sinon.stub().returns(undefined)};
10617
10627
 
@@ -10843,7 +10853,9 @@ describe('plugin-meetings', () => {
10843
10853
  meeting.meetingRequest.changeMeetingFloor = sinon.stub().returns(Promise.resolve());
10844
10854
  (meeting.deviceUrl = 'deviceUrl.com'), (meeting.localShareInstanceId = '1234-5678');
10845
10855
  webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
10846
- webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1000);
10856
+ webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon
10857
+ .stub()
10858
+ .returns(1000);
10847
10859
  });
10848
10860
  it('should call changeMeetingFloor()', async () => {
10849
10861
  meeting.screenShareFloorState = 'GRANTED';
@@ -11494,8 +11506,10 @@ describe('plugin-meetings', () => {
11494
11506
  canShareWhiteBoardSpy = sinon.spy(MeetingUtil, 'canShareWhiteBoard');
11495
11507
  canMoveToLobbySpy = sinon.spy(MeetingUtil, 'canMoveToLobby');
11496
11508
  showAutoEndMeetingWarningSpy = sinon.spy(MeetingUtil, 'showAutoEndMeetingWarning');
11497
- isSpokenLanguageAutoDetectionEnabledSpy = sinon.spy(MeetingUtil, 'isSpokenLanguageAutoDetectionEnabled');
11498
-
11509
+ isSpokenLanguageAutoDetectionEnabledSpy = sinon.spy(
11510
+ MeetingUtil,
11511
+ 'isSpokenLanguageAutoDetectionEnabled'
11512
+ );
11499
11513
  });
11500
11514
 
11501
11515
  afterEach(() => {
@@ -12502,7 +12516,9 @@ describe('plugin-meetings', () => {
12502
12516
  meeting.meetingRequest.changeMeetingFloor = sinon.stub().returns(Promise.resolve());
12503
12517
  meeting.deviceUrl = 'deviceUrl.com';
12504
12518
  webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
12505
- webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1000);
12519
+ webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon
12520
+ .stub()
12521
+ .returns(1000);
12506
12522
  webex.internal.newMetrics.submitClientEvent = sinon.stub();
12507
12523
  });
12508
12524
  it('should stop the whiteboard share', async () => {
@@ -12606,7 +12622,9 @@ describe('plugin-meetings', () => {
12606
12622
  meeting.deviceUrl = 'my-web-url';
12607
12623
  meeting.locusInfo.info = {isWebinar: false};
12608
12624
  webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
12609
- webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1500);
12625
+ webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon
12626
+ .stub()
12627
+ .returns(1500);
12610
12628
  webex.internal.newMetrics.submitClientEvent = sinon.stub();
12611
12629
  });
12612
12630
 
@@ -12855,8 +12873,8 @@ describe('plugin-meetings', () => {
12855
12873
 
12856
12874
  shareStatus =
12857
12875
  meeting.webinar.selfIsAttendee || meeting.guest
12858
- ? SHARE_STATUS.REMOTE_SHARE_ACTIVE
12859
- : SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE;
12876
+ ? SHARE_STATUS.REMOTE_SHARE_ACTIVE
12877
+ : SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE;
12860
12878
  }
12861
12879
 
12862
12880
  if (eventTrigger.member) {
@@ -13802,32 +13820,32 @@ describe('plugin-meetings', () => {
13802
13820
  });
13803
13821
  });
13804
13822
 
13805
- describe('handleShareVideoStreamMuteStateChange', () => {
13806
- it('should emit MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE event with correct fields', () => {
13807
- meeting.isMultistream = true;
13808
- meeting.statsAnalyzer = {shareVideoEncoderImplementation: 'OpenH264'};
13809
- meeting.mediaProperties.shareVideoStream = {
13810
- getSettings: sinon.stub().returns({displaySurface: 'monitor', frameRate: 30}),
13811
- };
13823
+ describe('handleShareVideoStreamMuteStateChange', () => {
13824
+ it('should emit MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE event with correct fields', () => {
13825
+ meeting.isMultistream = true;
13826
+ meeting.statsAnalyzer = {shareVideoEncoderImplementation: 'OpenH264'};
13827
+ meeting.mediaProperties.shareVideoStream = {
13828
+ getSettings: sinon.stub().returns({displaySurface: 'monitor', frameRate: 30}),
13829
+ };
13812
13830
 
13813
- meeting.handleShareVideoStreamMuteStateChange(true);
13831
+ meeting.handleShareVideoStreamMuteStateChange(true);
13814
13832
 
13815
- assert.calledOnceWithExactly(
13816
- Metrics.sendBehavioralMetric,
13817
- BEHAVIORAL_METRICS.MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE,
13818
- {
13819
- correlationId: meeting.correlationId,
13820
- muted: true,
13821
- encoderImplementation: 'OpenH264',
13822
- displaySurface: 'monitor',
13823
- isMultistream: true,
13824
- frameRate: 30,
13825
- }
13826
- );
13833
+ assert.calledOnceWithExactly(
13834
+ Metrics.sendBehavioralMetric,
13835
+ BEHAVIORAL_METRICS.MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE,
13836
+ {
13837
+ correlationId: meeting.correlationId,
13838
+ muted: true,
13839
+ encoderImplementation: 'OpenH264',
13840
+ displaySurface: 'monitor',
13841
+ isMultistream: true,
13842
+ frameRate: 30,
13843
+ }
13844
+ );
13845
+ });
13827
13846
  });
13828
13847
  });
13829
13848
  });
13830
- });
13831
13849
 
13832
13850
  describe('#startKeepAlive', () => {
13833
13851
  let clock;
@@ -15026,11 +15044,9 @@ describe('plugin-meetings', () => {
15026
15044
  assert.exists(unsetStagePromise.then);
15027
15045
  await unsetStagePromise;
15028
15046
 
15029
- assert.calledOnceWithExactly(
15030
- meeting.meetingRequest.synchronizeStage,
15031
- locusUrl,
15032
- {overrideDefault: false}
15033
- );
15047
+ assert.calledOnceWithExactly(meeting.meetingRequest.synchronizeStage, locusUrl, {
15048
+ overrideDefault: false,
15049
+ });
15034
15050
  });
15035
15051
  });
15036
15052
 
@@ -15055,7 +15071,7 @@ describe('plugin-meetings', () => {
15055
15071
  meeting.meetingInfo.siteFullUrl,
15056
15072
  meeting.locusId,
15057
15073
  meetingUuid,
15058
- displayName,
15074
+ displayName
15059
15075
  );
15060
15076
  });
15061
15077
  });
@@ -15102,10 +15118,7 @@ describe('plugin-meetings', () => {
15102
15118
  assert.exists(cancelSipCallOutPromise.then);
15103
15119
  await cancelSipCallOutPromise;
15104
15120
 
15105
- assert.calledOnceWithExactly(
15106
- meeting.meetingRequest.cancelSipCallOut,
15107
- participantId
15108
- );
15121
+ assert.calledOnceWithExactly(meeting.meetingRequest.cancelSipCallOut, participantId);
15109
15122
  });
15110
15123
  });
15111
15124
  });