mirror of
https://github.com/cfngc4594/monaco-editor-lsp-next.git
synced 2025-07-04 01:10:53 +00:00
fix(admin): fix error in sidebar.tsx
- 移除了未使用的组件导入和图标映射 - 添加了用户头像动态加载功能- 使用 PrismaClient 查询用户信息 - 优化了代码结构,提高了代码可读性和性能
This commit is contained in:
parent
aaa8629e76
commit
4917bb4f23
@ -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 (
|
||||
|
Loading…
Reference in New Issue
Block a user