Keep A/V mute state during reconnection. fixes 510

This commit is contained in:
Mészáros Mihály 2020-10-27 09:29:15 +01:00
parent 4dc507453c
commit 48baea3cf2
4 changed files with 50 additions and 4 deletions

View file

@ -969,6 +969,10 @@ export default class RoomClient
store.dispatch(
producerActions.setProducerPaused(this._micProducer.id));
store.dispatch(
settingsActions.setAudioMuted(true));
}
catch (error)
{
@ -1004,6 +1008,10 @@ export default class RoomClient
store.dispatch(
producerActions.setProducerResumed(this._micProducer.id));
store.dispatch(
settingsActions.setAudioMuted(false));
}
catch (error)
{
@ -1367,6 +1375,7 @@ export default class RoomClient
}
async updateWebcam({
init = false,
start = false,
restart = false,
newDeviceId = null,
@ -1402,6 +1411,13 @@ export default class RoomClient
if (newFrameRate)
store.dispatch(settingsActions.setVideoFrameRate(newFrameRate));
const { videoMuted } = store.getState().settings;
if (init && videoMuted)
return;
else
store.dispatch(settingsActions.setVideoMuted(false));
store.dispatch(meActions.setWebcamInProgress(true));
const deviceId = await this._getWebcamDeviceId();
@ -3314,7 +3330,7 @@ export default class RoomClient
this._havePermission(permissions.SHARE_VIDEO)
)
{
this.updateWebcam({ start: true });
this.updateWebcam({ init: true, start: true });
}
if (
joinAudio &&
@ -3928,7 +3944,7 @@ export default class RoomClient
}
this._webcamProducer = null;
store.dispatch(settingsActions.setVideoMuted(true));
store.dispatch(meActions.setWebcamInProgress(false));
}

View file

@ -137,4 +137,16 @@ export const setMediaPerms = (mediaPerms) =>
({
type : 'SET_MEDIA_PERMS',
payload : { mediaPerms }
});
export const setAudioMuted = (audioMuted) =>
({
type : 'SET_AUDIO_MUTED',
payload : { audioMuted }
});
export const setVideoMuted = (videoMuted) =>
({
type : 'SET_VIDEO_MUTED',
payload : { videoMuted }
});

View file

@ -215,7 +215,9 @@ const Me = (props) =>
defaultMessage : 'Activate audio'
});
}
else if (!micProducer.locallyPaused && !micProducer.remotelyPaused)
else if (!micProducer.locallyPaused &&
!micProducer.remotelyPaused &&
!settings.audioMuted)
{
micState = 'on';
micTip = intl.formatMessage({
@ -244,7 +246,7 @@ const Me = (props) =>
defaultMessage : 'Video unsupported'
});
}
else if (webcamProducer)
else if (webcamProducer && !settings.videoMuted)
{
webcamState = 'on';
webcamTip = intl.formatMessage({

View file

@ -13,6 +13,8 @@ const initialState =
voiceActivatedUnmute : false,
noiseThreshold : -50,
sampleSize : 16,
audioMuted : false,
videoMuted : false,
// low, medium, high, veryhigh, ultra
resolution : window.config.defaultResolution || 'medium',
frameRate : window.config.defaultFrameRate || 15,
@ -232,6 +234,20 @@ const settings = (state = initialState, action) =>
return { ...state, mediaPerms };
}
case 'SET_AUDIO_MUTED':
{
const { audioMuted } = action.payload;
return { ...state, audioMuted };
}
case 'SET_VIDEO_MUTED':
{
const { videoMuted } = action.payload;
return { ...state, videoMuted };
}
default:
return state;
}