export const useTimeAgo = () => {
  const formatTimeAgo = (dateInput: string | Date | number): string => {
    const date = new Date(dateInput);

    // Validar si la fecha es correcta
    if (isNaN(date.getTime())) {
      return 'Fecha inválida';
    }

    const now = new Date();
    const secondsDiff = Math.floor((now.getTime() - date.getTime()) / 1000);

    // Si la fecha proporcionada es futura
    if (secondsDiff < 0) {
      return 'En el futuro';
    }

    // Definición de intervalos en segundos
    const intervals = [
      { label: 'año', seconds: 31536000 },
      { label: 'mes', seconds: 2592000 },
      { label: 'día', seconds: 86400 },
      { label: 'hora', seconds: 3600 },
      { label: 'minuto', seconds: 60 },
      { label: 'segundo', seconds: 1 }
    ];

    // Buscar el intervalo que corresponda
    for (const interval of intervals) {
      const count = Math.floor(secondsDiff / interval.seconds);

      if (count >= 1) {
        const plural = count > 1 ? (interval.label === 'mes' ? 'es' : 's') : '';
        return `Hace ${count} ${interval.label}${plural}`;
      }
    }

    return 'Hace un momento';
  };

  return {
    formatTimeAgo
  };
};