diff --git a/client/src/pages/room/[slug].jsx b/client/src/pages/room/[slug].jsx index 39d39e3..e3e1735 100644 --- a/client/src/pages/room/[slug].jsx +++ b/client/src/pages/room/[slug].jsx @@ -6,17 +6,19 @@ import peer from '@/service/peer'; const RoomPage = () => { const socket = useSocket(); const [remoteSocketId, setRemoteSocketId] = useState(null); - const [myStream, setMyStream] = useState(null) - const [remoteStream, setRemoteStream] = useState(null) + const [myStream, setMyStream] = useState(null); + const [remoteStream, setRemoteStream] = useState(null); + const [isAudioMute, setIsAudioMute] = useState(false); + const [isVideoOnHold, setIsVideoOnHold] = useState(false); const handleUserJoined = useCallback(({ email, id }) => { - console.log(`Email ${email} joined the room!`); + //! console.log(`Email ${email} joined the room!`); setRemoteSocketId(id); }, []); const handleIncomingCall = useCallback(async ({ from, offer }) => { setRemoteSocketId(from); - // console.log(`incoming call from ${from} with offer ${offer}`); + //! console.log(`incoming call from ${from} with offer ${offer}`); const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true @@ -35,7 +37,7 @@ const RoomPage = () => { const handleCallAccepted = useCallback(({ from, ans }) => { peer.setLocalDescription(ans); - // console.log("Call Accepted"); + //! console.log("Call Accepted"); sendStreams(); }, [sendStreams]); @@ -87,7 +89,8 @@ const RoomPage = () => { socket.off("peer:nego:final", handleNegoFinal); }; }, - [socket, + [ + socket, handleUserJoined, handleIncomingCall, handleCallAccepted, @@ -101,19 +104,40 @@ const RoomPage = () => { video: true }); + if (isAudioMute) { + const audioTracks = stream.getAudioTracks(); + audioTracks.forEach(track => track.enabled = false); + } + + const videoTracks = stream.getVideoTracks(); + if (isVideoOnHold) { + videoTracks.forEach(track => track.enabled = false); + } + //! create offer const offer = await peer.getOffer(); //* send offer to remote user socket.emit("user:call", { to: remoteSocketId, offer }) // set my stream setMyStream(stream); - }, [remoteSocketId, socket]); + }, [remoteSocketId, socket, isAudioMute, isVideoOnHold]); + + + const handleToggleAudio = () => { + peer.toggleAudio(); + setIsAudioMute(!isAudioMute); + }; + + const handleToggleVideo = () => { + peer.toggleVideo(); + setIsVideoOnHold(!isVideoOnHold); + } return (