All files / web/src/contexts ArcadeSessionStateContext.tsx

0% Statements 0/26
0% Branches 0/1
0% Functions 0/1
0% Lines 0/26

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                                                     
'use client'

import { createContext, useContext } from 'react'

interface ArcadeSessionStateContextType {
  /** Whether authoritative server state has been received at least once */
  hasReceivedServerState: boolean
}

/**
 * Context for exposing arcade session state signals to parent components.
 *
 * Game Providers publish hasReceivedServerState here so that framework-level
 * components (like GameBreakSpectatorView) can show a loading gate until
 * the game has received its initial server state.
 *
 * Default value is true so that non-spectator usage (normal arcade play)
 * works without any wrapping Provider — the gate passes through immediately.
 */
export const ArcadeSessionStateContext = createContext<ArcadeSessionStateContextType>({
  hasReceivedServerState: true,
})

export function useArcadeSessionState() {
  return useContext(ArcadeSessionStateContext)
}