import { PropsWithChildren, createContext, useContext, useEffect, useState, } from "react"; import { ClientConfig, IAppContext, ICanvasPosition } from "../types"; import { AuthSession } from "@sc07-canvas/lib/src/net"; import Network from "../lib/network"; const appContext = createContext({} as any); export const useAppContext = () => useContext(appContext); export const AppContext = ({ children }: PropsWithChildren) => { const [config, setConfig] = useState(undefined as any); const [auth, setAuth] = useState(); const [canvasPosition, setCanvasPosition] = useState(); useEffect(() => { function handleConfig(config: ClientConfig) { console.info("Server sent config", config); setConfig(config); } function handleUser(user: AuthSession) { setAuth(user); } Network.on("user", handleUser); Network.on("config", handleConfig); Network.socket.connect(); return () => { Network.off("user", handleUser); Network.off("config", handleConfig); }; }, []); return ( {config ? children : "Loading..."} ); };