import React from 'react'; import { connect } from 'react-redux'; import ReactTooltip from 'react-tooltip'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import ClipboardButton from 'react-clipboard.js'; import * as appPropTypes from './appPropTypes'; import * as requestActions from '../redux/requestActions'; import { Appear } from './transitions'; import Me from './Me'; import Peers from './Peers'; import Notifications from './Notifications'; import ChatWidget from './ChatWidget'; class Room extends React.Component { render() { const { room, me, amActiveSpeaker, onRoomLinkCopy, onSetAudioMode, onRestartIce, onToggleHand, onLeaveMeeting } = this.props; return (

{room.state}

{ // If this is a 'Open in new window/tab' don't prevent // click default action. if ( event.ctrlKey || event.shiftKey || event.metaKey || // Middle click (IE > 9 and everyone else). (event.button && event.button === 1) ) { return; } event.preventDefault(); }} > invitation link
onSetAudioMode(!me.audioOnly)} />
onRestartIce()} />
onToggleHand(!me.raiseHand)} />
onLeaveMeeting()} />
); } } Room.propTypes = { room : appPropTypes.Room.isRequired, me : appPropTypes.Me.isRequired, amActiveSpeaker : PropTypes.bool.isRequired, onRoomLinkCopy : PropTypes.func.isRequired, onSetAudioMode : PropTypes.func.isRequired, onRestartIce : PropTypes.func.isRequired, onToggleHand : PropTypes.func.isRequired, onLeaveMeeting : PropTypes.func.isRequired }; const mapStateToProps = (state) => { return { room : state.room, me : state.me, amActiveSpeaker : state.me.name === state.room.activeSpeakerName }; }; const mapDispatchToProps = (dispatch) => { return { onRoomLinkCopy : () => { dispatch(requestActions.notify( { text : 'Room link copied to the clipboard' })); }, onSetAudioMode : (enable) => { if (enable) dispatch(requestActions.enableAudioOnly()); else dispatch(requestActions.disableAudioOnly()); }, onRestartIce : () => { dispatch(requestActions.restartIce()); }, onToggleHand : (enable) => { if (enable) dispatch(requestActions.raiseHand()); else dispatch(requestActions.lowerHand()); }, onLeaveMeeting : () => { dispatch(requestActions.leaveRoom()); } }; }; const RoomContainer = connect( mapStateToProps, mapDispatchToProps )(Room); export default RoomContainer;