/* eslint-disable jsx-a11y/media-has-caption */ import React, { FC, useEffect, useRef } from 'react'; import { useDyteSelector } from '../../src'; const PeerView: FC<{ peerId: string, }> = ({ peerId, }) => { const { audioEnabled, audioTrack, videoEnabled, videoTrack, } = useDyteSelector( (meeting) => meeting.participants.active.get(peerId), )!; const videoRef = useRef(null); const audioRef = useRef(null); useEffect(() => { if (!audioRef.current) return; if (audioEnabled && audioTrack) { const stream = new MediaStream(); stream.addTrack(audioTrack); audioRef.current.srcObject = stream; } else { audioRef.current.srcObject = null; } }, [audioEnabled, audioTrack]); useEffect(() => { if (!videoRef.current) return; if (videoEnabled && videoTrack) { const stream = new MediaStream(); stream.addTrack(videoTrack); videoRef.current.srcObject = stream; } else { videoRef.current.srcObject = null; } }, [videoEnabled, videoTrack]); return (
); }; function ActiveParticipants() { const activeParticipants = useDyteSelector( (meeting) => meeting.participants.active, ); return (
{activeParticipants?.toArray().map((peer) => ( ))}
); } function Participants() { const roomJoined = useDyteSelector((meeting) => meeting.self.roomJoined); const joinedParticipants = useDyteSelector( (meeting) => meeting.participants.joined, ); if (!joinedParticipants || !roomJoined) { return null; } return (
Participants

Active Participants

Joined Participants

    {joinedParticipants?.toArray().map((peer) => (
  • {peer.name} {' '} - audio: {' '} {JSON.stringify(peer.audioEnabled)} , video: {' '} {JSON.stringify(peer.videoEnabled)}
  • ))}
); } export default Participants;