diff --git a/src/components/nav-user.tsx b/src/components/nav-user.tsx index 2019263..f805f75 100644 --- a/src/components/nav-user.tsx +++ b/src/components/nav-user.tsx @@ -8,8 +8,12 @@ import { LogOut, Sparkles, } from "lucide-react"; - -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import { + SidebarMenu, + SidebarMenuButton, + SidebarMenuItem, + useSidebar, +} from "@/components/ui/sidebar"; import { DropdownMenu, DropdownMenuContent, @@ -19,23 +23,30 @@ import { DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; -import { - SidebarMenu, - SidebarMenuButton, - SidebarMenuItem, - useSidebar, -} from "@/components/ui/sidebar"; +import { Skeleton } from "./ui/skeleton"; +import { useLogout } from "@/features/auth/api/use-logout"; +import { useCurrent } from "@/features/auth/api/use-current"; +import { Avatar, AvatarFallback } from "@/components/ui/avatar"; -export function NavUser({ - user, -}: { - user: { - name: string; - email: string; - avatar: string; - }; -}) { +export function NavUser() { const { isMobile } = useSidebar(); + const { mutate: logout } = useLogout(); + const { data: user, isLoading } = useCurrent(); + + if (isLoading || !user) { + return ( +
+ + +
+ ); + } + + const { name, email } = user; + + const avatarFallback = name + ? name.charAt(0).toUpperCase() + : email.charAt(0).toUpperCase() ?? "U"; return ( @@ -47,12 +58,13 @@ export function NavUser({ className="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground" > - - CN + + {avatarFallback} +
- {user.name} - {user.email} + {name || "User"} + {email}
@@ -66,12 +78,15 @@ export function NavUser({
- - CN + + {avatarFallback} +
- {user.name} - {user.email} + + {name || "User"} + + {email}
@@ -98,7 +113,7 @@ export function NavUser({ - + logout()}> Log out