diff --git a/frontend/src/pages/VerifyEmailPage.tsx b/frontend/src/pages/VerifyEmailPage.tsx index 12fb49b8..0ac355a0 100644 --- a/frontend/src/pages/VerifyEmailPage.tsx +++ b/frontend/src/pages/VerifyEmailPage.tsx @@ -20,8 +20,7 @@ const SUCCESS_REDIRECT_MS = 1200 * "Already verified" state. No API call. * - Else fire `POST /auth/email/verify` exactly once (a `useRef` guard keeps * React 19 strict-mode double-invoke from double-firing the call). On - * success, refresh the auth store and bounce to `/?verified=1` so the - * dashboard surfaces a toast. + * success, refresh the auth store and bounce to `/home`. * - On error, show "Invalid or expired token" + a "Resend" CTA that calls * `POST /auth/email/send-verification`. */ @@ -70,10 +69,9 @@ export function VerifyEmailPage() { if (cancelled) return setStatus('success') toast.success('Email verified') - // Brief success state, then redirect with a query flag so the - // dashboard can re-surface confirmation if it wants to. + // Brief success state, then redirect to the dashboard. window.setTimeout(() => { - navigate('/?verified=1', { replace: true }) + navigate('/home', { replace: true }) }, SUCCESS_REDIRECT_MS) }) .catch((err) => { @@ -126,7 +124,7 @@ export function VerifyEmailPage() { Redirecting you to the dashboard…

} /> - dashboard} /> + dashboard} /> , @@ -130,7 +130,7 @@ describe('VerifyEmailPage', () => { } /> - dashboard} /> + dashboard} /> , @@ -142,7 +142,7 @@ describe('VerifyEmailPage', () => { } /> - dashboard} /> + dashboard} /> , diff --git a/frontend/src/pages/welcome/WelcomeStep3.tsx b/frontend/src/pages/welcome/WelcomeStep3.tsx index b345dfa3..be2f6309 100644 --- a/frontend/src/pages/welcome/WelcomeStep3.tsx +++ b/frontend/src/pages/welcome/WelcomeStep3.tsx @@ -39,7 +39,7 @@ function makeEmptyRow(): InviteRow { * * 1. POST `/accounts/me/invites/bulk` with populated rows. * 2. PATCH `/users/me/onboarding-step` `{step: 3, action: "complete"}`. - * 3. Navigate to `/?welcome=true` and fire a "You're all set" toast. + * 3. Navigate to `/home` and fire a "You're all set" toast. * * Partial-failure UX: rows in `failed[]` keep their input and show an * inline error. The wizard does NOT auto-advance when there are failures — @@ -109,7 +109,7 @@ export function WelcomeStep3() { await onboardingApi.updateStep({ step: 3, action: 'complete' }) await fetchUser() toast.success("You're all set!") - navigate('/?welcome=true') + navigate('/home') } const handleSendInvites = async () => { @@ -177,7 +177,7 @@ export function WelcomeStep3() { await onboardingApi.updateStep({ step: 3, action: 'skip' }) await fetchUser() toast.success("You're all set!") - navigate('/?welcome=true') + navigate('/home') } catch { setError('Could not save. Please try again.') setSubmitting(null) diff --git a/frontend/src/pages/welcome/__tests__/WelcomeStep3.test.tsx b/frontend/src/pages/welcome/__tests__/WelcomeStep3.test.tsx index c90be2dd..b6d0788e 100644 --- a/frontend/src/pages/welcome/__tests__/WelcomeStep3.test.tsx +++ b/frontend/src/pages/welcome/__tests__/WelcomeStep3.test.tsx @@ -88,7 +88,7 @@ function renderPage() { } /> - dashboard} /> + dashboard} /> , )