import { useEffect, useState, ReactNode } from 'react'; import { AccessCodeModal } from '@/components/access-code-modal'; export function AccessCodeGuard({ children }: { children: ReactNode }) { const [status, setStatus] = useState<{ enabled: boolean; authenticated: boolean; loading: boolean; }>({ enabled: false, authenticated: false, loading: true }); useEffect(() => { let cancelled = false; fetch('/api/access-code/status') .then((res) => res.json()) .then((data) => { if (!cancelled) { setStatus({ enabled: data.enabled, authenticated: data.authenticated, loading: false, }); } }) .catch(() => { if (!cancelled) { // Default to requiring auth on error — safer than silently disabling setStatus({ enabled: true, authenticated: false, loading: false }); } }); return () => { cancelled = true; }; }, []); const needsAuth = !status.loading && status.enabled && !status.authenticated; return ( <> {needsAuth && ( setStatus((s) => ({ ...s, authenticated: true }))} /> )} {children} ); }