import { redirect } from 'next/navigation' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { Prisma } from '@/generated/prisma/client' 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 (