import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import classnames from 'classnames'; import * as appPropTypes from './appPropTypes'; import * as requestActions from '../redux/requestActions'; const Sidebar = ({ toolbarsVisible, me, screenProducer, onLogin, onShareScreen, onUnShareScreen, onNeedExtension, onLeaveMeeting }) => { let screenState; let screenTip; if (me.needExtension) { screenState = 'need-extension'; screenTip = 'Install screen sharing extension'; } else if (!me.canShareScreen) { screenState = 'unsupported'; screenTip = 'Screen sharing not supported'; } else if (screenProducer) { screenState = 'on'; screenTip = 'Stop screen sharing'; } else { screenState = 'off'; screenTip = 'Start screen sharing'; } return (
{ switch (screenState) { case 'on': { onUnShareScreen(); break; } case 'off': { onShareScreen(); break; } case 'need-extension': { onNeedExtension(); break; } default: { break; } } }} /> {me.loginEnabled ?
onLogin()} /> :null }
onLeaveMeeting()} />
); }; Sidebar.propTypes = { toolbarsVisible : PropTypes.bool.isRequired, me : appPropTypes.Me.isRequired, onShareScreen : PropTypes.func.isRequired, onUnShareScreen : PropTypes.func.isRequired, onNeedExtension : PropTypes.func.isRequired, onLeaveMeeting : PropTypes.func.isRequired, onLogin : PropTypes.func.isRequired, screenProducer : appPropTypes.Producer }; const mapStateToProps = (state) => ({ toolbarsVisible : state.room.toolbarsVisible, screenProducer : Object.values(state.producers) .find((producer) => producer.source === 'screen'), me : state.me }); const mapDispatchToProps = { onLeaveMeeting : requestActions.leaveRoom, onShareScreen : requestActions.enableScreenSharing, onUnShareScreen : requestActions.disableScreenSharing, onNeedExtension : requestActions.installExtension, onLogin : requestActions.userLogin }; export default connect( mapStateToProps, mapDispatchToProps )(Sidebar);