mirror of
https://github.com/massbug/judge4c.git
synced 2025-07-04 15:50:51 +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,
|
Sidebar,
|
||||||
SidebarContent,
|
SidebarContent,
|
||||||
SidebarFooter,
|
SidebarFooter,
|
||||||
SidebarHeader,
|
|
||||||
SidebarRail,
|
SidebarRail,
|
||||||
} from "@/components/ui/sidebar";
|
} from "@/components/ui/sidebar";
|
||||||
import { NavMain } from "@/components/nav-main";
|
import { NavMain } from "@/components/nav-main";
|
||||||
import { NavProjects } from "@/components/nav-projects";
|
import { NavProjects } from "@/components/nav-projects";
|
||||||
import { TeamSwitcher } from "@/components/team-switcher";
|
|
||||||
import { NavUser } from "@/components/nav-user";
|
import { NavUser } from "@/components/nav-user";
|
||||||
import {
|
import {
|
||||||
AudioWaveform,
|
|
||||||
Bot,
|
|
||||||
Command,
|
Command,
|
||||||
Frame,
|
|
||||||
GalleryVerticalEnd,
|
|
||||||
Map,
|
|
||||||
PieChart,
|
PieChart,
|
||||||
Settings2,
|
Settings2,
|
||||||
SquareTerminal,
|
|
||||||
} from "lucide-react";
|
} 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 没有在别处定义,请取消注释下面的代码并提供实际值
|
// 如果 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 = {
|
const adminData = {
|
||||||
// teams: [
|
// teams: [
|
||||||
@ -95,10 +71,33 @@ const adminData = {
|
|||||||
|
|
||||||
export const AdminSidebar = ({ ...props }: React.ComponentProps<typeof Sidebar>) => {
|
export const AdminSidebar = ({ ...props }: React.ComponentProps<typeof Sidebar>) => {
|
||||||
const { data: session } = useSession();
|
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 = {
|
const user = {
|
||||||
name: session?.user?.name || "Admin",
|
name: session?.user?.name || "Admin",
|
||||||
email: session?.user?.email || "admin@example.com",
|
email: session?.user?.email || "admin@example.com",
|
||||||
avatar: session?.user?.avatar || ""
|
avatar: userAvatar
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
Loading…
Reference in New Issue
Block a user