import { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; import { debounce } from "./utils"; import { socket } from "./socket"; import { useAppSelector } from "./hooks"; import { selectSignature } from "./store/contestantSlice"; const Contestant = () => { const { room } = useParams(); const signature = useAppSelector(selectSignature); const [canBuzz, setCanBuzz] = useState(false); const [active, setActive] = useState(false); useEffect(() => { socket.emit("contestant-join", { room, signature }); socket.on("clue-clock-on", () => setCanBuzz(true)); socket.on("clue-clock-off", () => setCanBuzz(false)); socket.on("contestant-buzzed", ({ sid }) => { setCanBuzz(false); if (sid === socket.id) { setActive(true); } }); socket.on("contestant-scores", () => setActive(false)); socket.on("contestant-penalized", () => { setActive(false); setCanBuzz(true); }); }, []); const handleBuzz = debounce(() => { if (canBuzz) { socket.emit("buzz"); } }); return (
Buzz
); }; export default Contestant;