From 42156209d80f57938bcd75d4cb6a8ce9798c3b7a Mon Sep 17 00:00:00 2001 From: zias Date: Wed, 11 Mar 2026 12:29:37 +0100 Subject: [PATCH] fix(signup): when signing up for the event and already logged in, set the email of the account --- .../components/registration/PerformerForm.tsx | 19 +++++++++++++++---- .../components/registration/WatcherForm.tsx | 19 +++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/apps/web/src/components/registration/PerformerForm.tsx b/apps/web/src/components/registration/PerformerForm.tsx index f323215..61ca36f 100644 --- a/apps/web/src/components/registration/PerformerForm.tsx +++ b/apps/web/src/components/registration/PerformerForm.tsx @@ -1,6 +1,7 @@ import { useMutation } from "@tanstack/react-query"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { toast } from "sonner"; +import { authClient } from "@/lib/auth-client"; import { inputCls, validateEmail, @@ -25,6 +26,9 @@ interface Props { } export function PerformerForm({ onBack, onSuccess }: Props) { + const { data: session } = authClient.useSession(); + const sessionEmail = session?.user?.email ?? ""; + const [data, setData] = useState({ firstName: "", lastName: "", @@ -39,6 +43,12 @@ export function PerformerForm({ onBack, onSuccess }: Props) { const [errors, setErrors] = useState({}); const [touched, setTouched] = useState>({}); + useEffect(() => { + if (sessionEmail) { + setData((prev) => ({ ...prev, email: sessionEmail })); + } + }, [sessionEmail]); + const submitMutation = useMutation({ ...orpc.submitRegistration.mutationOptions(), onSuccess: (result) => { @@ -254,14 +264,15 @@ export function PerformerForm({ onBack, onSuccess }: Props) { id="p-email" name="email" value={data.email} - onChange={handleChange} - onBlur={handleBlur} + onChange={sessionEmail ? undefined : handleChange} + onBlur={sessionEmail ? undefined : handleBlur} + readOnly={!!sessionEmail} placeholder="jouw@email.be" autoComplete="email" inputMode="email" aria-required="true" aria-invalid={touched.email && !!errors.email} - className={inputCls(!!touched.email && !!errors.email)} + className={`${inputCls(!!touched.email && !!errors.email)}${sessionEmail ? "cursor-not-allowed opacity-75" : ""}`} /> {touched.email && errors.email && ( diff --git a/apps/web/src/components/registration/WatcherForm.tsx b/apps/web/src/components/registration/WatcherForm.tsx index ae18be7..b9b475e 100644 --- a/apps/web/src/components/registration/WatcherForm.tsx +++ b/apps/web/src/components/registration/WatcherForm.tsx @@ -1,6 +1,7 @@ import { useMutation } from "@tanstack/react-query"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { toast } from "sonner"; +import { authClient } from "@/lib/auth-client"; import { calculateDrinkCard, type GuestEntry, @@ -30,6 +31,9 @@ interface Props { // ── Main watcher form ────────────────────────────────────────────────────── export function WatcherForm({ onBack, onSuccess }: Props) { + const { data: session } = authClient.useSession(); + const sessionEmail = session?.user?.email ?? ""; + const [data, setData] = useState({ firstName: "", lastName: "", @@ -43,6 +47,12 @@ export function WatcherForm({ onBack, onSuccess }: Props) { const [guestErrors, setGuestErrors] = useState([]); const [giftAmount, setGiftAmount] = useState(0); + useEffect(() => { + if (sessionEmail) { + setData((prev) => ({ ...prev, email: sessionEmail })); + } + }, [sessionEmail]); + const submitMutation = useMutation({ ...orpc.submitRegistration.mutationOptions(), onSuccess: (result) => { @@ -290,14 +300,15 @@ export function WatcherForm({ onBack, onSuccess }: Props) { id="w-email" name="email" value={data.email} - onChange={handleChange} - onBlur={handleBlur} + onChange={sessionEmail ? undefined : handleChange} + onBlur={sessionEmail ? undefined : handleBlur} + readOnly={!!sessionEmail} placeholder="jouw@email.be" autoComplete="email" inputMode="email" aria-required="true" aria-invalid={touched.email && !!errors.email} - className={inputCls(!!touched.email && !!errors.email)} + className={`${inputCls(!!touched.email && !!errors.email)}${sessionEmail ? "cursor-not-allowed opacity-75" : ""}`} /> {touched.email && errors.email && (