import { redirect } from "next/navigation"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Prisma } from "@/lib/prisma"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { getWatchedUserIds } from "@/lib/services/watch"; import { UserAccountInfo } from "../../_components/user-account-info"; import { UserHero } from "../../_components/user-hero"; import { loadUserById } from "../../_lib/load-user"; import { UserActivityLog } from "../../[id]/user-activity-log"; import { UserBadgesSection } from "../../[id]/user-badges-section"; import { UserBanSection } from "../../[id]/user-ban-section"; import { UserEditForm } from "../../[id]/user-edit-form"; import { UserQuickActions } from "../../[id]/user-quick-actions"; import { UserRooms } from "../../[id]/user-rooms"; export default async function UserEditPage({ params, }: { params: Promise<{ locale: string; id: string }>; }) { const { id } = await params; const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.USERS_EDIT, session.user.rank)) { redirect("/admin"); } const data = await loadUserById(id); const watched = await getWatchedUserIds(session.user.id); // Fetch rank list from permissions table for the rank dropdown const rawRanks: { id: number; rank_name: string }[] = await prisma.$queryRaw( Prisma.sql`SELECT id, rank_name FROM permissions ORDER BY id ASC`, ); const ranks = rawRanks.map((r) => ({ id: Number(r.id), name: String(r.rank_name || `Rank ${r.id}`), })); return (