Ensure sidebar settings state is not reset on sidebar toggle

master
Torjus 2018-07-23 10:14:00 +02:00
parent 4431a40297
commit 0260186c65
2 changed files with 72 additions and 97 deletions

View File

@ -14,49 +14,13 @@ const modes = [ {
label : 'Filmstrip view' label : 'Filmstrip view'
} ]; } ];
class Settings extends React.Component const findOption = (options, value) => options.find((option) => option.value === value);
const Settings = ({
room, me, onToggleAdvancedMode, handleChangeWebcam,
handleChangeAudioDevice, handleChangeMode
}) =>
{ {
state = {
selectedCamera : null,
selectedAudioDevice : null,
selectedMode : modes[0]
};
handleChangeWebcam = (webcam) =>
{
this.props.handleChangeWebcam(webcam.value);
this.setState({
selectedCamera : webcam
});
}
handleChangeAudioDevice = (device) =>
{
this.props.handleChangeAudioDevice(device.value);
this.setState({
selectedAudioDevice : device
});
}
handleChangeMode = (mode) =>
{
this.setState({
selectedMode : mode
});
this.props.handleChangeMode(mode.value);
};
render()
{
const {
room,
me,
onToggleAdvancedMode
} = this.props;
let webcams; let webcams;
let webcamText; let webcamText;
@ -89,16 +53,16 @@ class Settings extends React.Component
<Dropdown <Dropdown
disabled={!me.canChangeWebcam} disabled={!me.canChangeWebcam}
options={webcams} options={webcams}
value={this.state.selectedCamera} value={findOption(webcams, me.selectedWebcam)}
onChange={this.handleChangeWebcam} onChange={(webcam) => handleChangeWebcam(webcam.value)}
placeholder={webcamText} placeholder={webcamText}
/> />
<Dropdown <Dropdown
disabled={!me.canChangeAudioDevice} disabled={!me.canChangeAudioDevice}
options={audioDevices} options={audioDevices}
value={this.state.selectedAudioDevice} value={findOption(audioDevices, me.selectedAudioDevice)}
onChange={this.handleChangeAudioDevice} onChange={(device) => handleChangeAudioDevice(device.value)}
placeholder={audioDevicesText} placeholder={audioDevicesText}
/> />
@ -112,14 +76,13 @@ class Settings extends React.Component
<Dropdown <Dropdown
options={modes} options={modes}
value={this.state.selectedMode} value={findOption(modes, room.mode)}
onChange={this.handleChangeMode} onChange={(mode) => handleChangeMode(mode.value)}
/> />
</div> </div>
</div> </div>
); );
} };
}
Settings.propTypes = Settings.propTypes =
{ {

View File

@ -22,7 +22,9 @@ const initialState =
raiseHand : false, raiseHand : false,
raiseHandInProgress : false, raiseHandInProgress : false,
restartIceInProgress : false, restartIceInProgress : false,
picture : null picture : null,
selectedWebcam : null,
selectedAudioDevice : null
}; };
const me = (state = initialState, action) => const me = (state = initialState, action) =>
@ -49,6 +51,16 @@ const me = (state = initialState, action) =>
}; };
} }
case 'CHANGE_WEBCAM':
{
return { ...state, selectedWebcam: action.payload.deviceId };
}
case 'CHANGE_AUDIO_DEVICE':
{
return { ...state, selectedAudioDevice: action.payload.deviceId };
}
case 'SET_MEDIA_CAPABILITIES': case 'SET_MEDIA_CAPABILITIES':
{ {
const { canSendMic, canSendWebcam } = action.payload; const { canSendMic, canSendWebcam } = action.payload;