Live video on the AT Protocol
at natb/command-errors 46 lines 1.1 kB view raw
1import { 2 createContext, 3 ReactNode, 4 useContext, 5 useEffect, 6 useState, 7} from "react"; 8import { useStore } from "store"; 9 10interface FullscreenContextValue { 11 fullscreen: boolean; 12 setFullscreen: (value: boolean) => void; 13} 14 15const FullscreenContext = createContext<FullscreenContextValue | undefined>( 16 undefined, 17); 18 19export const FullscreenProvider = ({ children }: { children: ReactNode }) => { 20 const [fullscreen, setFullscreen] = useState(false); 21 22 const setSidebarHidden = useStore((state) => state.setSidebarHidden); 23 const setSidebarUnhidden = useStore((state) => state.setSidebarUnhidden); 24 25 useEffect(() => { 26 if (fullscreen) { 27 setSidebarHidden(); 28 } else { 29 setSidebarUnhidden(); 30 } 31 }, [fullscreen]); 32 33 return ( 34 <FullscreenContext.Provider value={{ fullscreen, setFullscreen }}> 35 {children} 36 </FullscreenContext.Provider> 37 ); 38}; 39 40export function useFullscreen() { 41 const ctx = useContext(FullscreenContext); 42 if (!ctx) { 43 throw new Error("useFullscreen must be used within a FullscreenProvider"); 44 } 45 return ctx; 46}