import { useEffect, useState } from 'react';
import { TokenStorage } from '@/services/tokenStorage';
import { apiClient } from '@/services/api/client';

/**
 * Hook pour gérer l'authentification et la persistance de session
 * T0180: Vérifie les tokens au chargement, valide avec l'API et restaure l'état utilisateur
 */
export function useAuth() {
  const [isAuthenticated, setIsAuthenticated] = useState(false);
  const [isLoading, setIsLoading] = useState(true);

  useEffect(() => {
    const checkAuth = async () => {
      // T0180: Vérifier tokens au chargement
      if (!TokenStorage.hasTokens()) {
        setIsAuthenticated(false);
        setIsLoading(false);
        return;
      }

      try {
        // T0180: Valider token avec API
        await apiClient.get('/auth/me');
        setIsAuthenticated(true);
      } catch {
        // T0180: Si le token est invalide, nettoyer et déconnecter
        TokenStorage.clearTokens();
        setIsAuthenticated(false);
      } finally {
        setIsLoading(false);
      }
    };

    checkAuth();
  }, []);

  return { isAuthenticated, isLoading };
}

