import React from 'react'; import { connect } from 'react-redux'; import * as appPropTypes from '../appPropTypes'; import { withStyles } from '@material-ui/core/styles'; import { withRoomContext } from '../../RoomContext'; import PropTypes from 'prop-types'; import { useIntl, FormattedMessage } from 'react-intl'; import MenuItem from '@material-ui/core/MenuItem'; import FormHelperText from '@material-ui/core/FormHelperText'; import FormControl from '@material-ui/core/FormControl'; import Select from '@material-ui/core/Select'; const styles = (theme) => ({ setting : { padding : theme.spacing(2) }, formControl : { display : 'flex' } }); const MediaSettings = ({ roomClient, me, settings, classes }) => { const intl = useIntl(); const resolutions = [ { value : 'low', label : intl.formatMessage({ id : 'label.low', defaultMessage : 'Low' }) }, { value : 'medium', label : intl.formatMessage({ id : 'label.medium', defaultMessage : 'Medium' }) }, { value : 'high', label : intl.formatMessage({ id : 'label.high', defaultMessage : 'High (HD)' }) }, { value : 'veryhigh', label : intl.formatMessage({ id : 'label.veryHigh', defaultMessage : 'Very high (FHD)' }) }, { value : 'ultra', label : intl.formatMessage({ id : 'label.ultra', defaultMessage : 'Ultra (UHD)' }) } ]; let webcams; if (me.webcamDevices) webcams = Object.values(me.webcamDevices); else webcams = []; let audioDevices; if (me.audioDevices) audioDevices = Object.values(me.audioDevices); else audioDevices = []; let audioOutputDevices; if (me.audioOutputDevices) audioOutputDevices = Object.values(me.audioOutputDevices); else audioOutputDevices = []; return (
{ webcams.length > 0 ? intl.formatMessage({ id : 'settings.selectCamera', defaultMessage : 'Select video device' }) : intl.formatMessage({ id : 'settings.cantSelectCamera', defaultMessage : 'Unable to select video device' }) }
{ audioDevices.length > 0 ? intl.formatMessage({ id : 'settings.selectAudio', defaultMessage : 'Select audio device' }) : intl.formatMessage({ id : 'settings.cantSelectAudio', defaultMessage : 'Unable to select audio device' }) }
{ 'audioOutputSupportedBrowsers' in window.config && window.config.audioOutputSupportedBrowsers.includes(me.browser.name) &&
{ audioOutputDevices.length > 0 ? intl.formatMessage({ id : 'settings.selectAudioOutput', defaultMessage : 'Select audio output device' }) : intl.formatMessage({ id : 'settings.cantSelectAudioOutput', defaultMessage : 'Unable to select audio output device' }) }
}
); }; MediaSettings.propTypes = { roomClient : PropTypes.any.isRequired, me : appPropTypes.Me.isRequired, settings : PropTypes.object.isRequired, classes : PropTypes.object.isRequired }; const mapStateToProps = (state) => { return { me : state.me, settings : state.settings }; }; export default withRoomContext(connect( mapStateToProps, null, null, { areStatesEqual : (next, prev) => { return ( prev.me === next.me && prev.settings === next.settings ); } } )(withStyles(styles)(MediaSettings)));