import type { FetchBaseQueryError } from "@reduxjs/toolkit/query";

interface BackendErrorEnvelope {
  success?: false;
  error?: { code?: string; message?: string };
}

export function getApiErrorMessage(
  err: unknown,
  fallback = "Something went wrong. Please try again.",
): string {
  if (!err) return fallback;
  if (typeof err === "string") return err;
  if (err instanceof Error) return err.message;
  const e = err as FetchBaseQueryError & { data?: BackendErrorEnvelope };
  if (e?.data?.error?.message) return e.data.error.message;
  if (typeof e?.status === "number") {
    return e.status === 0
      ? "Network error. Please check your connection and try again."
      : `Request failed (${e.status})`;
  }
  return fallback;
}
