diff --git a/packages/client/src/routes/play.$roomCode.bingo.tsx b/packages/client/src/routes/play.$roomCode.bingo.tsx new file mode 100644 index 0000000..55e1c64 --- /dev/null +++ b/packages/client/src/routes/play.$roomCode.bingo.tsx @@ -0,0 +1,15 @@ +import { createFileRoute } from "@tanstack/react-router" +import { useRoomStore } from "@/stores/room-store" +import { BingoTab } from "@/components/bingo-tab" + +export const Route = createFileRoute("/play/$roomCode/bingo")({ + component: PlayBingo, +}) + +function PlayBingo() { + const { room, gameState, send } = useRoomStore() + + if (!room || !gameState) return null + + return +} diff --git a/packages/client/src/routes/play.$roomCode.board.tsx b/packages/client/src/routes/play.$roomCode.board.tsx new file mode 100644 index 0000000..fc16fdc --- /dev/null +++ b/packages/client/src/routes/play.$roomCode.board.tsx @@ -0,0 +1,15 @@ +import { createFileRoute } from "@tanstack/react-router" +import { useRoomStore } from "@/stores/room-store" +import { BoardTab } from "@/components/board-tab" + +export const Route = createFileRoute("/play/$roomCode/board")({ + component: PlayBoard, +}) + +function PlayBoard() { + const { room, gameState } = useRoomStore() + + if (!room || !gameState) return null + + return +} diff --git a/packages/client/src/routes/play.$roomCode.game.tsx b/packages/client/src/routes/play.$roomCode.game.tsx new file mode 100644 index 0000000..916463a --- /dev/null +++ b/packages/client/src/routes/play.$roomCode.game.tsx @@ -0,0 +1,15 @@ +import { createFileRoute } from "@tanstack/react-router" +import { useRoomStore } from "@/stores/room-store" +import { GameTab } from "@/components/game-tab" + +export const Route = createFileRoute("/play/$roomCode/game")({ + component: PlayGame, +}) + +function PlayGame() { + const { room, gameState, send } = useRoomStore() + + if (!room || !gameState) return null + + return +} diff --git a/packages/client/src/routes/play.$roomCode.index.tsx b/packages/client/src/routes/play.$roomCode.index.tsx new file mode 100644 index 0000000..e1881a6 --- /dev/null +++ b/packages/client/src/routes/play.$roomCode.index.tsx @@ -0,0 +1,7 @@ +import { createFileRoute, redirect } from "@tanstack/react-router" + +export const Route = createFileRoute("/play/$roomCode/")({ + beforeLoad: ({ params }) => { + throw redirect({ to: "/play/$roomCode/game", params }) + }, +}) diff --git a/packages/client/src/routes/play.$roomCode.tsx b/packages/client/src/routes/play.$roomCode.tsx index fd6b00f..ce27ee0 100644 --- a/packages/client/src/routes/play.$roomCode.tsx +++ b/packages/client/src/routes/play.$roomCode.tsx @@ -2,25 +2,19 @@ import { useEffect, useRef, useState } from "react" import { createFileRoute } from "@tanstack/react-router" import { useWebSocket } from "@/hooks/use-websocket" import { useRoomStore } from "@/stores/room-store" -import { PlayerList } from "@/components/player-list" -import { PredictionsForm } from "@/components/predictions-form" -import { JuryVoting } from "@/components/jury-voting" -import { BingoCard } from "@/components/bingo-card" -import { Leaderboard } from "@/components/leaderboard" -import { QuizBuzzer } from "@/components/quiz-buzzer" -import { RoomHeader } from "@/components/room-header" +import { RoomLayout } from "@/components/room-layout" +import { BottomNav } from "@/components/bottom-nav" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" export const Route = createFileRoute("/play/$roomCode")({ - component: PlayerView, + component: PlayLayout, }) -function PlayerView() { +function PlayLayout() { const { roomCode } = Route.useParams() const { send } = useWebSocket(roomCode) - const { room, mySessionId, connectionStatus, gameState } = useRoomStore() + const { room, mySessionId, connectionStatus } = useRoomStore() const joinSentRef = useRef(false) const [manualName, setManualName] = useState("") @@ -85,91 +79,9 @@ function PlayerView() { } return ( -
- -
- {gameState && (room.currentAct === "lobby" || room.currentAct === "pre-show") && ( -
- - send({ type: "submit_prediction", ...prediction }) - } - /> -
- )} - - {gameState && room.currentAct === "live-event" && ( - - - Jury - Bingo - - - {gameState.currentJuryRound ? ( - send({ type: "submit_jury_vote", rating })} - /> - ) : ( -
- Waiting for host to open voting... -
- )} -
- - {gameState.myBingoCard ? ( - send({ type: "tap_bingo_square", tropeId })} - /> - ) : ( -
- No bingo card yet -
- )} -
-
- )} - - {gameState && (room.currentAct === "scoring" || room.currentAct === "ended") && gameState.myPrediction && ( - {}} - /> - )} - - {gameState && room.currentAct === "scoring" && gameState.currentQuizQuestion && ( - send({ type: "buzz" })} - /> - )} - - {gameState && room.currentAct === "scoring" && ( - - )} - - {room.currentAct === "ended" && ( -
-

The party has ended. Thanks for playing!

- {gameState && } -
- )} - - -
-
+ <> + + + ) }