import { useRoomContext } from '@livekit/components-react'; import { Participant, RemoteParticipant } from 'livekit-client'; import { MicOffSVG, MicOnSVG } from '../svg/mic'; import { CameraOffSVG, CameraOnSVG } from '../svg/camera'; import { ScreenShareOnSVG } from '../svg/screen-share'; import { getAvatarColor, getInitials } from '@/lib/client-utils'; import { useCustomLayoutContext } from '../contexts/layout-context'; const ParticipantList = () => { const room = useRoomContext(); const { localParticipant, remoteParticipants } = room; const { isParticipantsListOpen } = useCustomLayoutContext(); function ToggleParticipantList() { if (isParticipantsListOpen.dispatch) isParticipantsListOpen.dispatch({ msg: 'toggle_participants_list' }); } return (
{room.numParticipants} Participants
close
{[...remoteParticipants.entries()].map((participant) => { return ; })}
); }; export default ParticipantList; interface ParticipantItemProps { participant: Participant; } const ParticipantItem: React.FC = ({ participant }) => { const profilePictureUrl = participant.metadata ? JSON.parse(participant.metadata).profilePictureUrl : null; return (
{profilePictureUrl ? ( {participant.name} ) : (
{getInitials(participant.name || participant.identity)}
)}
{participant.name}
{participant.isScreenShareEnabled ? : <>} {participant.isCameraEnabled ? : } {participant.isMicrophoneEnabled ? : }
); };