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'
} ];
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 webcamText;
@ -89,16 +53,16 @@ class Settings extends React.Component
<Dropdown
disabled={!me.canChangeWebcam}
options={webcams}
value={this.state.selectedCamera}
onChange={this.handleChangeWebcam}
value={findOption(webcams, me.selectedWebcam)}
onChange={(webcam) => handleChangeWebcam(webcam.value)}
placeholder={webcamText}
/>
<Dropdown
disabled={!me.canChangeAudioDevice}
options={audioDevices}
value={this.state.selectedAudioDevice}
onChange={this.handleChangeAudioDevice}
value={findOption(audioDevices, me.selectedAudioDevice)}
onChange={(device) => handleChangeAudioDevice(device.value)}
placeholder={audioDevicesText}
/>
@ -112,14 +76,13 @@ class Settings extends React.Component
<Dropdown
options={modes}
value={this.state.selectedMode}
onChange={this.handleChangeMode}
value={findOption(modes, room.mode)}
onChange={(mode) => handleChangeMode(mode.value)}
/>
</div>
</div>
);
}
}
};
Settings.propTypes =
{

View File

@ -22,7 +22,9 @@ const initialState =
raiseHand : false,
raiseHandInProgress : false,
restartIceInProgress : false,
picture : null
picture : null,
selectedWebcam : null,
selectedAudioDevice : null
};
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':
{
const { canSendMic, canSendWebcam } = action.payload;