From b181182c3b985e681327ba9b788bbbb2226622a3 Mon Sep 17 00:00:00 2001 From: Felipe Cardoso Date: Sun, 2 Nov 2025 14:00:05 +0100 Subject: [PATCH] **Authentication Refactor:** Remove `authStore` and its associated tests, transitioning to the new authentication model. Add dynamic loading for `PasswordResetConfirmForm` to optimize performance. Include a theme initialization script in `layout.tsx` to prevent FOUC. --- .../confirm/PasswordResetConfirmContent.tsx | 15 +- frontend/src/app/(auth)/register/page.tsx | 16 +- frontend/src/app/layout.tsx | 28 +++- frontend/src/app/providers.tsx | 6 +- frontend/src/components/auth/AuthGuard.tsx | 2 +- .../src/components/auth/AuthInitializer.tsx | 2 +- frontend/src/components/auth/index.ts | 3 - frontend/src/components/forms/FormField.tsx | 101 ++++++++++++ frontend/src/components/forms/index.ts | 5 + frontend/src/components/forms/useFormError.ts | 91 +++++++++++ frontend/src/components/layout/Header.tsx | 2 +- frontend/src/lib/api/client.ts | 2 +- frontend/src/lib/api/hooks/useAuth.ts | 4 +- frontend/src/{ => lib}/stores/authStore.ts | 146 ++++++++++++------ frontend/src/{ => lib}/stores/index.ts | 0 .../tests/components/auth/AuthGuard.test.tsx | 2 +- .../components/auth/AuthInitializer.test.tsx | 4 +- .../tests/components/auth/LoginForm.test.tsx | 2 +- .../components/auth/RegisterForm.test.tsx | 2 +- .../tests/components/layout/Header.test.tsx | 6 +- frontend/tests/lib/api/hooks/useAuth.test.tsx | 2 +- .../tests/{ => lib}/stores/authStore.test.ts | 76 +++------ 22 files changed, 390 insertions(+), 127 deletions(-) create mode 100644 frontend/src/components/forms/FormField.tsx create mode 100644 frontend/src/components/forms/index.ts create mode 100644 frontend/src/components/forms/useFormError.ts rename frontend/src/{ => lib}/stores/authStore.ts (57%) rename frontend/src/{ => lib}/stores/index.ts (100%) rename frontend/tests/{ => lib}/stores/authStore.test.ts (84%) diff --git a/frontend/src/app/(auth)/password-reset/confirm/PasswordResetConfirmContent.tsx b/frontend/src/app/(auth)/password-reset/confirm/PasswordResetConfirmContent.tsx index 29ac05c..fc1c9c6 100644 --- a/frontend/src/app/(auth)/password-reset/confirm/PasswordResetConfirmContent.tsx +++ b/frontend/src/app/(auth)/password-reset/confirm/PasswordResetConfirmContent.tsx @@ -7,10 +7,23 @@ import { useSearchParams, useRouter } from 'next/navigation'; import { useEffect, useRef } from 'react'; -import { PasswordResetConfirmForm } from '@/components/auth/PasswordResetConfirmForm'; +import dynamic from 'next/dynamic'; import { Alert } from '@/components/ui/alert'; import Link from 'next/link'; +// Code-split PasswordResetConfirmForm (319 lines) +const PasswordResetConfirmForm = dynamic( + () => import('@/components/auth/PasswordResetConfirmForm').then((mod) => ({ default: mod.PasswordResetConfirmForm })), + { + loading: () => ( +
+
+
+
+ ), + } +); + export default function PasswordResetConfirmContent() { const searchParams = useSearchParams(); const router = useRouter(); diff --git a/frontend/src/app/(auth)/register/page.tsx b/frontend/src/app/(auth)/register/page.tsx index eb94b04..b88d2d0 100644 --- a/frontend/src/app/(auth)/register/page.tsx +++ b/frontend/src/app/(auth)/register/page.tsx @@ -1,6 +1,20 @@ 'use client'; -import { RegisterForm } from '@/components/auth/RegisterForm'; +import dynamic from 'next/dynamic'; + +// Code-split RegisterForm (313 lines) +const RegisterForm = dynamic( + () => import('@/components/auth/RegisterForm').then((mod) => ({ default: mod.RegisterForm })), + { + loading: () => ( +
+
+
+
+
+ ), + } +); export default function RegisterPage() { return ( diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index c431123..da42438 100755 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -24,7 +24,33 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - + + + {/* Theme initialization script - runs before React hydrates to prevent FOUC */} +