import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import classnames from 'classnames'; import Peer from './Peer'; class Filmstrip extends Component { state = { selectedPeerName : null }; handleSelectPeer = (selectedPeerName) => { this.setState((oldState) => ({ selectedPeerName : oldState.selectedPeerName === selectedPeerName ? null : selectedPeerName })); }; render() { const { activeSpeakerName, peers, advancedMode } = this.props; // Find the name of the peer which is currently speaking. This is either // the latest active speaker, or the manually selected peer. const activePeerName = this.state.selectedPeerName || activeSpeakerName; return (
{peers[activePeerName] && (
)}
{Object.keys(peers).map((peerName) => (
this.handleSelectPeer(peerName)} className={classnames('film', { selected : this.state.selectedPeerName === peerName, active : activeSpeakerName === peerName })} >
))}
); } } Filmstrip.propTypes = { activeSpeakerName : PropTypes.string, advancedMode : PropTypes.bool, peers : PropTypes.object.isRequired }; const mapStateToProps = (state) => ({ activeSpeakerName : state.room.activeSpeakerName, peers : state.peers }); export default connect( mapStateToProps )(Filmstrip);