diff --git a/src/app/(stats)/player/[ign]/page.tsx b/src/app/(stats)/player/[ign]/page.tsx index 672f5ee..afbda88 100644 --- a/src/app/(stats)/player/[ign]/page.tsx +++ b/src/app/(stats)/player/[ign]/page.tsx @@ -6,6 +6,7 @@ import { getUuid } from "@/lib/hypixel/api/mojang" import { getPlayer } from "@/lib/hypixel/api/player" import { getExactLevel } from "@/lib/hypixel/general/level" import { Loader2Icon } from "lucide-react" +import { Metadata } from "next" import { Suspense } from "react" import Sidebar from "./_components/Sidebar" import BedwarsStats from "./_stats/bedwars/bedwars" @@ -13,11 +14,13 @@ import DuelsStats from "./_stats/duels/duels" import MurderMysteryStats from "./_stats/murder-mystery/murder-mystery" import SkyWarsStats from "./_stats/skywars/skywars" -export default async function PlayerPage({ - params -}: { - params: Promise<{ ign: string }> -}) { +export async function generateMetadata({ params }: { params: Promise<{ ign: string }> }): Promise { + const { ign } = await params + const user = await getUuid(ign) + return { title: user !== null ? user.name : "Player not found" } +} + +export default async function PlayerPage({ params }: { params: Promise<{ ign: string }> }) { const { ign } = await params return ( @@ -35,8 +38,8 @@ export default async function PlayerPage({ } async function SuspendedPage({ ign: pign }: { ign: string }) { - const uuid = await getUuid(pign) - if (!uuid) { + const mc = await getUuid(pign) + if (!mc) { return (

Player not found

@@ -44,7 +47,7 @@ async function SuspendedPage({ ign: pign }: { ign: string }) { ) } - const player = await getPlayer(uuid) + const player = await getPlayer(mc.id) if (!player) { return ( @@ -54,7 +57,7 @@ async function SuspendedPage({ ign: pign }: { ign: string }) { ) } - const guild = await getGuild(uuid) + const guild = await getGuild(mc.id) const level = getExactLevel(player.networkExp) return ( diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 2736420..e5d6671 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,8 +1,17 @@ import "./globals.css" + import ThemeProvider from "@/components/ThemeProvider" import { Toaster } from "@/components/ui/sonner" +import type { Metadata } from "next" import { ReactNode } from "react" +export const metadata: Metadata = { + title: { + template: "%s | Stats Hypixel", + default: "Stats Hypixel" + } +} + export default function RootLayout({ children }: Readonly<{ children: ReactNode }>) { return ( diff --git a/src/lib/hypixel/api/mojang.ts b/src/lib/hypixel/api/mojang.ts index b44b265..dbcc56e 100644 --- a/src/lib/hypixel/api/mojang.ts +++ b/src/lib/hypixel/api/mojang.ts @@ -18,5 +18,6 @@ export async function getUuid(ign: string) { if (!parsed.success) return null - return parsed.data.id -} \ No newline at end of file + return parsed.data +} + diff --git a/src/lib/hypixel/server.ts b/src/lib/hypixel/server.ts index c5efad2..4dd99e2 100644 --- a/src/lib/hypixel/server.ts +++ b/src/lib/hypixel/server.ts @@ -2,16 +2,16 @@ import { getUuid } from "./api/mojang" import { getPlayer } from "./api/player" export async function _validatePlayer(ign: string) { - const uuid = await getUuid(ign) + const mc = await getUuid(ign) - if (!uuid) { + if (!mc) { return { error: true, message: "Player not found" } } - const player = await getPlayer(uuid) + const player = await getPlayer(mc.id) if (!player) { return { diff --git a/ž b/ž new file mode 100644 index 0000000..afbda88 --- /dev/null +++ b/ž @@ -0,0 +1,118 @@ +import DisplayName from "@/components/player/displayname" +import { Accordion } from "@/components/ui/accordion" +import { Card, CardContent } from "@/components/ui/card" +import { getGuild } from "@/lib/hypixel/api/guild" +import { getUuid } from "@/lib/hypixel/api/mojang" +import { getPlayer } from "@/lib/hypixel/api/player" +import { getExactLevel } from "@/lib/hypixel/general/level" +import { Loader2Icon } from "lucide-react" +import { Metadata } from "next" +import { Suspense } from "react" +import Sidebar from "./_components/Sidebar" +import BedwarsStats from "./_stats/bedwars/bedwars" +import DuelsStats from "./_stats/duels/duels" +import MurderMysteryStats from "./_stats/murder-mystery/murder-mystery" +import SkyWarsStats from "./_stats/skywars/skywars" + +export async function generateMetadata({ params }: { params: Promise<{ ign: string }> }): Promise { + const { ign } = await params + const user = await getUuid(ign) + return { title: user !== null ? user.name : "Player not found" } +} + +export default async function PlayerPage({ params }: { params: Promise<{ ign: string }> }) { + const { ign } = await params + + return ( + + +

{`Loading stats for ${ign}`}

+
+ } + > + + + ) +} + +async function SuspendedPage({ ign: pign }: { ign: string }) { + const mc = await getUuid(pign) + if (!mc) { + return ( +
+

Player not found

+
+ ) + } + + const player = await getPlayer(mc.id) + + if (!player) { + return ( +
+

Player not found

+
+ ) + } + + const guild = await getGuild(mc.id) + const level = getExactLevel(player.networkExp) + + return ( +
+ +

+ {player.uuid} +

+
+ + {player.stats !== undefined ? + ( +
+ + + + + + +
+ ) : + ( +
+ + +

+ No stats avaiable. If they are staff then they most likely have their api off. +

+
+
+
+ )} +
+
+ ) +}