import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import * as appPropTypes from './appPropTypes'; import { withRoomContext } from '../RoomContext'; import * as stateActions from '../redux/stateActions'; import PeerView from './PeerView'; const Peer = (props) => { const { roomClient, peer, audioConsumer, videoConsumer, audioMuted, faceDetection, onSetStatsPeerId } = props; const audioEnabled = ( Boolean(audioConsumer) && !audioConsumer.locallyPaused && !audioConsumer.remotelyPaused ); const videoVisible = ( Boolean(videoConsumer) && !videoConsumer.locallyPaused && !videoConsumer.remotelyPaused ); return (
{ roomClient.setConsumerPreferredLayers( videoConsumer.id, spatialLayer, temporalLayer); }} onChangeVideoPriority={(priority) => { roomClient.setConsumerPriority(videoConsumer.id, priority); }} onRequestKeyFrame={() => { roomClient.requestConsumerKeyFrame(videoConsumer.id); }} onStatsClick={onSetStatsPeerId} />
); }; Peer.propTypes = { roomClient : PropTypes.any.isRequired, peer : appPropTypes.Peer.isRequired, audioConsumer : appPropTypes.Consumer, videoConsumer : appPropTypes.Consumer, audioMuted : PropTypes.bool, faceDetection : PropTypes.bool.isRequired, onSetStatsPeerId : PropTypes.func.isRequired }; const mapStateToProps = (state, { id }) => { const me = state.me; const peer = state.peers[id]; const consumersArray = peer.consumers .map((consumerId) => state.consumers[consumerId]); const audioConsumer = consumersArray.find((consumer) => consumer.track.kind === 'audio'); const videoConsumer = consumersArray.find((consumer) => consumer.track.kind === 'video'); return { peer, audioConsumer, videoConsumer, audioMuted : me.audioMuted, faceDetection : state.room.faceDetection }; }; const mapDispatchToProps = (dispatch) => { return { onSetStatsPeerId : (peerId) => dispatch(stateActions.setRoomStatsPeerId(peerId)) }; }; const PeerContainer = withRoomContext(connect( mapStateToProps, mapDispatchToProps )(Peer)); export default PeerContainer;