diff --git a/app/konto/login/components/LoginForm.tsx b/app/konto/login/components/LoginForm.tsx index 96d30fc..53b692b 100644 --- a/app/konto/login/components/LoginForm.tsx +++ b/app/konto/login/components/LoginForm.tsx @@ -1,7 +1,7 @@ "use client"; import { useState } from "react"; -import { useRouter } from "next/navigation"; +import { useRouter, useSearchParams } from "next/navigation"; import Link from "next/link"; import { Reveal } from "../../../components/Reveal"; import { mergeServerCartIntoLocal } from "../../../lib/cart"; @@ -9,6 +9,12 @@ import { dispatchAuthChanged } from "../../../lib/auth"; export function LoginForm() { const router = useRouter(); + const searchParams = useSearchParams(); + // WishlistButton (and anything else login-gated) sends the shopper back + // here with ?redirect=, e.g. a product page they + // wanted to heart — previously ignored, always landing on + // /konto/bestellungen regardless of where the login was triggered from. + const redirectTo = searchParams.get("redirect") || "/konto/bestellungen"; const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(null); @@ -32,7 +38,7 @@ export function LoginForm() { } await mergeServerCartIntoLocal(); dispatchAuthChanged(); - router.push("/konto/bestellungen"); + router.push(redirectTo); router.refresh(); } catch { setError("Login ist gerade nicht möglich."); @@ -81,11 +87,14 @@ export function LoginForm() { Passwort vergessen?

- Noch kein Konto? Einfach beim{" "} - - nächsten Einkauf - {" "} - anlegen. + Noch kein Konto?{" "} + + Jetzt anlegen + + .

); diff --git a/app/konto/login/page.tsx b/app/konto/login/page.tsx index 0162be4..45f8a32 100644 --- a/app/konto/login/page.tsx +++ b/app/konto/login/page.tsx @@ -1,4 +1,5 @@ import type { Metadata } from "next"; +import { Suspense } from "react"; import { LoginForm } from "./components/LoginForm"; import { Footer } from "../../components/Footer"; @@ -16,7 +17,12 @@ export default function KontoLoginPage() { return ( <>
- + {/* Suspense required — LoginForm uses useSearchParams() (?redirect=, + e.g. from WishlistButton's login-gate) which opts any consumer + into client-side rendering unless wrapped. */} + + +