From 2c069bf5e910aa1b98fdad289b73b7791dfdcc61 Mon Sep 17 00:00:00 2001 From: gunshiz Date: Tue, 1 Sep 2026 23:02:28 +0700 Subject: [PATCH] fix : buzz feedback --- app/[character]/[page]/opengraph-image.tsx | 31 ---- app/[character]/opengraph-image.tsx | 31 ---- lib/og-image.tsx | 167 ++------------------- 3 files changed, 10 insertions(+), 219 deletions(-) diff --git a/app/[character]/[page]/opengraph-image.tsx b/app/[character]/[page]/opengraph-image.tsx index f3a6e45..c52b2b6 100644 --- a/app/[character]/[page]/opengraph-image.tsx +++ b/app/[character]/[page]/opengraph-image.tsx @@ -18,42 +18,11 @@ export default async function Image({ 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, }); } diff --git a/app/[character]/opengraph-image.tsx b/app/[character]/opengraph-image.tsx index f3a6e45..c52b2b6 100644 --- a/app/[character]/opengraph-image.tsx +++ b/app/[character]/opengraph-image.tsx @@ -18,42 +18,11 @@ export default async function Image({ 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, }); } diff --git a/lib/og-image.tsx b/lib/og-image.tsx index 9b2d650..a218793 100644 --- a/lib/og-image.tsx +++ b/lib/og-image.tsx @@ -6,9 +6,6 @@ import { join } from "node:path"; import { ImageResponse } from "next/og"; import sharp from "sharp"; -import { rarityGradient } from "@/lib/catalog/rarity"; -import { artifactTierCount } from "@/lib/guides/artifacts"; - export const ogImageSize = { width: 1222, height: 560 } as const; export const ogImageContentType = "image/png"; @@ -24,12 +21,6 @@ function shorten(value: string, length: number): string { : normalized; } -function metric(value: string): string { - return Number(value) === 0 - ? "-%" - : `${Number(value).toLocaleString("en-US", { maximumFractionDigits: 2 })}%`; -} - function getBannerData(): Promise { bannerDataPromise ??= readFile( join(process.cwd(), "public/web_banner.png"), @@ -71,35 +62,12 @@ export async function generateOgImage({ characterCard = false, backgroundUrl, characterUrl, - recommendedWeapon, - recommendedArtifact, }: { title: string; sub: string; characterCard?: boolean; backgroundUrl?: string | null; characterUrl?: string | null; - recommendedWeapon?: { - name: string; - refinement: number; - rarity: number | null; - imageUrl: string; - overallPercent: string | null; - personalPercent: string | null; - } | null; - recommendedArtifact?: { - first: { - name: string; - rarity: number | null; - imageUrl: string; - }; - second: { - name: string; - rarity: number | null; - imageUrl: string; - } | null; - percent: string; - } | null; }) { const [ bannerSrc, @@ -107,22 +75,13 @@ export async function generateOgImage({ characterFont, characterBackgroundSrc, characterArtSrc, - weaponArtSrc, - firstArtifactArtSrc, - secondArtifactArtSrc, - ] = - await Promise.all([ - characterCard ? null : getBannerData(), - getFontData(), - characterCard ? getCharacterFontData() : null, - characterCard && backgroundUrl ? getImageData(backgroundUrl) : null, - characterCard && characterUrl ? getImageData(characterUrl) : null, - recommendedWeapon ? getImageData(recommendedWeapon.imageUrl) : null, - recommendedArtifact ? getImageData(recommendedArtifact.first.imageUrl) : null, - recommendedArtifact?.second - ? getImageData(recommendedArtifact.second.imageUrl) - : null, - ]); + ] = await Promise.all([ + characterCard ? null : getBannerData(), + getFontData(), + characterCard ? getCharacterFontData() : null, + characterCard && backgroundUrl ? getImageData(backgroundUrl) : null, + characterCard && characterUrl ? getImageData(characterUrl) : null, + ]); const backgroundSrc = characterCard ? characterBackgroundSrc : bannerSrc; return new ImageResponse( @@ -172,16 +131,13 @@ export async function generateOgImage({
{characterCard ? ( @@ -202,109 +158,6 @@ export async function generateOgImage({ > {shorten(sub, 92)}
- {recommendedWeapon ? ( -
-
- {weaponArtSrc ? ( - - ) : null} -
- {shorten(recommendedWeapon.name, 19)} R{recommendedWeapon.refinement} -
-
- {recommendedWeapon.overallPercent || recommendedWeapon.personalPercent ? ( -
- {recommendedWeapon.overallPercent ? ( -
-
{metric(recommendedWeapon.overallPercent)}
-
ทั้งทีม
-
- ) : null} - {recommendedWeapon.personalPercent ? ( -
-
{metric(recommendedWeapon.personalPercent)}
-
ส่วนตัว
-
- ) : null} -
- ) : null} -
- ) : null} - {recommendedArtifact ? ( -
-
- {firstArtifactArtSrc ? ( -
- -
- ) : null} - {recommendedArtifact.second && secondArtifactArtSrc ? ( -
- -
- ) : null} -
-
- {artifactTierCount(recommendedArtifact.second?.name ?? null)} {shorten(recommendedArtifact.first.name, recommendedArtifact.second ? 12 : 21)} - {recommendedArtifact.second ? ` + ${shorten(recommendedArtifact.second.name, 12)}` : ""} -
-
- {metric(recommendedArtifact.percent)} -
-
- ) : null} , {