import { redirect } from "next/navigation"; import { getTranslations } from "next-intl/server"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { getWatchedUserIds } from "@/lib/services/watch"; import { UserAccountInfo } from "../../_components/user-account-info"; import { UserBadgesReadonly } from "../../_components/user-badges-readonly"; import { UserHero } from "../../_components/user-hero"; import { UserOperationalOverview } from "../../_components/user-operational-overview"; import { loadUserById } from "../../_lib/load-user"; import { loadUserOverview } from "../../_lib/load-user-overview"; import { UserActivityLog } from "../../[id]/user-activity-log"; import { UserQuickActions } from "../../[id]/user-quick-actions"; import { UserRooms } from "../../[id]/user-rooms"; export default async function UserShowPage({ params, }: { params: Promise<{ locale: string; id: string }>; }) { const { id } = await params; const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.USERS_VIEW, session.user.rank)) { redirect("/admin"); } const t = await getTranslations("pages.admin.users.detail"); const overviewT = await getTranslations("pages.admin.users.overview"); const canEdit = canAccess(permissions, PERMS.USERS_EDIT, session.user.rank); const canViewLogs = canAccess( permissions, PERMS.LOGS_VIEW, session.user.rank, ); const data = await loadUserById(id, { logs: canViewLogs, bans: canAccess(permissions, PERMS.BANS_VIEW, session.user.rank), }); const [overview, watched] = await Promise.all([ loadUserOverview(data.user.id, permissions, session.user.rank), getWatchedUserIds(session.user.id), ]); return (
{overviewT("title")} {t("tabInfo")} {t("tabBadges", { count: data.user.badges.length })} {t("tabRooms", { count: data.roomCount })} {canViewLogs && ( {t("tabActivity")} )}

{t("tabBadges", { count: data.user.badges.length })}

{canViewLogs && ( {data.activityUnavailable ? (

{overviewT("error")}

) : ( )}
)}
{canEdit && ( )}
); }