import './ErrorState.css';
import { InwinkApiError } from '../../hooks/useInwinkApi';

interface ErrorStateProps {
  error: unknown;
  /** Callback de relance ; affiche un bouton « Réessayer » si fourni. */
  onRetry?: () => void;
}

function describe(error: unknown): string {
  if (error instanceof InwinkApiError) {
    return error.status === 403
      ? "Vous n'avez pas les droits pour cette action (403)."
      : `Erreur lors de l'appel à l'API inwink (code ${error.status}).`;
  }
  if (error instanceof Error) return error.message;
  return String(error);
}

/** Affiche une erreur d'appel API de façon lisible (gère `InwinkApiError`). */
export default function ErrorState({ error, onRetry }: ErrorStateProps) {
  return (
    <div className="error-state" role="alert">
      <p className="error-state__message">{describe(error)}</p>
      {onRetry && <button onClick={onRetry}>Réessayer</button>}
    </div>
  );
}
