feat : 6 astra improve it
CI / Verify and audit (push) Successful in 2m33s
CI / Build, scan and deploy immutable images (push) Failing after 1m29s

This commit is contained in:
2026-09-22 18:28:18 +07:00 Unverified
parent 88afa8e947
commit 87e6bcd96f
56 changed files with 1351 additions and 511 deletions
+1 -1
View File
@@ -23,7 +23,7 @@ export function GoogleAdsense() {
<Script
id="google-adsense"
src={`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${encodeURIComponent(clientId)}`}
strategy="afterInteractive"
strategy="lazyOnload"
crossOrigin="anonymous"
/>
);
+4 -5
View File
@@ -30,7 +30,6 @@ import { TeamArtifactIcon, TeamSearch } from "@/components/public/team-search";
import { GuideImageExport } from "@/components/public/guide-image-export";
import { ExportText } from "@/components/public/export-language";
import { WeaponImageExport } from "@/components/public/weapon-image-export";
import { WeaponChart } from "@/components/public/weapon-chart";
import { WeaponDisplayMode, WeaponDisplayModeProvider } from "@/components/public/weapon-display-mode";
import { ArtifactImageExport } from "@/components/public/artifact-image-export";
import { GuideExportBranding } from "@/components/public/guide-export-branding";
@@ -217,8 +216,8 @@ function GuideOverview({
alt={`ไกด์ ${guide.name}`}
fill
sizes="(min-width: 1280px) 600px, (min-width: 1024px) calc(50vw - 44px), calc(100vw - 32px)"
quality={100}
priority
quality={75}
fetchPriority="high"
className="object-cover"
/>
</div>
@@ -456,14 +455,14 @@ function WeaponSectionContent({
) : <span />}
{showExportActions ? (
<WeaponImageExport
guide={guide}
guide={{ name: guide.name, coverUrl: guide.coverUrl, character: { name: guide.character.name, splashImageUrl: guide.character.splashImageUrl } }}
group={group}
conditionIndex={groupIndex}
/>
) : null}
</div>
{group.note ? <p className="whitespace-pre-wrap text-muted-foreground">{group.note}</p> : null}
<WeaponDisplayMode exporting={exporting} chart={!exporting ? <WeaponChart rows={group.rows} /> : null}>
<WeaponDisplayMode exporting={exporting} rows={group.rows}>
<div
className={cn("grid gap-3", useCompactExportGrid && "grid-cols-2")}
>
+11 -3
View File
@@ -1,9 +1,17 @@
"use client";
import { Skeleton } from "@/components/ui/skeleton";
import dynamic from "next/dynamic";
import type { PublicGuide } from "@/lib/guides/queries";
import { createContext, useContext, useState, type ReactNode } from "react";
import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group";
const LazyWeaponChart = dynamic(() => import("./weapon-chart").then((module) => module.WeaponChart), {
loading: () => <Skeleton className="h-80 rounded-xl" aria-label="กำลังโหลดกราฟ" />,
});
const WeaponModeContext = createContext<{
mode: string;
setMode: (mode: string) => void;
@@ -21,11 +29,11 @@ export function WeaponDisplayModeProvider({ children }: { children: ReactNode })
export function WeaponDisplayMode({
children,
chart,
rows,
exporting = false,
}: {
children: ReactNode;
chart: ReactNode;
rows: PublicGuide["weaponGroups"][number]["rows"];
exporting?: boolean;
}) {
const context = useContext(WeaponModeContext);
@@ -48,7 +56,7 @@ export function WeaponDisplayMode({
<ToggleGroupItem value="normal">List</ToggleGroupItem>
<ToggleGroupItem value="chart">Chart</ToggleGroupItem>
</ToggleGroup>
{mode === "chart" ? chart : children}
{mode === "chart" ? <LazyWeaponChart rows={rows} /> : children}
</div>
);
}
+6 -2
View File
@@ -21,6 +21,10 @@ import {
import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group";
import type { PublicGuide } from "@/lib/guides/queries";
type WeaponExportGuide = Pick<PublicGuide, "name" | "coverUrl"> & {
character: Pick<PublicGuide["character"], "name" | "splashImageUrl">;
};
type WeaponGroup = PublicGuide["weaponGroups"][number];
type DamageMetric = "overallPercent" | "personalPercent";
@@ -37,7 +41,7 @@ export function WeaponComparisonImage({
metric,
conditionLabel,
}: {
guide: PublicGuide;
guide: WeaponExportGuide;
group: WeaponGroup;
metric: DamageMetric;
conditionLabel: ReactNode;
@@ -117,7 +121,7 @@ export function WeaponImageExport({
group,
conditionIndex,
}: {
guide: PublicGuide;
guide: WeaponExportGuide;
group: WeaponGroup;
conditionIndex: number;
}) {