"use client" import { ChevronsUpDown, KeyRound, LogOut, UserRoundCog, } from "lucide-react" import { Avatar, AvatarFallback, AvatarImage, } from "@/components/ui/avatar" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar, } from "@/components/ui/sidebar" import { Skeleton } from "./ui/skeleton" import { toast } from "sonner" import { useRouter } from "next/navigation" import SetPassword from "./nav-user/SetPassword" import { useState } from "react" import { User } from "@/lib/types/user" import UserProfile from "./nav-user/UserProfile" import { AuthAPI } from "@/lib/api/client" import { useUserStore } from "@/store/useUserStore" export function NavUser({ user }: { user: User | null }) { const { isMobile } = useSidebar(); const router = useRouter(); const userStore = useUserStore(); async function logout() { try { await AuthAPI.logout(); userStore.clearUser(); toast.success('登出成功'); router.replace('/console/login'); } catch { toast.error('登出失败,请稍后再试'); } } const [userProfileOpen, setUserProfileOpen] = useState(false); const [passwordOpen, setPasswordOpen] = useState(false); return ( <> { user ? <> U {user.nickname} {user.username} > : } { user ? U {user.nickname} {user.username} : } setTimeout(() => setUserProfileOpen(true), 0)}> 账户信息 setTimeout(() => setPasswordOpen(true), 0)}> 修改密码 登出 > ) }