// Utilisé pour utiliser les routes configuré dans Ziggy.php
import { usePage } from '@inertiajs/vue3';
import { route as ziggyRoute, Config } from 'ziggy-js';

/**
 * Hook pour utiliser Ziggy avec la configuration injectée par Inertia.
 * Remplace l'appel global route().
 */
export function useAppRoute() {
  const page = usePage();

  return (name: string, params?: any, absolute?: boolean) => {
    // 1. Récupération sécurisée de la config
    const ziggyConfig = page.props.ziggy as Config | undefined;

    // 2. Si la config n'est pas encore chargée (cas rare de transition)
    if (!ziggyConfig || !ziggyConfig.routes) {
      // On ne plante pas, on retourne une ancre vide
      return '#';
    }

    // 3. Vérification CRITIQUE : La route existe-t-elle dans le groupe actuel ?
    if (!ziggyConfig.routes[name]) {
  
      // En DEV uniquement, on affiche un warning pour vous aider
      // if (import.meta.env.DEV) {
      //   console.warn(`[Ziggy Safe] La route '${name}' est introuvable dans le groupe actuel. Lien remplacé par '#'.`);
      // }
      
      return '#'; 
    }

    // 4. Si tout va bien, on appelle Ziggy
    try {
      return ziggyRoute(name, params, absolute, ziggyConfig);
    } catch (e) {
      console.error(`Erreur de génération de route pour ${name}`, e);
      return '#';
    }
  };
}