Fix camera getting muted when disconnecting from a video room (#21958)

This commit is contained in:
Robin 2022-04-29 08:51:43 -04:00 committed by GitHub
parent 2c7680bd87
commit b5336c9a4d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -378,12 +378,14 @@ function joinConference(audioDevice?: string, videoDevice?: string) {
if (isVideoChannel) meetApi.executeCommand("setTileView", true);
});
meetApi.on("videoConferenceLeft", () => {
notifyHangup();
meetApi = null;
});
meetApi.on("readyToClose", () => {
switchVisibleContainers();
notifyHangup();
document.getElementById("jitsiContainer").innerHTML = "";
meetApi = null;
if (skipOurWelcomeScreen) {
skipToJitsiSplashScreen();
@ -404,8 +406,17 @@ function joinConference(audioDevice?: string, videoDevice?: string) {
});
meetApi.on("videoMuteStatusChanged", ({ muted }) => {
const action = muted ? ElementWidgetActions.MuteVideo : ElementWidgetActions.UnmuteVideo;
widgetApi.transport.send(action, {});
if (muted) {
// Jitsi Meet always sends a "video muted" event directly before
// hanging up, which we need to ignore by padding the timeout here,
// otherwise the React SDK will mistakenly think the user turned off
// their video by hand
setTimeout(() => {
if (meetApi) widgetApi.transport.send(ElementWidgetActions.MuteVideo, {});
}, 200);
} else {
widgetApi.transport.send(ElementWidgetActions.UnmuteVideo, {});
}
});
["videoConferenceJoined", "participantJoined", "participantLeft"].forEach(event => {