feat: Update sitemap logic

This commit is contained in:
Thomas Camlong 2025-04-16 18:27:13 +02:00
parent d83edeedce
commit dc50e08440
No known key found for this signature in database
GPG Key ID: A678F374F428457B

View File

@ -1,36 +1,44 @@
import { BASE_URL, WEB_URL } from "@/constants" import { BASE_URL, WEB_URL } from "@/constants";
import { getAllIcons } from "@/lib/api" import { getAllIcons } from "@/lib/api";
import type { MetadataRoute } from "next" import type { MetadataRoute } from "next";
export const dynamic = "force-static" export const dynamic = "force-static";
// Helper function to format dates as YYYY-MM-DD
const formatDate = (date: Date): string => {
// Format to YYYY-MM-DD
return date.toISOString().split('T')[0];
};
export default async function sitemap(): Promise<MetadataRoute.Sitemap> { export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const iconsData = await getAllIcons() const iconsData = await getAllIcons();
return [ return [
{ {
url: WEB_URL, url: WEB_URL,
lastModified: new Date(), lastModified: formatDate(new Date()),
changeFrequency: "yearly", changeFrequency: "yearly",
priority: 1, priority: 1,
}, },
{ {
url: `${WEB_URL}/icons`, url: `${WEB_URL}/icons`,
lastModified: new Date(), lastModified: formatDate(new Date()),
changeFrequency: "daily", changeFrequency: "daily",
priority: 1, priority: 1,
images: [`${WEB_URL}/icons/icon.png`], images: [`${WEB_URL}/icons/icon.png`],
}, },
...Object.keys(iconsData).map((iconName) => ({ ...Object.keys(iconsData).map((iconName) => ({
url: `${WEB_URL}/icons/${iconName}`, url: `${WEB_URL}/icons/${iconName}`,
lastModified: iconsData[iconName].update.timestamp, lastModified: formatDate(new Date(iconsData[iconName].update.timestamp)),
changeFrequency: "yearly" as const, changeFrequency: "yearly" as const,
priority: 0.8, priority: 0.8,
images: [ images: [
`${BASE_URL}/png/${iconName}.png`, `${BASE_URL}/png/${iconName}.png`,
// SVG is conditional if it exists // SVG is conditional if it exists
iconsData[iconName].base === "svg" ? `${BASE_URL}/svg/${iconName}.svg` : null, iconsData[iconName].base === "svg"
? `${BASE_URL}/svg/${iconName}.svg`
: null,
`${BASE_URL}/webp/${iconName}.webp`, `${BASE_URL}/webp/${iconName}.webp`,
].filter(Boolean) as string[], ].filter(Boolean) as string[],
})), })),
] ];
} }