import { useEffect } from 'react';
import { useNavigate, useSearchParams } from 'react-router-dom';
import { useAuthStore } from './useAuth';

/**
 * Hook pour gérer le callback OAuth
 * Le backend redirige vers /auth/callback?token=...&user_id=...
 */
export function useOAuthCallback() {
  const [searchParams] = useSearchParams();
  const navigate = useNavigate();
  const setAuth = useAuthStore((state) => state.setAuth);

  useEffect(() => {
    const token = searchParams.get('token');
    const userId = searchParams.get('user_id');

    if (token && userId) {
      // Stocker le token dans localStorage pour l'interceptor axios
      localStorage.setItem('access_token', token);
      
      // Créer un objet utilisateur minimal avec les données disponibles
      // Le backend devrait fournir plus d'infos, mais pour l'instant on utilise ce qu'on a
      const user = {
        id: parseInt(userId, 10),
        email: '', // Sera récupéré par le store
        username: '', // Sera récupéré par le store
      };
      
      // Stocker les tokens dans le store
      // Note: Le backend devrait fournir un refresh token aussi
      setAuth(user, token, token); // Utiliser token comme refresh temporaire
      
      // Rediriger vers le dashboard
      navigate('/dashboard', { replace: true });
    } else {
      // Pas de token, rediriger vers login avec erreur
      navigate('/login', { replace: true });
    }
  }, [searchParams, navigate, setAuth]);
}

