import { useCallback, useEffect, useRef, useState } from "react"; import { $maxNumberActiveStreams } from "../../controller/recoil"; import { $numberActiveLines } from "../../controller/recoil"; import GetAllSocketClients from "@nirvana/core/sockets/getAllActiveSocketClients"; import { OVERLAY_ONLY_INITIAL_PRESET } from "../../electron/constants"; import Peer from "simple-peer"; import ReceiveSignal from "@nirvana/core/sockets/receiveSignal"; import SendSignal from "@nirvana/core/sockets/sendSignal"; import SocketChannels from "@nirvana/core/sockets/channels"; import toast from "react-hot-toast"; import { useRecoilState } from "recoil"; /** * @returns a video component with the stream of the peer provided * @param peer : Peer connection that is established */ function Video({ peer }: { peer: Peer }) { const videoRef = useRef(null); useEffect(() => { peer.on("stream", (remoteStream: MediaStream) => { console.log("stream coming in, adding video src object"); if (videoRef?.current) videoRef.current.srcObject = remoteStream; // check if other user muted setInterval(() => { const videoAvailabe = remoteStream .getVideoTracks() .find((track) => track.enabled); if (!videoAvailabe) console.log("someone muted!!! ooo"); }, 2000); }); peer.on("close", () => { console.log("remote user closed mediaconnection"); videoRef.current.height = 0; }); }, [videoRef]); return (