import { Metadata, ResolvingMetadata } from "next"; import { redirect } from "next/navigation"; import Image from "next/image"; import Link from "next/link"; import { Icon } from "@iconify/react"; import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; import MiiList from "@/components/mii-list"; interface Props { params: Promise<{ slug: string }>; } export async function generateMetadata({ params }: Props, parent: ResolvingMetadata): Promise { const { slug } = await params; const user = await prisma.user.findUnique({ where: { id: Number(slug), }, include: { _count: { select: { miis: true, }, }, }, }); // Bots get redirected anyways if (!user) return {}; const joinDate = user.createdAt.toLocaleDateString("en-US", { month: "long", year: "numeric", }); return { metadataBase: new URL(process.env.BASE_URL!), title: `${user.name} (@${user.username}) - TomodachiShare`, description: `View ${user.name}'s profile on TomodachiShare. Creator of ${user._count.miis} Miis. Member since ${joinDate}.`, keywords: [`tomodachi life`, `mii creator`, `nintendo`, `mii collection`, `profile`], creator: user.username, category: "Gaming", openGraph: { locale: "en_US", type: "profile", images: [user.image ?? "/missing.webp"], siteName: "TomodachiShare", username: user.username, firstName: user.name, }, twitter: { card: "summary", title: `${user.name} (@${user.username}) - TomodachiShare`, description: `View ${user.name}'s profile on TomodachiShare. Creator of ${user._count.miis} Miis. Member since ${joinDate}.`, images: [user.image ?? "/missing.webp"], creator: user.username!, }, alternates: { canonical: `/profile/${user.id}`, }, robots: { index: true, follow: true, }, }; } export default async function ProfilePage({ params }: Props) { const session = await auth(); const { slug } = await params; const user = await prisma.user.findUnique({ where: { id: Number(slug), }, }); if (!user) redirect("/404"); const likedMiis = await prisma.like.count({ where: { userId: Number(slug) } }); return (
profile picture

{user?.name}

@{user?.username}

Liked {likedMiis} Miis

Created: {user?.createdAt.toLocaleDateString("en-GB", { month: "long", day: "2-digit", year: "numeric" })}

{session?.user.id == slug && ( Settings )}
); }