Make Settings inputs controlled

master
Torjus 2018-07-20 10:16:32 +02:00
parent d4e65e0c1b
commit 0c3eb4f154
1 changed files with 28 additions and 9 deletions

View File

@ -8,9 +8,27 @@ import Dropdown from 'react-dropdown';
class Settings extends React.Component class Settings extends React.Component
{ {
constructor(props) state = {
selectedCamera: null,
selectedAudioDevice: null
};
handleChangeWebcam = (webcam) =>
{ {
super(props); this.props.handleChangeWebcam(webcam);
this.setState({
selectedCamera: webcam
});
}
handleChangeAudioDevice = (device) =>
{
this.props.handleChangeAudioDevice(device);
this.setState({
selectedAudioDevice: device
});
} }
render() render()
@ -18,8 +36,6 @@ class Settings extends React.Component
const { const {
room, room,
me, me,
handleChangeWebcam,
handleChangeAudioDevice,
onToggleAdvancedMode onToggleAdvancedMode
} = this.props; } = this.props;
@ -55,21 +71,24 @@ class Settings extends React.Component
<Dropdown <Dropdown
disabled={!me.canChangeWebcam} disabled={!me.canChangeWebcam}
options={webcams} options={webcams}
onChange={handleChangeWebcam} value={this.state.selectedCamera}
onChange={this.handleChangeWebcam}
placeholder={webcamText} placeholder={webcamText}
/> />
<Dropdown <Dropdown
disabled={!me.canChangeAudioDevice} disabled={!me.canChangeAudioDevice}
options={audioDevices} options={audioDevices}
onChange={handleChangeAudioDevice} value={this.state.selectedAudioDevice}
onChange={this.handleChangeAudioDevice}
placeholder={audioDevicesText} placeholder={audioDevicesText}
/> />
<input <input
id='room-mode'
type='checkbox' type='checkbox'
defaultChecked={room.advancedMode} checked={room.advancedMode}
onChange={onToggleAdvancedMode} onChange={onToggleAdvancedMode}
/> />
<span>Advanced mode</span> <label htmlFor='room-mode'>Advanced mode</label>
</div> </div>
</div> </div>
); );