import { Player } from "@rahoot/common/types/game" import { StatusDataMap } from "@rahoot/common/types/game/status" import { createStatus, Status } from "@rahoot/web/utils/createStatus" import { create } from "zustand" type ManagerStore = { gameId: string | null status: Status | null players: Player[] setGameId: (_gameId: string | null) => void setStatus: (_name: K, _data: T[K]) => void resetStatus: () => void setPlayers: (_players: Player[] | ((_prev: Player[]) => Player[])) => void reset: () => void } const initialState = { gameId: null, status: null, players: [], } export const useManagerStore = create>((set) => ({ ...initialState, setGameId: (gameId) => set({ gameId }), setStatus: (name, data) => set({ status: createStatus(name, data) }), resetStatus: () => set({ status: null }), setPlayers: (players) => set((state) => ({ players: typeof players === "function" ? players(state.players) : players, })), reset: () => set(initialState), }))