import { Peer, PeerControls, PeerList } from '@andyet/simplewebrtc'; import VisibilityIcon from 'material-icons-svg/components/baseline/Visibility'; import VisibilityOffIcon from 'material-icons-svg/components/baseline/VisibilityOff'; import VolumeOffIcon from 'material-icons-svg/components/baseline/VolumeOff'; import VolumeUpIcon from 'material-icons-svg/components/baseline/VolumeUp'; import React, { useContext } from 'react'; import styled from 'styled-components'; import HiddenPeers from '../contexts/HiddenPeers'; import Placeholders from '../contexts/Placeholders'; import { TalkyButton } from '../styles/button'; const Button = styled(TalkyButton)({ marginRight: '5px' }); const Container = styled.ul({ listStyle: 'none', '& li': { marginBottom: '10px' } }); interface PeerListItemProps { peer: Peer; } // PeerListItem renders the displayName and mute controls for a peer. const PeerListItem: React.SFC = ({ peer }) => { const { hiddenPeers, togglePeer } = useContext(HiddenPeers); const isHidden = hiddenPeers.includes(peer.id); return (
  • ( )} /> {peer.displayName || 'Anonymous'}
  • ); }; interface Props { roomAddress: string; } const Roster: React.SFC = ({ roomAddress }) => ( { return peers.length > 0 ? ( {peers.map(peer => ( ))} ) : ( {({ emptyRosterPlaceholder }) => (
    { if ( node && emptyRosterPlaceholder && node.childElementCount === 0 ) { const el = emptyRosterPlaceholder(); if (el) { node.appendChild(el); } } }} /> )} ); }} /> ); export default Roster;