From 7db727d6ea9a767d47c636a7c74761cbe6f853af Mon Sep 17 00:00:00 2001 From: gunshiz Date: Sun, 30 Aug 2026 11:21:54 +0000 Subject: [PATCH] fix : fix export image not like the actual --- .../guides/[guideId]/weapons/image/route.tsx | 43 ++++++++++--------- lib/catalog/rarity.test.ts | 6 ++- lib/catalog/rarity.ts | 10 +++++ 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/app/api/guides/[guideId]/weapons/image/route.tsx b/app/api/guides/[guideId]/weapons/image/route.tsx index 1449599..4473f0f 100644 --- a/app/api/guides/[guideId]/weapons/image/route.tsx +++ b/app/api/guides/[guideId]/weapons/image/route.tsx @@ -2,7 +2,7 @@ import { ImageResponse } from "next/og"; import sharp from "sharp"; -import { rarityGradient } from "@/lib/catalog/rarity"; +import { rarityGradient, rarityTextColor } from "@/lib/catalog/rarity"; import { imageContentDisposition } from "@/lib/guides/export-image"; import { getPublicWeaponExport } from "@/lib/guides/queries"; @@ -26,10 +26,8 @@ const anuphanFonts = Promise.all( }), ).catch(() => []); -function metric(value: string | null): string { - return value === null - ? "—" - : `${Number(value).toLocaleString("en-US", { maximumFractionDigits: 2 })}%`; +function metric(value: string): string { + return `${Number(value).toLocaleString("en-US", { maximumFractionDigits: 2 })}%`; } async function pngDataUrl(url: string): Promise { @@ -69,14 +67,14 @@ export async function GET( flexDirection: "column", gap: 14, color: "#f7f7f7", - background: "#17171c", + background: "#05060a", padding: "32px 36px", fontFamily: "Anuphan", }} > -
-
{guide.guideName}
-
Weapons
+
+
อาวุธที่แนะนำ
+
Weapons
{guide.weapons.map((row, index) => (
{weaponImages[index] ? ( @@ -109,15 +108,19 @@ export async function GET( {index + 1}. {row.weapon.name} R{row.refinement}
-
-
-
{metric(row.overallPercent)}
-
ดาเมจทั้งทีม
-
-
-
{metric(row.personalPercent)}
-
ดาเมจส่วนตัว
-
+
+ {row.overallPercent ? ( +
+
{metric(row.overallPercent)}
+
ดาเมททั้งทีม
+
+ ) : null} + {row.personalPercent ? ( +
+
{metric(row.personalPercent)}
+
ดาเมจส่วนตัว
+
+ ) : null}
))} diff --git a/lib/catalog/rarity.test.ts b/lib/catalog/rarity.test.ts index 9351cb4..7cb5d0d 100644 --- a/lib/catalog/rarity.test.ts +++ b/lib/catalog/rarity.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { rarityGradient, rarityGradientClass, rarityTextClass } from "@/lib/catalog/rarity"; +import { rarityGradient, rarityGradientClass, rarityTextClass, rarityTextColor } from "@/lib/catalog/rarity"; describe("catalog rarity backgrounds", () => { it("maps every weapon and artifact rarity to its Tailwind gradient", () => { @@ -15,11 +15,15 @@ describe("catalog rarity backgrounds", () => { expect(rarityTextClass(3)).toBe("text-[#4D7691]"); expect(rarityTextClass(4)).toBe("text-[#6D6A9C]"); expect(rarityTextClass(5)).toBe("text-[#A67B34]"); + expect(rarityTextColor(3)).toBe("#4D7691"); + expect(rarityTextColor(4)).toBe("#6D6A9C"); + expect(rarityTextColor(5)).toBe("#A67B34"); }); it("uses the neutral equipment background when rarity is unavailable", () => { expect(rarityGradient(null)).toBe("#17383d"); expect(rarityGradientClass(undefined)).toBeUndefined(); expect(rarityTextClass(undefined)).toBeUndefined(); + expect(rarityTextColor(undefined)).toBe("#17171c"); }); }); diff --git a/lib/catalog/rarity.ts b/lib/catalog/rarity.ts index 24c25de..181871b 100644 --- a/lib/catalog/rarity.ts +++ b/lib/catalog/rarity.ts @@ -20,6 +20,12 @@ const rarityTextClasses: Record = { 5: "text-[#A67B34]", }; +const rarityTextColors: Record = { + 3: "#4D7691", + 4: "#6D6A9C", + 5: "#A67B34", +}; + export function rarityGradientClass(rarity: number | null | undefined): string | undefined { return rarity ? rarityGradientClasses[rarity] : undefined; } @@ -31,3 +37,7 @@ export function rarityGradient(rarity: number | null | undefined): string { export function rarityTextClass(rarity: number | null | undefined): string | undefined { return rarity ? rarityTextClasses[rarity] : undefined; } + +export function rarityTextColor(rarity: number | null | undefined): string { + return (rarity && rarityTextColors[rarity]) || "#17171c"; +}