import { resolveUploadUrl } from "@/lib/uploadUrl";
import type { CarGalleryImage } from "@/lib/types";

/** Minimal shape needed to resolve a car's hero / card thumbnail image. */
export type CarHeroImageSource = {
  primaryImage?: string | null;
  imageGallery?: CarGalleryImage[] | null;
  imageUrl?: string | null;
  /** Legacy gallery — last-resort fallback during migration. */
  images?: { url: string; isPrimary?: boolean; alt?: string }[] | null;
};

/** Raw stored path or URL for the car's primary display image. */
export function getCarHeroImage(car: CarHeroImageSource): string | null {
  if (car.primaryImage) return car.primaryImage;
  const galleryPrimary = car.imageGallery?.find((i) => i.isPrimary)?.url;
  if (galleryPrimary) return galleryPrimary;
  const galleryFirst = car.imageGallery?.[0]?.url;
  if (galleryFirst) return galleryFirst;
  if (car.imageUrl) return car.imageUrl;
  const legacyFirst = car.images?.[0]?.url;
  if (legacyFirst) return legacyFirst;
  return null;
}

/** Absolute, backend-resolved URL safe for `<Image src={…} />`. */
export function resolveCarHeroImage(car: CarHeroImageSource): string | null {
  const raw = getCarHeroImage(car);
  return raw ? resolveUploadUrl(raw) : null;
}
export function hasCarHeroImage(car: CarHeroImageSource): boolean {
  return getCarHeroImage(car) !== null;
}

