From 5f4be29d40c10178da02c07dd67703458dede6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Wed, 24 Oct 2018 11:23:53 +0200 Subject: [PATCH] Separated the audio from peers to their own components --- app/lib/components/Peer.jsx | 1 - app/lib/components/PeerAudio/AudioPeer.jsx | 39 ++++++++++++ app/lib/components/PeerAudio/AudioPeers.jsx | 44 ++++++++++++++ app/lib/components/PeerAudio/PeerAudio.jsx | 67 +++++++++++++++++++++ app/lib/components/Room.jsx | 3 + app/stylus/components/AudioPeers.styl | 6 ++ app/stylus/index.styl | 1 + 7 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 app/lib/components/PeerAudio/AudioPeer.jsx create mode 100644 app/lib/components/PeerAudio/AudioPeers.jsx create mode 100644 app/lib/components/PeerAudio/PeerAudio.jsx create mode 100644 app/stylus/components/AudioPeers.styl diff --git a/app/lib/components/Peer.jsx b/app/lib/components/Peer.jsx index 2aec88a..a49a688 100644 --- a/app/lib/components/Peer.jsx +++ b/app/lib/components/Peer.jsx @@ -149,7 +149,6 @@ class Peer extends Component +{ + return ( + + ); +}; + +AudioPeer.propTypes = +{ + micConsumer : appPropTypes.Consumer, + name : PropTypes.string +}; + +const mapStateToProps = (state, { name }) => +{ + const peer = state.peers[name]; + const consumersArray = peer.consumers + .map((consumerId) => state.consumers[consumerId]); + const micConsumer = + consumersArray.find((consumer) => consumer.source === 'mic'); + + return { + micConsumer + }; +}; + +const AudioPeerContainer = connect( + mapStateToProps +)(AudioPeer); + +export default AudioPeerContainer; diff --git a/app/lib/components/PeerAudio/AudioPeers.jsx b/app/lib/components/PeerAudio/AudioPeers.jsx new file mode 100644 index 0000000..3dce02e --- /dev/null +++ b/app/lib/components/PeerAudio/AudioPeers.jsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import * as appPropTypes from '../appPropTypes'; +import AudioPeer from './AudioPeer'; + +const AudioPeers = ({ peers }) => +{ + return ( +
+ { + peers.map((peer) => + { + return ( + + ); + }) + } +
+ ); +}; + +AudioPeers.propTypes = + { + peers : PropTypes.arrayOf(appPropTypes.Peer).isRequired + }; + +const mapStateToProps = (state) => +{ + const peers = Object.values(state.peers); + + return { + peers + }; +}; + +const AudioPeersContainer = connect( + mapStateToProps +)(AudioPeers); + +export default AudioPeersContainer; diff --git a/app/lib/components/PeerAudio/PeerAudio.jsx b/app/lib/components/PeerAudio/PeerAudio.jsx new file mode 100644 index 0000000..871c8c4 --- /dev/null +++ b/app/lib/components/PeerAudio/PeerAudio.jsx @@ -0,0 +1,67 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +export default class PeerAudio extends React.Component +{ + constructor(props) + { + super(props); + + // Latest received audio track. + // @type {MediaStreamTrack} + this._audioTrack = null; + } + + render() + { + return ( +