@webex/plugin-meetings 3.11.0-next.31 → 3.11.0-next.32
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/aiEnableRequest/index.js +1 -1
- 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 +37 -27
- package/dist/meeting/index.js.map +1 -1
- package/dist/types/meeting/index.d.ts +1 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +1 -1
- package/src/meeting/index.ts +10 -0
- package/test/unit/spec/meeting/index.js +35 -0
|
@@ -463,6 +463,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
463
463
|
localAudioStreamMuteStateHandler: () => void;
|
|
464
464
|
localVideoStreamMuteStateHandler: () => void;
|
|
465
465
|
localOutputTrackChangeHandler: () => void;
|
|
466
|
+
localConstraintsChangeHandler: () => void;
|
|
466
467
|
environment: string;
|
|
467
468
|
namespace: string;
|
|
468
469
|
allowMediaInLobby: boolean;
|
package/dist/webinar/index.js
CHANGED
package/package.json
CHANGED
package/src/meeting/index.ts
CHANGED
|
@@ -687,6 +687,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
687
687
|
localAudioStreamMuteStateHandler: () => void;
|
|
688
688
|
localVideoStreamMuteStateHandler: () => void;
|
|
689
689
|
localOutputTrackChangeHandler: () => void;
|
|
690
|
+
localConstraintsChangeHandler: () => void;
|
|
690
691
|
environment: string;
|
|
691
692
|
namespace = MEETINGS;
|
|
692
693
|
allowMediaInLobby: boolean;
|
|
@@ -1556,6 +1557,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1556
1557
|
}
|
|
1557
1558
|
};
|
|
1558
1559
|
|
|
1560
|
+
this.localConstraintsChangeHandler = () => {
|
|
1561
|
+
if (!this.isMultistream) {
|
|
1562
|
+
this.mediaProperties.webrtcMediaConnection?.updatePreferredBitrateKbps();
|
|
1563
|
+
}
|
|
1564
|
+
};
|
|
1565
|
+
|
|
1559
1566
|
/**
|
|
1560
1567
|
* Promise that exists if SDP offer has been generated, and resolves once sdp answer is received.
|
|
1561
1568
|
* @instance
|
|
@@ -4844,6 +4851,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4844
4851
|
this.localVideoStreamMuteStateHandler
|
|
4845
4852
|
);
|
|
4846
4853
|
oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
|
|
4854
|
+
oldStream?.off(LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
|
|
4847
4855
|
|
|
4848
4856
|
// we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges
|
|
4849
4857
|
this.mediaProperties.setLocalVideoStream(localStream);
|
|
@@ -4859,6 +4867,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4859
4867
|
this.localVideoStreamMuteStateHandler
|
|
4860
4868
|
);
|
|
4861
4869
|
localStream?.on(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
|
|
4870
|
+
localStream?.on(LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
|
|
4862
4871
|
|
|
4863
4872
|
if (!this.isMultistream || !localStream) {
|
|
4864
4873
|
// for multistream WCME automatically un-publishes the old stream when we publish a new one
|
|
@@ -4993,6 +5002,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4993
5002
|
this.localVideoStreamMuteStateHandler
|
|
4994
5003
|
);
|
|
4995
5004
|
videoStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
|
|
5005
|
+
videoStream?.off(LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
|
|
4996
5006
|
|
|
4997
5007
|
shareAudioStream?.off(StreamEventNames.Ended, this.handleShareAudioStreamEnded);
|
|
4998
5008
|
shareAudioStream?.off(
|
|
@@ -11473,6 +11473,41 @@ describe('plugin-meetings', () => {
|
|
|
11473
11473
|
});
|
|
11474
11474
|
});
|
|
11475
11475
|
|
|
11476
|
+
describe('localConstraintsChangeHandler', () => {
|
|
11477
|
+
it('calls updatePreferredBitrateKbps when not multistream', () => {
|
|
11478
|
+
meeting.isMultistream = false;
|
|
11479
|
+
meeting.mediaProperties.webrtcMediaConnection = {
|
|
11480
|
+
updatePreferredBitrateKbps: sinon.stub(),
|
|
11481
|
+
};
|
|
11482
|
+
|
|
11483
|
+
meeting.localConstraintsChangeHandler();
|
|
11484
|
+
|
|
11485
|
+
assert.calledOnce(
|
|
11486
|
+
meeting.mediaProperties.webrtcMediaConnection.updatePreferredBitrateKbps
|
|
11487
|
+
);
|
|
11488
|
+
});
|
|
11489
|
+
|
|
11490
|
+
it('does not call updatePreferredBitrateKbps when multistream', () => {
|
|
11491
|
+
meeting.isMultistream = true;
|
|
11492
|
+
meeting.mediaProperties.webrtcMediaConnection = {
|
|
11493
|
+
updatePreferredBitrateKbps: sinon.stub(),
|
|
11494
|
+
};
|
|
11495
|
+
|
|
11496
|
+
meeting.localConstraintsChangeHandler();
|
|
11497
|
+
|
|
11498
|
+
assert.notCalled(
|
|
11499
|
+
meeting.mediaProperties.webrtcMediaConnection.updatePreferredBitrateKbps
|
|
11500
|
+
);
|
|
11501
|
+
});
|
|
11502
|
+
|
|
11503
|
+
it('does not throw when webrtcMediaConnection is undefined', () => {
|
|
11504
|
+
meeting.isMultistream = false;
|
|
11505
|
+
meeting.mediaProperties.webrtcMediaConnection = undefined;
|
|
11506
|
+
|
|
11507
|
+
assert.doesNotThrow(() => meeting.localConstraintsChangeHandler());
|
|
11508
|
+
});
|
|
11509
|
+
});
|
|
11510
|
+
|
|
11476
11511
|
describe('#parseMeetingInfo', () => {
|
|
11477
11512
|
const checkParseMeetingInfo = (expectedInfoToParse) => {
|
|
11478
11513
|
assert.equal(meeting.conversationUrl, expectedInfoToParse.conversationUrl);
|