From 9ea54ed90ffec958f1a59b4349c7c5b877a08b6c Mon Sep 17 00:00:00 2001 From: Nathan Lamy Date: Wed, 30 Jul 2025 13:08:43 +0200 Subject: [PATCH] fix: invalidate user cache on logout --- app/components/user-dropdown.tsx | 56 +++++++++++++++++--------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/app/components/user-dropdown.tsx b/app/components/user-dropdown.tsx index 4e68464..8115d7f 100644 --- a/app/components/user-dropdown.tsx +++ b/app/components/user-dropdown.tsx @@ -21,6 +21,7 @@ import { // import { useTheme } from "~/components/ui/theme-provider"; import { useNavigate } from "react-router"; import { logout, type User } from "~/lib/api"; +import { useQueryClient } from "@tanstack/react-query"; export default function UserDropdown({ user }: { user: User }) { // TODO: const { theme, setTheme } = useTheme(); @@ -28,14 +29,22 @@ export default function UserDropdown({ user }: { user: User }) { const [open, setOpen] = useState(false); const navigate = useNavigate(); - const handleLogout = async () => { - try { - await logout(); - navigate("/login", { replace: true }); - } catch (error) { - console.error("Logout failed:", error); - } - } + const useLogout = () => { + const queryClient = useQueryClient(); + + // Logout, invalidate user cache, and redirect to login + return async () => { + try { + await logout(); + queryClient.removeQueries({ queryKey: ["user"] }); + navigate("/login", { replace: true }); + } catch (error) { + console.error("Logout failed:", error); + } + }; + }; + + const handleLogout = useLogout(); return ( @@ -57,9 +66,7 @@ export default function UserDropdown({ user }: { user: User }) {
-

- {user.fullName} -

+

{user.fullName}

{user.className}

@@ -87,29 +94,26 @@ export default function UserDropdown({ user }: { user: User }) { e.stopPropagation(); e.preventDefault(); navigate("/settings"); - }}> + }} + > - - Paramètres - + Paramètres - { - e.stopPropagation(); - e.preventDefault(); - navigate("/progress"); - }}> + { + e.stopPropagation(); + e.preventDefault(); + navigate("/progress"); + }} + > - - Progression - + Progression - Se déconnecter + Se déconnecter