From 11004626c7fbd2c97f40785eeb1245daae608130 Mon Sep 17 00:00:00 2001 From: openhands Date: Wed, 22 Jul 2026 18:56:46 +0200 Subject: [PATCH] Add newest registered users section to index, register, login pages --- src/app/(site)/login/page.tsx | 54 +++++++++++++++++++++++++++++- src/app/(site)/page.tsx | 57 +++++++++++++++++++++++++++++--- src/app/(site)/register/page.tsx | 54 +++++++++++++++++++++++++++++- src/messages/en.json | 1 + 4 files changed, 159 insertions(+), 7 deletions(-) diff --git a/src/app/(site)/login/page.tsx b/src/app/(site)/login/page.tsx index cd7c44e7..8eb00192 100644 --- a/src/app/(site)/login/page.tsx +++ b/src/app/(site)/login/page.tsx @@ -24,7 +24,7 @@ export default async function LoginPage() { const imager = imagerRaw ?? "https://www.habbo.com/habbo-imaging/avatarimage"; const nonce = (await headers()).get("x-nonce") ?? undefined; - const [online, recentUsers] = await Promise.all([ + const [online, recentUsers, latestUsers] = await Promise.all([ cached("online_count", 10_000, () => prisma.user.count({ where: { online: "1" } }), ).catch(() => 0), @@ -35,6 +35,13 @@ export default async function LoginPage() { take: 8, }) .catch(() => []), + prisma.user + .findMany({ + orderBy: { accountCreated: "desc" }, + select: { username: true, look: true }, + take: 8, + }) + .catch(() => []), ]); return ( @@ -139,6 +146,51 @@ export default async function LoginPage() { )} + {latestUsers.length > 0 && ( +
+

+ ✨ Newest citizens +

+
+ {latestUsers.map((u) => ( +
+ + + {u.username} + +
+ ))} +
+
+ )} +

{t("noAccount") ?? "No account?"}{" "} prisma.user.count({ where: { online: "1" } }), @@ -42,6 +42,13 @@ async function getHotelData() { prisma.cameraWeb .findMany({ orderBy: { timestamp: "desc" }, take: 4 }) .catch(() => []), + prisma.user + .findMany({ + orderBy: { accountCreated: "desc" }, + select: { username: true, look: true }, + take: 8, + }) + .catch(() => []), ]); return { @@ -53,6 +60,7 @@ async function getHotelData() { articles, recentUsers, recentPhotos, + latestUsers, }; } @@ -71,6 +79,7 @@ export default async function Home() { articles, recentUsers, recentPhotos, + latestUsers, } = await getHotelData(); return ( @@ -230,7 +239,45 @@ export default async function Home() { ))} - {/* ── 4. News ── */} + {/* ── 4. Newest citizens ── */} + {latestUsers.length > 0 && ( +

+

+ {tp("latestUsers", { count: users.toLocaleString() })} +

+
+ {latestUsers.map((u) => ( +
+
+
+ {u.username} +
+ + {u.username} + +
+ ))} +
+
+ )} + + {/* ── 5. News ── */}

@@ -278,7 +325,7 @@ export default async function Home() { )}

- {/* ── 5. Online users row ── */} + {/* ── 6. Online users row ── */} {recentUsers.length > 0 && (

@@ -309,7 +356,7 @@ export default async function Home() {

)} - {/* ── 6. Bottom CTA ── */} + {/* ── 7. Bottom CTA ── */}
- {/* ── 7. Recent photos (compact) ── */} + {/* ── 8. Recent photos (compact) ── */} {recentPhotos.length > 0 && (

diff --git a/src/app/(site)/register/page.tsx b/src/app/(site)/register/page.tsx index 0e42bd2c..cd0d05cf 100644 --- a/src/app/(site)/register/page.tsx +++ b/src/app/(site)/register/page.tsx @@ -24,7 +24,7 @@ export default async function RegisterPage() { const imager = imagerRaw ?? "https://www.habbo.com/habbo-imaging/avatarimage"; const nonce = (await headers()).get("x-nonce") ?? undefined; - const [online, recentUsers] = await Promise.all([ + const [online, recentUsers, latestUsers] = await Promise.all([ cached("online_count", 10_000, () => prisma.user.count({ where: { online: "1" } }), ).catch(() => 0), @@ -35,6 +35,13 @@ export default async function RegisterPage() { take: 8, }) .catch(() => []), + prisma.user + .findMany({ + orderBy: { accountCreated: "desc" }, + select: { username: true, look: true }, + take: 8, + }) + .catch(() => []), ]); return ( @@ -134,6 +141,51 @@ export default async function RegisterPage() {

)} + {latestUsers.length > 0 && ( +
+

+ ✨ Newest citizens +

+
+ {latestUsers.map((u) => ( +
+ + + {u.username} + +
+ ))} +
+
+ )} +