import { notFound } from "next/navigation";

import { createServerClient } from "@/lib/api/server";
import { ogCard, plural } from "@/lib/og";

export { size, contentType } from "@/lib/og";
export const alt = "Profile";

export default async function Image({
  params,
}: {
  params: Promise<{ username: string }>;
}) {
  const { username } = await params;

  const client = await createServerClient();
  const [{ data }, organization] = await Promise.all([
    client.GET("/api/users/{username}", { params: { path: { username } } }),
    client.GET("/api/organizations/{slug}", {
      params: { path: { slug: username } },
    }),
  ]);

  if (organization.data) {
    const org = organization.data;
    return ogCard({
      eyebrow: "Organization",
      icon: "user",
      avatar: org.logo,
      title: org.name,
      description: `@${org.slug}`,
      stats: [
        {
          icon: "folder",
          label: plural(org.repositoryCount, "repository", "repositories"),
        },
        {
          icon: "clock",
          label: `since ${new Date(org.createdAt).getFullYear()}`,
        },
      ],
    });
  }
  if (!data) notFound();
  return ogCard({
    eyebrow: "User Profile",
    icon: "user",
    avatar: data.image,
    title: data.name || data.username,
    description: `@${data.username}`,
    stats: [
      {
        icon: "folder",
        label: plural(data.repositoryCount, "repository", "repositories"),
      },
      { icon: "star", label: plural(data.starCount, "star") },
      {
        icon: "clock",
        label: `joined ${new Date(data.joinedAt).getFullYear()}`,
      },
    ],
  });
}
