import { NextRequest, NextResponse } from 'next/server';

export const runtime = 'nodejs';
export const dynamic = 'force-dynamic';

/**
 * DSGVO-Optout-Endpoint für Onsite-Tracking.
 *
 * Es gibt zwei Wege, sich vom Onsite-Behavior-Tracking abzumelden:
 *  1. **Client-Side**: User klickt im Mail-Footer "Verhalten auf Webseiten nicht tracken"
 *     — der Link führt zu einer Bestätigungsseite, die `mf-track.js` per
 *     `localStorage.setItem('mf_track_optout', '1')` blockiert. Dieser Endpoint
 *     liefert dafür ein kleines HTML mit JS, das den localStorage setzt.
 *  2. **Cookie-Side**: Wir setzen zusätzlich einen `mf_track_optout`-Cookie auf
 *     unserer eigenen Domain, sodass auch Browser-Wechsel/Localstorage-Cleanup-
 *     Empfänger geschützt bleiben.
 *
 * Endpoint ist GET (idempotent, kommt aus dem Footer-Link) + POST (für JS-Caller
 * die programmatisch optout-en wollen).
 *
 * Wir loggen NICHT, welcher Empfänger optout gemacht hat — DSGVO-konform sind
 * Optouts anonym. Tracking-Footer-Link kann optional `?r=<recipientId>` mitgeben,
 * was wir ignorieren.
 */

const HTML_BODY = `<!doctype html>
<html lang="de">
<head>
  <meta charset="utf-8">
  <title>Tracking deaktiviert</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
    body { font-family: system-ui, sans-serif; max-width: 600px; margin: 40px auto; padding: 0 20px; color: #222; }
    h1 { font-size: 1.5rem; }
    p { line-height: 1.6; }
    .ok { color: #047857; font-weight: 600; }
  </style>
</head>
<body>
  <h1>Tracking deaktiviert</h1>
  <p class="ok">✓ Onsite-Tracking auf Workspace-Webseiten ist für diesen Browser deaktiviert.</p>
  <p>Du erhältst weiterhin Newsletter, sofern du nicht zusätzlich den Newsletter-Abmelde-Link nutzt.</p>
  <p>Diese Einstellung wird lokal in deinem Browser gespeichert (localStorage <code>mf_track_optout</code>).
  Sie kann durch Browser-Cookie-Löschen zurückgesetzt werden.</p>
  <script>
    try {
      localStorage.setItem('mf_track_optout', '1');
    } catch (e) {
      // localStorage kann blockiert sein (Inkognito-Mode etc.) — egal, Cookie reicht
    }
  </script>
</body>
</html>`;

function setOptoutCookie(res: NextResponse): void {
  res.cookies.set('mf_track_optout', '1', {
    path: '/',
    maxAge: 60 * 60 * 24 * 365 * 5, // 5 Jahre
    sameSite: 'lax',
    secure: true,
    httpOnly: false, // mf-track.js muss den lesen können
  });
}

export async function GET() {
  const res = new NextResponse(HTML_BODY, {
    status: 200,
    headers: { 'Content-Type': 'text/html; charset=utf-8', 'Cache-Control': 'no-store' },
  });
  setOptoutCookie(res);
  return res;
}

export async function POST() {
  const res = NextResponse.json({ ok: true });
  setOptoutCookie(res);
  return res;
}
