// DraftAdmin.jsx import React, { useEffect, useState, useRef } from "react"; import { useWebSocket } from "../common/WebSocketContext.jsx"; import { WebSocketStatus } from "../common/WebSocketStatus.jsx"; import { DraftMessage, DraftPhaseLabel, DraftPhases } from '../constants.js'; import { fetchDraftDetails, handleUserIdentifyMessages, isEmptyObject } from "../common/utils.js"; import { DraftMoviePool } from "../common/DraftMoviePool.jsx"; import { ParticipantList } from "../common/ParticipantList.jsx"; import { DraftCountdownClock } from "../common/DraftCountdownClock.jsx" import { handleDraftStatusMessages } from '../common/utils.js' // import { Collapse } from 'bootstrap/dist/js/bootstrap.bundle.min.js'; import { Collapse, ListGroup } from "react-bootstrap"; const NominateMenu = ({ socket, draftState, draftDetails, currentUser, }) => { if (!socket || isEmptyObject(draftDetails) || isEmptyObject(draftState)) return; const [open, setOpen] = useState(false); const { movies } = draftDetails const requestNomination = (event) => { event.preventDefault() const formData = new FormData(event.target) socket.send(JSON.stringify({ type: DraftMessage.NOMINATION_SUBMIT_REQUEST, payload: { id: formData.get('movie'), user: currentUser } })) } useEffect(() => { if (isEmptyObject(draftState) || isEmptyObject(draftState.current_pick)) return; if (currentUser == draftState.current_pick.participant) { setOpen(true) } else { setOpen(false) } // collapse.toggle() }, [draftState]) return (
{/* Everything must be wrapped in one parent */}
); } export const DraftParticipant = ({ draftSessionId }) => { const socket = useWebSocket(); const [draftState, setDraftState] = useState({}); const [draftDetails, setDraftDetails] = useState({}); const [currentUser, setCurrentUser] = useState(null); const [movies, setMovies] = useState([]); console.log(socket) useEffect(() => { fetchDraftDetails(draftSessionId) .then((data) => { console.log("Fetched draft data", data) setMovies(data.movies) setDraftDetails(data) }) }, [draftSessionId]) useEffect(() => { if (!socket) return; socket.onclose = (event) => { console.log('Websocket Closed') } }, [socket]) useEffect(() => { if (!socket) return; const draftStatusMessageHandler = (event) => handleDraftStatusMessages(event, setDraftState) const userIdentifyMessageHandler = (event) => handleUserIdentifyMessages(event, setCurrentUser) socket.addEventListener('message', draftStatusMessageHandler); socket.addEventListener('message', userIdentifyMessageHandler); return () => { socket.removeEventListener('message', draftStatusMessageHandler); socket.removeEventListener('message', userIdentifyMessageHandler); }; }, [socket]); function submitBidRequest(event) { event.preventDefault() const form = event.target const formData = new FormData(form) console.log('submitting bid...') socket.send(JSON.stringify({ type: DraftMessage.BID_PLACE_REQUEST, payload: { bid_amount: formData.get('bidAmount'), user: currentUser } })) } return (

Draft Live

{DraftPhaseLabel[draftState.phase]}
{console.log("draft_state", draftState)}
Round {draftState.current_pick?.round}
Pick {draftState.current_pick?.pick_in_round}
{draftState.current_pick?.overall + 1} Overall
{draftState.bids?.length > 0 ? Math.max(draftState.bids?.map(i=>i.bid_amount)) : ""}
highest bid
    {draftState.bids?.map((bid, idx) => (
  1. {bid.user}: {bid.amount}
  2. ))}
  • Current Pick: {draftState.current_pick?.participant}
  • Next Pick: {draftState.next_picks ? draftState.next_picks[0]?.participant : ""}

Draft Catalog

Current Nomination: {movies.find(i => draftState.current_movie == i.id)?.title}

My Team

Teams

); };