import { useState, useEffect } from 'react';

interface AuthHook {
  isAuthenticated: boolean;
  isLoading: boolean;
  checkAuth: () => boolean;
}

/**
 * Hook pour gérer l'authentification
 * 
 * Règles:
 * 1. Un utilisateur est considéré comme authentifié s'il a un token valide dans localStorage
 * 2. Le hook vérifie l'authentification au chargement et fournit un état de chargement
 * 3. Expose une méthode pour vérifier l'authentification à la demande
 */
const useAuth = (): AuthHook => {
  const [isAuthenticated, setIsAuthenticated] = useState<boolean>(false);
  const [isLoading, setIsLoading] = useState<boolean>(true);

  // Fonction pour vérifier l'authentification
  const checkAuth = (): boolean => {
    const token = localStorage.getItem('token');
    // On pourrait ajouter une vérification de validité du token ici
    return !!token;
  };

  useEffect(() => {
    // Vérifier l'authentification au chargement
    setIsAuthenticated(checkAuth());
    setIsLoading(false);
  }, []);

  return {
    isAuthenticated,
    isLoading,
    checkAuth
  };
};

export default useAuth; 