import { useEffect } from 'react';
import { useNavigate, useSearchParams } from 'react-router-dom';
import { useAuthStore } from '../store/authStore';
import { TokenStorage } from '@/services/tokenStorage';

/**
 * 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 { checkAuthStatus } = useAuthStore();

  useEffect(() => {
    const token = searchParams.get('token');
    const refreshToken = searchParams.get('refresh_token') || token; // Fallback si pas de refresh token

    if (token) {
      // Stocker les tokens dans TokenStorage
      if (refreshToken) {
        TokenStorage.setTokens(token, refreshToken);
      } else {
        TokenStorage.setTokens(token, token); // Utiliser token comme refresh temporaire
      }

      // Vérifier l'authentification et récupérer les infos utilisateur
      checkAuthStatus()
        .then(() => {
          // Rediriger vers le dashboard
          navigate('/dashboard', { replace: true });
        })
        .catch(() => {
          // En cas d'erreur, rediriger vers login
          navigate('/login', { replace: true });
        });
    } else {
      // Pas de token, rediriger vers login avec erreur
      navigate('/login', { replace: true });
    }
  }, [searchParams, navigate, checkAuthStatus]);
}
