import { getTranslations } from "next-intl/server"; import Link from "next/link"; import { ContentCard, EmptyState, OnlineBadge, RankBadge } from "@/components/public/ui"; import { avatarImageUrl } from "@/lib/format"; import { prisma } from "@/lib/prisma"; import { siteSettings } from "@/lib/services/site-settings"; export const revalidate = 300; export const metadata = { title: "Rankings" }; type TopUser = { username: string; look: string; credits: number; rank: number; online: string; }; export default async function RankingsPage() { const t = await getTranslations("pages.rankings"); let users: TopUser[] = []; try { users = await prisma.user.findMany({ select: { username: true, look: true, credits: true, rank: true, online: true }, orderBy: { credits: "desc" }, take: 12, }); } catch { users = []; } const imagerBase = await siteSettings.get( "habbo_imaging_url", "https://www.habbo.com/habbo-imaging/avatarimage", ); return (
{users.length === 0 ? ( {t("emptyState")} ) : (
{users.map((u, i) => { const avatar = avatarImageUrl(imagerBase ?? "", u.look, { size: "m" }); return (
{/* biome-ignore lint/performance/noImgElement: external avatar imager */} {`${u.username}

{u.username}

c {u.credits.toLocaleString()}

); })}
)}
); }