import type { NextRequest } from 'next/server';

/**
 * Liefert die öffentlich erreichbare Base-URL für Asset-URLs, die in versendete Mails
 * eingebettet werden (z.B. Hero-Bilder, hochgeladene Inline-Assets).
 *
 * Hintergrund: `req.nextUrl.origin` ergibt im Dev-Server `http://localhost:3000`. Wenn diese
 * URL in den HTML-Snapshot gebrannt wird (Hero-Image-Render passiert zur Render-Zeit, nicht
 * zur Send-Zeit), kann der Empfänger das Bild nicht laden — sein Mail-Client kennt unsere
 * Localhost nicht. `MAILFORGE_BASE_URL` (selbe ENV wie Click-/Open-Tracking im Worker) sollte
 * im Produktiv-Deploy auf die öffentliche https-URL der App zeigen.
 *
 * Wenn die ENV gesetzt ist → gewinnt. Sonst Fallback auf `req.nextUrl.origin`
 * (lokales Testen ohne Produktiv-Versand bleibt damit funktional).
 */
export function getPublicBaseUrl(req: NextRequest): string {
  const env = process.env.MAILFORGE_BASE_URL?.trim();
  if (env) return env.replace(/\/$/, '');
  return req.nextUrl.origin;
}
