fix(admin): fix error in sidebar.tsx

- 移除了未使用的组件导入和图标映射
- 添加了用户头像动态加载功能- 使用 PrismaClient 查询用户信息
- 优化了代码结构,提高了代码可读性和性能
This commit is contained in:
fly6516 2025-06-15 16:24:32 +08:00
parent aaa8629e76
commit 4917bb4f23

View File

@ -4,27 +4,19 @@ import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarHeader,
SidebarRail,
} from "@/components/ui/sidebar";
import { NavMain } from "@/components/nav-main";
import { NavProjects } from "@/components/nav-projects";
import { TeamSwitcher } from "@/components/team-switcher";
import { NavUser } from "@/components/nav-user";
import {
AudioWaveform,
Bot,
Command,
Frame,
GalleryVerticalEnd,
Map,
PieChart,
Settings2,
SquareTerminal,
} from "lucide-react";
import { SessionProvider } from "next-auth/react";
import { SidebarProvider } from "@/components/ui/sidebar";
import { useEffect, useState } from "react";
import { PrismaClient } from "@prisma/client";
// 如果 adminData.teams 没有在别处定义,请取消注释下面的代码并提供实际值
/*
@ -33,22 +25,6 @@ const teams = [
];
*/
// 创建图标映射
type LucideIconMap = {
[key: string]: typeof AudioWaveform;
};
const lucideIconMap: LucideIconMap = {
AudioWaveform,
Bot,
Command,
Frame,
GalleryVerticalEnd,
Map,
PieChart,
Settings2,
SquareTerminal,
};
const adminData = {
// teams: [
@ -95,10 +71,33 @@ const adminData = {
export const AdminSidebar = ({ ...props }: React.ComponentProps<typeof Sidebar>) => {
const { data: session } = useSession();
const [userAvatar, setUserAvatar] = useState("");
useEffect(() => {
const fetchUserAvatar = async () => {
if (session?.user?.email) {
const prisma = new PrismaClient();
try {
const user = await prisma.user.findUnique({
where: { email: session.user.email },
select: { image: true }
});
setUserAvatar(user?.image || "");
} catch (error) {
console.error("Failed to fetch user avatar:", error);
} finally {
await prisma.$disconnect();
}
}
};
fetchUserAvatar();
}, [session?.user?.email]);
const user = {
name: session?.user?.name || "Admin",
email: session?.user?.email || "admin@example.com",
avatar: session?.user?.avatar || ""
avatar: userAvatar
};
return (