@webex/plugin-meetings 3.8.0-next.5 → 3.8.0-next.7
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/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +38 -0
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +21 -5
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/types/meeting/index.d.ts +22 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +21 -21
- package/src/meeting/index.ts +34 -0
- package/src/meeting/locusMediaRequest.ts +27 -4
- package/test/unit/spec/meeting/index.js +138 -104
- package/test/unit/spec/meeting/locusMediaRequest.ts +96 -58
@@ -93,13 +93,14 @@ import CaptchaError from '../../../../src/common/errors/captcha-error';
|
|
93
93
|
import PermissionError from '../../../../src/common/errors/permission';
|
94
94
|
import JoinWebinarError from '../../../../src/common/errors/join-webinar-error';
|
95
95
|
import IntentToJoinError from '../../../../src/common/errors/intent-to-join';
|
96
|
-
import MultistreamNotSupportedError from '../../../../src/common/errors/multistream-not-supported-error'
|
96
|
+
import MultistreamNotSupportedError from '../../../../src/common/errors/multistream-not-supported-error';
|
97
97
|
import testUtils from '../../../utils/testUtils';
|
98
98
|
import {
|
99
99
|
MeetingInfoV2CaptchaError,
|
100
100
|
MeetingInfoV2PasswordError,
|
101
101
|
MeetingInfoV2PolicyError,
|
102
|
-
MeetingInfoV2JoinWebinarError,
|
102
|
+
MeetingInfoV2JoinWebinarError,
|
103
|
+
MeetingInfoV2JoinForbiddenError,
|
103
104
|
} from '../../../../src/meeting-info/meeting-info-v2';
|
104
105
|
import {
|
105
106
|
DTLS_HANDSHAKE_FAILED_CLIENT_CODE,
|
@@ -115,7 +116,8 @@ import MeetingCollection from '@webex/plugin-meetings/src/meetings/collection';
|
|
115
116
|
|
116
117
|
import {EVENT_TRIGGERS as VOICEAEVENTS} from '@webex/internal-plugin-voicea';
|
117
118
|
import { createBrbState } from '@webex/plugin-meetings/src/meeting/brbState';
|
118
|
-
import JoinForbiddenError
|
119
|
+
import JoinForbiddenError from '../../../../src/common/errors/join-forbidden-error';
|
120
|
+
import { EventEmitter } from 'stream';
|
119
121
|
|
120
122
|
describe('plugin-meetings', () => {
|
121
123
|
const logger = {
|
@@ -208,6 +210,7 @@ describe('plugin-meetings', () => {
|
|
208
210
|
let membersSpy;
|
209
211
|
let meetingRequestSpy;
|
210
212
|
let correlationId;
|
213
|
+
let uploadEvent;
|
211
214
|
|
212
215
|
beforeEach(() => {
|
213
216
|
webex = new MockWebex({
|
@@ -277,6 +280,8 @@ describe('plugin-meetings', () => {
|
|
277
280
|
test4 = `test4-${uuid.v4()}`;
|
278
281
|
testDestination = `testDestination-${uuid.v4()}`;
|
279
282
|
correlationId = uuid.v4();
|
283
|
+
uploadEvent = new EventEmitter();
|
284
|
+
uploadEvent.addListener('progress', () => {})
|
280
285
|
|
281
286
|
meeting = new Meeting(
|
282
287
|
{
|
@@ -667,7 +672,7 @@ describe('plugin-meetings', () => {
|
|
667
672
|
beforeEach(() => {
|
668
673
|
meeting.join = sinon.stub().callsFake((joinOptions) => {
|
669
674
|
meeting.isMultistream = joinOptions.enableMultistream;
|
670
|
-
return Promise.resolve(fakeJoinResult)
|
675
|
+
return Promise.resolve(fakeJoinResult);
|
671
676
|
});
|
672
677
|
addMediaInternalStub = sinon
|
673
678
|
.stub(meeting, 'addMediaInternal')
|
@@ -1070,7 +1075,11 @@ describe('plugin-meetings', () => {
|
|
1070
1075
|
mediaOptions,
|
1071
1076
|
});
|
1072
1077
|
|
1073
|
-
assert.deepEqual(result, {
|
1078
|
+
assert.deepEqual(result, {
|
1079
|
+
join: fakeJoinResult,
|
1080
|
+
media: undefined,
|
1081
|
+
multistreamEnabled: false,
|
1082
|
+
});
|
1074
1083
|
|
1075
1084
|
assert.calledOnce(meeting.join);
|
1076
1085
|
|
@@ -1174,7 +1183,10 @@ describe('plugin-meetings', () => {
|
|
1174
1183
|
type: addMediaError.name,
|
1175
1184
|
}
|
1176
1185
|
);
|
1177
|
-
assert.calledOnceWithExactly(meeting.leave, {
|
1186
|
+
assert.calledOnceWithExactly(meeting.leave, {
|
1187
|
+
resourceId: undefined,
|
1188
|
+
reason: 'joinWithMedia failure',
|
1189
|
+
});
|
1178
1190
|
});
|
1179
1191
|
});
|
1180
1192
|
|
@@ -3550,18 +3562,18 @@ describe('plugin-meetings', () => {
|
|
3550
3562
|
it('counts the number of members that are in the meeting for MEDIA_QUALITY event', async () => {
|
3551
3563
|
let fakeMembersCollection = {
|
3552
3564
|
members: {
|
3553
|
-
member1: {
|
3554
|
-
member2: {
|
3555
|
-
member3: {
|
3565
|
+
member1: {isInMeeting: true},
|
3566
|
+
member2: {isInMeeting: true},
|
3567
|
+
member3: {isInMeeting: false},
|
3556
3568
|
},
|
3557
3569
|
};
|
3558
|
-
sinon.stub(meeting, 'getMembers').returns({
|
3559
|
-
const fakeData = {
|
3570
|
+
sinon.stub(meeting, 'getMembers').returns({membersCollection: fakeMembersCollection});
|
3571
|
+
const fakeData = {intervalMetadata: {}, networkType: 'wifi'};
|
3560
3572
|
|
3561
3573
|
statsAnalyzerStub.emit(
|
3562
|
-
{
|
3574
|
+
{file: 'test', function: 'test'},
|
3563
3575
|
StatsAnalyzerEventNames.MEDIA_QUALITY,
|
3564
|
-
{
|
3576
|
+
{data: fakeData}
|
3565
3577
|
);
|
3566
3578
|
|
3567
3579
|
assert.calledWithMatch(webex.internal.newMetrics.submitMQE, {
|
@@ -3570,15 +3582,17 @@ describe('plugin-meetings', () => {
|
|
3570
3582
|
meetingId: meeting.id,
|
3571
3583
|
},
|
3572
3584
|
payload: {
|
3573
|
-
intervals: [
|
3585
|
+
intervals: [
|
3586
|
+
sinon.match.has('intervalMetadata', sinon.match.has('meetingUserCount', 2)),
|
3587
|
+
],
|
3574
3588
|
},
|
3575
3589
|
});
|
3576
3590
|
fakeMembersCollection.members.member2.isInMeeting = false;
|
3577
3591
|
|
3578
3592
|
statsAnalyzerStub.emit(
|
3579
|
-
{
|
3593
|
+
{file: 'test', function: 'test'},
|
3580
3594
|
StatsAnalyzerEventNames.MEDIA_QUALITY,
|
3581
|
-
{
|
3595
|
+
{data: fakeData}
|
3582
3596
|
);
|
3583
3597
|
|
3584
3598
|
assert.calledWithMatch(webex.internal.newMetrics.submitMQE, {
|
@@ -3587,7 +3601,9 @@ describe('plugin-meetings', () => {
|
|
3587
3601
|
meetingId: meeting.id,
|
3588
3602
|
},
|
3589
3603
|
payload: {
|
3590
|
-
intervals: [
|
3604
|
+
intervals: [
|
3605
|
+
sinon.match.has('intervalMetadata', sinon.match.has('meetingUserCount', 1)),
|
3606
|
+
],
|
3591
3607
|
},
|
3592
3608
|
});
|
3593
3609
|
});
|
@@ -3842,7 +3858,6 @@ describe('plugin-meetings', () => {
|
|
3842
3858
|
});
|
3843
3859
|
|
3844
3860
|
describe('when in a multistream meeting', () => {
|
3845
|
-
|
3846
3861
|
beforeEach(() => {
|
3847
3862
|
meeting.isMultistream = true;
|
3848
3863
|
});
|
@@ -3853,7 +3868,7 @@ describe('plugin-meetings', () => {
|
|
3853
3868
|
await brbResult;
|
3854
3869
|
assert.exists(brbResult.then);
|
3855
3870
|
assert.calledOnce(meeting.brbState.enable);
|
3856
|
-
})
|
3871
|
+
});
|
3857
3872
|
|
3858
3873
|
it('should disable #beRightBack and return a promise', async () => {
|
3859
3874
|
const brbResult = meeting.beRightBack(false);
|
@@ -3861,7 +3876,7 @@ describe('plugin-meetings', () => {
|
|
3861
3876
|
await brbResult;
|
3862
3877
|
assert.exists(brbResult.then);
|
3863
3878
|
assert.calledOnce(meeting.brbState.enable);
|
3864
|
-
})
|
3879
|
+
});
|
3865
3880
|
|
3866
3881
|
it('should throw an error and reject the promise if setBrb fails', async () => {
|
3867
3882
|
const error = new Error('setBrb failed');
|
@@ -3874,7 +3889,7 @@ describe('plugin-meetings', () => {
|
|
3874
3889
|
assert.equal(err.message, 'setBrb failed');
|
3875
3890
|
assert.isRejected((Promise.reject()));
|
3876
3891
|
}
|
3877
|
-
})
|
3892
|
+
});
|
3878
3893
|
});
|
3879
3894
|
});
|
3880
3895
|
|
@@ -4006,7 +4021,7 @@ describe('plugin-meetings', () => {
|
|
4006
4021
|
initiateOffer: sinon.stub().resolves({}),
|
4007
4022
|
update: sinon.stub().resolves({}),
|
4008
4023
|
on: sinon.stub(),
|
4009
|
-
roapMessageReceived: sinon.stub()
|
4024
|
+
roapMessageReceived: sinon.stub(),
|
4010
4025
|
};
|
4011
4026
|
|
4012
4027
|
fakeMultistreamRoapMediaConnection = {
|
@@ -4035,7 +4050,7 @@ describe('plugin-meetings', () => {
|
|
4035
4050
|
|
4036
4051
|
locusMediaRequestStub = sinon
|
4037
4052
|
.stub(WebexPlugin.prototype, 'request')
|
4038
|
-
.resolves({body: {locus: {fullState: {}}}});
|
4053
|
+
.resolves({body: {locus: {fullState: {}}}, upload: sinon.match.instanceOf(EventEmitter), download: sinon.match.instanceOf(EventEmitter)});
|
4039
4054
|
|
4040
4055
|
// setup some things and mocks so that the call to join() works
|
4041
4056
|
// (we need to call join() because it creates the LocusMediaRequest instance
|
@@ -4144,6 +4159,8 @@ describe('plugin-meetings', () => {
|
|
4144
4159
|
id: 'fake clientMediaPreferences',
|
4145
4160
|
},
|
4146
4161
|
},
|
4162
|
+
upload: sinon.match.instanceOf(EventEmitter),
|
4163
|
+
download: sinon.match.instanceOf(EventEmitter),
|
4147
4164
|
});
|
4148
4165
|
};
|
4149
4166
|
|
@@ -4171,6 +4188,8 @@ describe('plugin-meetings', () => {
|
|
4171
4188
|
},
|
4172
4189
|
],
|
4173
4190
|
},
|
4191
|
+
upload: sinon.match.instanceOf(EventEmitter),
|
4192
|
+
download: sinon.match.instanceOf(EventEmitter),
|
4174
4193
|
});
|
4175
4194
|
};
|
4176
4195
|
|
@@ -4195,6 +4214,8 @@ describe('plugin-meetings', () => {
|
|
4195
4214
|
respOnlySdp: true,
|
4196
4215
|
usingResource: null,
|
4197
4216
|
},
|
4217
|
+
upload: sinon.match.instanceOf(EventEmitter),
|
4218
|
+
download: sinon.match.instanceOf(EventEmitter),
|
4198
4219
|
});
|
4199
4220
|
};
|
4200
4221
|
|
@@ -6337,7 +6358,10 @@ describe('plugin-meetings', () => {
|
|
6337
6358
|
.throws(new MeetingInfoV2JoinForbiddenError(403003, FAKE_MEETING_INFO)),
|
6338
6359
|
};
|
6339
6360
|
|
6340
|
-
await assert.isRejected(
|
6361
|
+
await assert.isRejected(
|
6362
|
+
meeting.fetchMeetingInfo({sendCAevents: true}),
|
6363
|
+
JoinForbiddenError
|
6364
|
+
);
|
6341
6365
|
|
6342
6366
|
assert.calledWith(
|
6343
6367
|
meeting.attrs.meetingInfoProvider.fetchMeetingInfo,
|
@@ -6353,10 +6377,7 @@ describe('plugin-meetings', () => {
|
|
6353
6377
|
|
6354
6378
|
assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO);
|
6355
6379
|
assert.equal(meeting.meetingInfoFailureCode, 403003);
|
6356
|
-
assert.equal(
|
6357
|
-
meeting.meetingInfoFailureReason,
|
6358
|
-
MEETING_INFO_FAILURE_REASON.NOT_REACH_JBH
|
6359
|
-
);
|
6380
|
+
assert.equal(meeting.meetingInfoFailureReason, MEETING_INFO_FAILURE_REASON.NOT_REACH_JBH);
|
6360
6381
|
assert.equal(meeting.requiredCaptcha, null);
|
6361
6382
|
});
|
6362
6383
|
|
@@ -6733,15 +6754,10 @@ describe('plugin-meetings', () => {
|
|
6733
6754
|
meeting.attrs.meetingInfoProvider = {
|
6734
6755
|
fetchMeetingInfo: sinon
|
6735
6756
|
.stub()
|
6736
|
-
.throws(
|
6737
|
-
new MeetingInfoV2JoinWebinarError(403021, FAKE_MEETING_INFO, 'a message')
|
6738
|
-
),
|
6757
|
+
.throws(new MeetingInfoV2JoinWebinarError(403021, FAKE_MEETING_INFO, 'a message')),
|
6739
6758
|
};
|
6740
6759
|
|
6741
|
-
await assert.isRejected(
|
6742
|
-
meeting.fetchMeetingInfo({sendCAevents: true}),
|
6743
|
-
JoinWebinarError
|
6744
|
-
);
|
6760
|
+
await assert.isRejected(meeting.fetchMeetingInfo({sendCAevents: true}), JoinWebinarError);
|
6745
6761
|
|
6746
6762
|
assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO);
|
6747
6763
|
assert.equal(
|
@@ -6756,15 +6772,10 @@ describe('plugin-meetings', () => {
|
|
6756
6772
|
meeting.attrs.meetingInfoProvider = {
|
6757
6773
|
fetchMeetingInfo: sinon
|
6758
6774
|
.stub()
|
6759
|
-
.throws(
|
6760
|
-
new MeetingInfoV2JoinWebinarError(403026, FAKE_MEETING_INFO, 'a message')
|
6761
|
-
),
|
6775
|
+
.throws(new MeetingInfoV2JoinWebinarError(403026, FAKE_MEETING_INFO, 'a message')),
|
6762
6776
|
};
|
6763
6777
|
|
6764
|
-
await assert.isRejected(
|
6765
|
-
meeting.fetchMeetingInfo({sendCAevents: true}),
|
6766
|
-
JoinWebinarError
|
6767
|
-
);
|
6778
|
+
await assert.isRejected(meeting.fetchMeetingInfo({sendCAevents: true}), JoinWebinarError);
|
6768
6779
|
|
6769
6780
|
assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO);
|
6770
6781
|
assert.equal(
|
@@ -6779,15 +6790,10 @@ describe('plugin-meetings', () => {
|
|
6779
6790
|
meeting.attrs.meetingInfoProvider = {
|
6780
6791
|
fetchMeetingInfo: sinon
|
6781
6792
|
.stub()
|
6782
|
-
.throws(
|
6783
|
-
new MeetingInfoV2JoinWebinarError(403037, FAKE_MEETING_INFO, 'a message')
|
6784
|
-
),
|
6793
|
+
.throws(new MeetingInfoV2JoinWebinarError(403037, FAKE_MEETING_INFO, 'a message')),
|
6785
6794
|
};
|
6786
6795
|
|
6787
|
-
await assert.isRejected(
|
6788
|
-
meeting.fetchMeetingInfo({sendCAevents: true}),
|
6789
|
-
JoinWebinarError
|
6790
|
-
);
|
6796
|
+
await assert.isRejected(meeting.fetchMeetingInfo({sendCAevents: true}), JoinWebinarError);
|
6791
6797
|
|
6792
6798
|
assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO);
|
6793
6799
|
assert.equal(
|
@@ -9223,22 +9229,22 @@ describe('plugin-meetings', () => {
|
|
9223
9229
|
const assertBrb = (enabled) => {
|
9224
9230
|
meeting.brbState = createBrbState(meeting, false);
|
9225
9231
|
meeting.locusInfo.emit(
|
9226
|
-
{
|
9232
|
+
{function: 'test', file: 'test'},
|
9227
9233
|
LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED,
|
9228
|
-
{
|
9229
|
-
)
|
9234
|
+
{brb: {enabled}}
|
9235
|
+
);
|
9230
9236
|
assert.calledWithExactly(
|
9231
9237
|
TriggerProxy.trigger,
|
9232
9238
|
meeting,
|
9233
9239
|
{file: 'meeting/index', function: 'setUpLocusInfoSelfListener'},
|
9234
9240
|
EVENT_TRIGGERS.MEETING_SELF_BRB_UPDATE,
|
9235
|
-
{
|
9241
|
+
{payload: {brb: {enabled}}}
|
9236
9242
|
);
|
9237
|
-
}
|
9243
|
+
};
|
9238
9244
|
|
9239
9245
|
assertBrb(true);
|
9240
9246
|
assertBrb(false);
|
9241
|
-
})
|
9247
|
+
});
|
9242
9248
|
|
9243
9249
|
it('listens to the interpretation changed event', () => {
|
9244
9250
|
meeting.simultaneousInterpretation.updateSelfInterpretation = sinon.stub();
|
@@ -9922,6 +9928,22 @@ describe('plugin-meetings', () => {
|
|
9922
9928
|
});
|
9923
9929
|
});
|
9924
9930
|
|
9931
|
+
describe('#emailInput', () => {
|
9932
|
+
it('should set the email input', () => {
|
9933
|
+
assert.notOk(meeting.emailInput);
|
9934
|
+
meeting.emailInput = 'current';
|
9935
|
+
assert.equal(meeting.emailInput, 'current');
|
9936
|
+
});
|
9937
|
+
});
|
9938
|
+
|
9939
|
+
describe('#userNameInput', () => {
|
9940
|
+
it('should set the user name input', () => {
|
9941
|
+
assert.notOk(meeting.userNameInput);
|
9942
|
+
meeting.userNameInput = 'current';
|
9943
|
+
assert.equal(meeting.userNameInput, 'current');
|
9944
|
+
});
|
9945
|
+
});
|
9946
|
+
|
9925
9947
|
describe('#setPermissionTokenPayload', () => {
|
9926
9948
|
let now;
|
9927
9949
|
let clock;
|
@@ -11326,18 +11348,21 @@ describe('plugin-meetings', () => {
|
|
11326
11348
|
);
|
11327
11349
|
});
|
11328
11350
|
|
11329
|
-
|
11330
11351
|
it('connect ps data channel if ps started in webinar', async () => {
|
11331
11352
|
meeting.joinedWith = {state: 'JOINED'};
|
11332
|
-
meeting.locusInfo = {
|
11353
|
+
meeting.locusInfo = {
|
11354
|
+
url: 'a url',
|
11355
|
+
info: {
|
11356
|
+
datachannelUrl: 'a datachannel url',
|
11357
|
+
practiceSessionDatachannelUrl: 'a ps datachannel url',
|
11358
|
+
},
|
11359
|
+
};
|
11333
11360
|
meeting.webinar.isJoinPracticeSessionDataChannel = sinon.stub().returns(true);
|
11334
11361
|
await meeting.updateLLMConnection();
|
11335
11362
|
|
11336
11363
|
assert.notCalled(webex.internal.llm.disconnectLLM);
|
11337
11364
|
assert.calledWith(webex.internal.llm.registerAndConnect, 'a url', 'a ps datachannel url');
|
11338
|
-
|
11339
11365
|
});
|
11340
|
-
|
11341
11366
|
});
|
11342
11367
|
|
11343
11368
|
describe('#setLocus', () => {
|
@@ -11755,24 +11780,29 @@ describe('plugin-meetings', () => {
|
|
11755
11780
|
|
11756
11781
|
activeSharingId.whiteboard = beneficiaryId;
|
11757
11782
|
|
11758
|
-
eventTrigger.share.push(
|
11759
|
-
|
11760
|
-
|
11761
|
-
|
11762
|
-
|
11763
|
-
|
11764
|
-
|
11765
|
-
|
11766
|
-
|
11767
|
-
|
11768
|
-
|
11769
|
-
|
11770
|
-
|
11771
|
-
|
11772
|
-
|
11773
|
-
|
11774
|
-
|
11783
|
+
eventTrigger.share.push(
|
11784
|
+
meeting.webinar.selfIsAttendee
|
11785
|
+
? {
|
11786
|
+
eventName: EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE,
|
11787
|
+
functionName: 'remoteShare',
|
11788
|
+
eventPayload: {
|
11789
|
+
memberId: null,
|
11790
|
+
url,
|
11791
|
+
shareInstanceId,
|
11792
|
+
annotationInfo: undefined,
|
11793
|
+
resourceType: undefined,
|
11794
|
+
},
|
11795
|
+
}
|
11796
|
+
: {
|
11797
|
+
eventName: EVENT_TRIGGERS.MEETING_STARTED_SHARING_WHITEBOARD,
|
11798
|
+
functionName: 'startWhiteboardShare',
|
11799
|
+
eventPayload: {resourceUrl, memberId: beneficiaryId},
|
11800
|
+
}
|
11801
|
+
);
|
11775
11802
|
|
11803
|
+
shareStatus = meeting.webinar.selfIsAttendee
|
11804
|
+
? SHARE_STATUS.REMOTE_SHARE_ACTIVE
|
11805
|
+
: SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE;
|
11776
11806
|
}
|
11777
11807
|
|
11778
11808
|
if (eventTrigger.member) {
|
@@ -11804,24 +11834,29 @@ describe('plugin-meetings', () => {
|
|
11804
11834
|
newPayload.current.content.disposition = FLOOR_ACTION.ACCEPTED;
|
11805
11835
|
newPayload.current.content.beneficiaryId = otherBeneficiaryId;
|
11806
11836
|
|
11807
|
-
eventTrigger.share.push(
|
11808
|
-
|
11809
|
-
|
11810
|
-
|
11811
|
-
|
11812
|
-
|
11813
|
-
|
11814
|
-
|
11815
|
-
|
11816
|
-
|
11817
|
-
|
11818
|
-
|
11819
|
-
|
11820
|
-
|
11821
|
-
|
11822
|
-
|
11823
|
-
|
11837
|
+
eventTrigger.share.push(
|
11838
|
+
meeting.webinar.selfIsAttendee
|
11839
|
+
? {
|
11840
|
+
eventName: EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE,
|
11841
|
+
functionName: 'remoteShare',
|
11842
|
+
eventPayload: {
|
11843
|
+
memberId: null,
|
11844
|
+
url,
|
11845
|
+
shareInstanceId,
|
11846
|
+
annotationInfo: undefined,
|
11847
|
+
resourceType: undefined,
|
11848
|
+
},
|
11849
|
+
}
|
11850
|
+
: {
|
11851
|
+
eventName: EVENT_TRIGGERS.MEETING_STARTED_SHARING_WHITEBOARD,
|
11852
|
+
functionName: 'startWhiteboardShare',
|
11853
|
+
eventPayload: {resourceUrl, memberId: beneficiaryId},
|
11854
|
+
}
|
11855
|
+
);
|
11824
11856
|
|
11857
|
+
shareStatus = meeting.webinar.selfIsAttendee
|
11858
|
+
? SHARE_STATUS.REMOTE_SHARE_ACTIVE
|
11859
|
+
: SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE;
|
11825
11860
|
} else {
|
11826
11861
|
eventTrigger.share.push({
|
11827
11862
|
eventName: EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD,
|
@@ -11951,24 +11986,24 @@ describe('plugin-meetings', () => {
|
|
11951
11986
|
describe('Whiteboard Share - Webinar Attendee', () => {
|
11952
11987
|
it('Scenario #1: Whiteboard sharing as a webinar attendee', () => {
|
11953
11988
|
// Set the webinar attendee flag
|
11954
|
-
meeting.webinar = {
|
11989
|
+
meeting.webinar = {selfIsAttendee: true};
|
11955
11990
|
meeting.locusInfo.info.isWebinar = true;
|
11956
11991
|
|
11957
11992
|
// Step 1: Start sharing whiteboard A
|
11958
11993
|
const data1 = generateData(
|
11959
|
-
blankPayload,
|
11960
|
-
true,
|
11961
|
-
false,
|
11962
|
-
USER_IDS.REMOTE_A,
|
11994
|
+
blankPayload, // Initial payload
|
11995
|
+
true, // isGranting: Granting share
|
11996
|
+
false, // isContent: Whiteboard (not content)
|
11997
|
+
USER_IDS.REMOTE_A, // Beneficiary ID: Remote user A
|
11963
11998
|
RESOURCE_URLS.WHITEBOARD_A // Resource URL: Whiteboard A
|
11964
11999
|
);
|
11965
12000
|
|
11966
12001
|
// Step 2: Stop sharing whiteboard A
|
11967
12002
|
const data2 = generateData(
|
11968
|
-
data1.payload,
|
11969
|
-
false,
|
11970
|
-
false,
|
11971
|
-
USER_IDS.REMOTE_A
|
12003
|
+
data1.payload, // Updated payload from Step 1
|
12004
|
+
false, // isGranting: Stopping share
|
12005
|
+
false, // isContent: Whiteboard
|
12006
|
+
USER_IDS.REMOTE_A // Beneficiary ID: Remote user A
|
11972
12007
|
);
|
11973
12008
|
|
11974
12009
|
// Validate the payload changes and status updates
|
@@ -11979,7 +12014,6 @@ describe('plugin-meetings', () => {
|
|
11979
12014
|
});
|
11980
12015
|
});
|
11981
12016
|
|
11982
|
-
|
11983
12017
|
describe('Whiteboard A --> Whiteboard B', () => {
|
11984
12018
|
it('Scenario #1: you share both whiteboards', () => {
|
11985
12019
|
const data1 = generateData(
|
@@ -13290,7 +13324,7 @@ describe('plugin-meetings', () => {
|
|
13290
13324
|
await meeting.roapMessageReceived(fakeMessage);
|
13291
13325
|
|
13292
13326
|
assert.fail('Expected MultistreamNotSupportedError to be thrown');
|
13293
|
-
} catch(e) {
|
13327
|
+
} catch (e) {
|
13294
13328
|
assert.isTrue(e instanceof MultistreamNotSupportedError);
|
13295
13329
|
}
|
13296
13330
|
|