import { useEffect, useRef } from 'react';

// Hace que el boton "atras" (Android o navegador) CIERRE el modal/panel en vez de
// salir de la pagina. Se usa dentro de un componente de modal que se monta al
// abrir y se desmonta al cerrar.
//
// Al montar empuja un estado al historial. Si el usuario da "atras", se dispara
// popstate y cerramos el modal. Si el modal se cierra por otra via (boton X /
// tocar afuera), al desmontar consumimos ese estado para no dejar una entrada
// fantasma en el historial.
export function useCerrarConAtras(onCerrar: () => void) {
  const ref = useRef(onCerrar);
  ref.current = onCerrar;
  useEffect(() => {
    window.history.pushState({ gxOverlay: true }, '');
    const onPop = () => ref.current();
    window.addEventListener('popstate', onPop);
    return () => {
      window.removeEventListener('popstate', onPop);
      if ((window.history.state as { gxOverlay?: boolean } | null)?.gxOverlay) {
        window.history.back();
      }
    };
  }, []);
}
