@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.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/webex-errors.js +21 -1
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +1 -1
- package/dist/meeting/index.js.map +1 -1
- package/dist/types/common/errors/webex-errors.d.ts +12 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +13 -13
- package/src/common/errors/webex-errors.ts +19 -0
- package/src/index.ts +2 -0
- package/src/meeting/index.ts +2 -1
- package/test/unit/spec/meeting/index.js +87 -74
|
@@ -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 };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/webinar/index.js
CHANGED
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.
|
|
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.
|
|
67
|
-
"@webex/internal-plugin-device": "3.
|
|
68
|
-
"@webex/internal-plugin-llm": "3.
|
|
69
|
-
"@webex/internal-plugin-mercury": "3.
|
|
70
|
-
"@webex/internal-plugin-metrics": "3.
|
|
71
|
-
"@webex/internal-plugin-support": "3.
|
|
72
|
-
"@webex/internal-plugin-user": "3.
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.
|
|
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.
|
|
76
|
-
"@webex/plugin-rooms": "3.
|
|
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.
|
|
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.
|
|
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';
|
package/src/meeting/index.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
2004
|
-
{
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
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(
|
|
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(
|
|
6818
|
-
|
|
6819
|
-
|
|
6820
|
-
|
|
6821
|
-
|
|
6822
|
-
|
|
6823
|
-
|
|
6824
|
-
|
|
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(
|
|
6845
|
-
|
|
6846
|
-
|
|
6847
|
-
|
|
6848
|
-
|
|
6849
|
-
|
|
6850
|
-
|
|
6851
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
-
|
|
12859
|
-
|
|
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
|
-
|
|
13806
|
-
|
|
13807
|
-
|
|
13808
|
-
|
|
13809
|
-
|
|
13810
|
-
|
|
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
|
-
|
|
13831
|
+
meeting.handleShareVideoStreamMuteStateChange(true);
|
|
13814
13832
|
|
|
13815
|
-
|
|
13816
|
-
|
|
13817
|
-
|
|
13818
|
-
|
|
13819
|
-
|
|
13820
|
-
|
|
13821
|
-
|
|
13822
|
-
|
|
13823
|
-
|
|
13824
|
-
|
|
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
|
-
|
|
15031
|
-
|
|
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
|
});
|