import { connection } from "next/server"; import { getCachedPublicGuide } from "@/lib/cache/public"; import { generateOgImage, ogImageContentType, ogImageSize, } from "@/lib/og-image"; export const alt = "Buzz Guide character guide"; export const size = ogImageSize; export const contentType = ogImageContentType; export default async function Image({ params, }: { params: Promise<{ character: string }>; }) { await connection(); const guide = await getCachedPublicGuide((await params).character); if (!guide) return new Response("Not found", { status: 404 }); const recommendedWeapon = guide.weapons[0]; const recommendedArtifact = guide.artifactGroups.find( (group) => group.rows.length > 0, )?.rows[0]; return generateOgImage({ title: guide.name, sub: guide.overview, characterCard: true, backgroundUrl: guide.character.nameCardImageUrl, characterUrl: guide.character.splashImageUrl ?? guide.character.imageUrl, recommendedWeapon: recommendedWeapon ? { name: recommendedWeapon.weapon.name, refinement: recommendedWeapon.refinement, rarity: recommendedWeapon.weapon.rarity, imageUrl: recommendedWeapon.weapon.imageUrl, overallPercent: recommendedWeapon.overallPercent, personalPercent: recommendedWeapon.personalPercent, } : null, recommendedArtifact: recommendedArtifact ? { first: { name: recommendedArtifact.first.name, rarity: recommendedArtifact.first.rarity, imageUrl: recommendedArtifact.first.imageUrl, }, second: recommendedArtifact.second ? { name: recommendedArtifact.second.name, rarity: recommendedArtifact.second.rarity, imageUrl: recommendedArtifact.second.imageUrl, } : null, percent: recommendedArtifact.percent, } : null, }); }