const API_BASE_URL = process.env.NEXT_PUBLIC_MARKETPLACE_API_URL?.replace(/\/$/, "") || process.env.MARKETPLACE_API_URL?.replace(/\/$/, "") || "http://localhost:3001/api/v1"; export type WebsiteMediaItem = { id: string; imageUrl: string; linkUrl: string; title?: string; subtitle?: string; cta?: string; }; export type WebsiteHomeMedia = { slider: WebsiteMediaItem[]; standingBanners: WebsiteMediaItem[]; categories: WebsiteMediaItem[]; menuImages: WebsiteMediaItem[]; aboutUs: WebsiteMediaItem; banners: WebsiteMediaItem[]; }; function resolveMediaUrl(url: string) { if (!url) return url; if (url.startsWith("http://") || url.startsWith("https://")) return url; if (url.startsWith("/api/v1/")) { const origin = API_BASE_URL.replace(/\/api\/v1$/, ""); return `${origin}${url}`; } return url; } function mapItem(item: WebsiteMediaItem): WebsiteMediaItem { return { ...item, imageUrl: resolveMediaUrl(item.imageUrl) }; } export async function getWebsiteHomeMedia(): Promise { try { const response = await fetch(`${API_BASE_URL}/website/home-media`, { next: { revalidate: 30 }, }); if (!response.ok) return null; const data = (await response.json()) as WebsiteHomeMedia; return { slider: (data.slider ?? []).map(mapItem), standingBanners: (data.standingBanners ?? []).map(mapItem), categories: (data.categories ?? []).map(mapItem), menuImages: (data.menuImages ?? []).map(mapItem), aboutUs: mapItem(data.aboutUs), banners: (data.banners ?? []).map(mapItem), }; } catch { return null; } }