Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 'use client' /** * GameModeProviderWithHooks - Wrapper that wires up hooks to GameModeProvider * * This file exists to break the import chain for bundle splitting: * - GameModeContext.tsx has NO hook imports (small chunk, shared by default context) * - This file imports the hooks (only loaded by arcade pages) * * Practice pages don't import this file, so they don't pull in: * - useUserPlayers (and its dependencies) * - useRoomData (and socket.io client) * - useUserId */ import type { ReactNode } from 'react' import { useRoomData } from '@/hooks/useRoomData' import { useCreatePlayer, useDeletePlayer, useUpdatePlayer, useUserPlayers, } from '@/hooks/useUserPlayers' import { useUserId } from '@/hooks/useUserId' import { GameModeProvider } from './GameModeContext' interface GameModeProviderWithHooksProps { children: ReactNode } export function GameModeProviderWithHooks({ children }: GameModeProviderWithHooksProps) { // All hooks are called here, keeping them out of GameModeContext.tsx const { data: dbPlayers = [], isLoading } = useUserPlayers() const { mutate: createPlayer } = useCreatePlayer() const { mutate: updatePlayerMutation } = useUpdatePlayer() const { mutate: deletePlayer } = useDeletePlayer() const { roomData, notifyRoomOfPlayerUpdate } = useRoomData() const { data: viewerId } = useUserId() return ( <GameModeProvider dbPlayers={dbPlayers} isLoading={isLoading} createPlayer={createPlayer} updatePlayerMutation={updatePlayerMutation} deletePlayer={deletePlayer} roomData={roomData} notifyRoomOfPlayerUpdate={notifyRoomOfPlayerUpdate} viewerId={viewerId} > {children} </GameModeProvider> ) } |