'use client';

import { useEffect, useState } from 'react';
import { useRouter, usePathname } from 'next/navigation';
import { isAuthenticated } from '@/lib/auth';

export default function AuthGuard({ children }: { children: React.ReactNode }) {
    const router = useRouter();
    const pathname = usePathname();
    const [authorized, setAuthorized] = useState(false);

    useEffect(() => {
        const checkAuth = () => {
            const isAuth = isAuthenticated();

            if (!isAuth) {
                setAuthorized(false);
                // Evitar redirect loop se já estiver no login (embora o AuthGuard deva ser usado apenas em rotas protegidas)
                if (pathname !== '/login') {
                    router.push('/login');
                }
            } else {
                setAuthorized(true);
            }
        };

        checkAuth();

        // Opcional: Adicionar listener para storage events para logout em outras abas
        const handleStorageChange = (e: StorageEvent) => {
            if (e.key === 'token' || e.key === 'user') {
                checkAuth();
            }
        };

        window.addEventListener('storage', handleStorageChange);
        return () => window.removeEventListener('storage', handleStorageChange);
    }, [router, pathname]);

    // Enquanto verifica, não renderiza nada ou um loading
    // Para evitar "flash" de conteúdo não autorizado
    if (!authorized) {
        return null;
    }

    return <>{children}</>;
}
