diff --git a/src/lib/open-graph.ts b/src/lib/open-graph.ts new file mode 100644 index 000000000..a96ae85b4 --- /dev/null +++ b/src/lib/open-graph.ts @@ -0,0 +1,19 @@ +type GuideOpenGraphParams = { + type: 'guide'; + authorName: string; + authorAvatar?: string; + title: string; + description: string; +}; + +type RoadmapOpenGraphParams = { + type: 'roadmap'; + title: string; + description: string; +}; + +export function getOpenGraphImageUrl( + params: GuideOpenGraphParams | RoadmapOpenGraphParams, +) { + return `${import.meta.env.PUBLIC_API_URL}/v1-open-graph?${new URLSearchParams(params)}`; +} diff --git a/src/pages/[roadmapId]/index.astro b/src/pages/[roadmapId]/index.astro index dd4766915..8140f5f7a 100644 --- a/src/pages/[roadmapId]/index.astro +++ b/src/pages/[roadmapId]/index.astro @@ -13,6 +13,7 @@ import { generateArticleSchema, generateFAQSchema, } from '../../lib/jsonld-schema'; +import { getOpenGraphImageUrl } from '../../lib/open-graph'; import { type RoadmapFrontmatter, getRoadmapIds } from '../../lib/roadmap'; export async function getStaticPaths() { @@ -56,13 +57,11 @@ if (roadmapFAQs.length) { jsonLdSchema.push(generateFAQSchema(roadmapFAQs)); } -const ogImageUrl = - roadmapData?.seo?.ogImageUrl || - `${import.meta.env.PUBLIC_API_URL}/v1-open-graph?${new URLSearchParams({ - type: 'roadmap', - title: roadmapData.title, - description: roadmapData.description, - })}`; +const ogImageUrl = getOpenGraphImageUrl({ + type: 'roadmap', + title: roadmapData.title, + description: roadmapData.description, +}); ---