import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';

/**
 * Estrategia personalizada que evita la reutilización de rutas
 * para asegurar que los componentes se vuelvan a crear en cada navegación
 */
export class CustomRouteReuseStrategy implements RouteReuseStrategy {
  /**
   * No almacenar ninguna ruta al desactivarse
   */
  shouldDetach(route: ActivatedRouteSnapshot): boolean {
    return false;
  }

  /**
   * No hay rutas almacenadas, así que esto nunca se llama
   */
  store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle | null): void {}

  /**
   * No recuperar rutas almacenadas
   */
  shouldAttach(route: ActivatedRouteSnapshot): boolean {
    return false;
  }

  /**
   * No hay rutas almacenadas, así que esto nunca se llama
   */
  retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {
    return null;
  }

  /**
   * No reutilizar rutas para forzar la recreación de componentes
   */
  shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
    // Solo reutilizar si es la misma ruta exactamente (evita problemas con rutas anidadas)
    return future.routeConfig === curr.routeConfig && 
           JSON.stringify(future.params) === JSON.stringify(curr.params);
  }
}