From 5d3231f0ddc8f8476d2bc3a54b993d3ef331dd4a Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 22:06:21 +0000 Subject: [PATCH] Refactor: Enhance OpenGraph descriptions --- api/ssrOG.ts | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/api/ssrOG.ts b/api/ssrOG.ts index 30aaae46..9e3082ce 100644 --- a/api/ssrOG.ts +++ b/api/ssrOG.ts @@ -30,6 +30,10 @@ interface ParkData { description?: string; banner_image_id?: string; banner_image_url?: string; + location?: { + city: string; + country: string; + }; } interface RideData { @@ -37,6 +41,9 @@ interface RideData { description?: string; banner_image_id?: string; banner_image_url?: string; + park?: { + name: string; + }; } async function getPageData(pathname: string, fullUrl: string): Promise { @@ -49,7 +56,7 @@ async function getPageData(pathname: string, fullUrl: string): Promise try { const response = await fetch( - `${process.env.SUPABASE_URL}/rest/v1/parks?slug=eq.${slug}&select=name,description,banner_image_id,banner_image_url`, + `${process.env.SUPABASE_URL}/rest/v1/parks?slug=eq.${slug}&select=name,description,banner_image_id,banner_image_url,location(city,country)`, { headers: { 'apikey': process.env.SUPABASE_ANON_KEY!, @@ -67,9 +74,15 @@ async function getPageData(pathname: string, fullUrl: string): Promise ? `https://cdn.thrillwiki.com/images/${park.banner_image_id}/original` : (process.env.DEFAULT_OG_IMAGE || DEFAULT_FALLBACK_IMAGE)); + // Match client-side fallback logic + const description = park.description ?? + (park.location + ? `${park.name} - A theme park in ${park.location.city}, ${park.location.country}` + : `${park.name} - A theme park`); + return { title: `${park.name} - ThrillWiki`, - description: park.description || `Discover ${park.name} on ThrillWiki`, + description, image: imageUrl, url: fullUrl, type: 'website' @@ -91,7 +104,7 @@ async function getPageData(pathname: string, fullUrl: string): Promise try { const response = await fetch( - `${process.env.SUPABASE_URL}/rest/v1/rides?slug=eq.${rideSlug}&select=name,description,banner_image_id,banner_image_url`, + `${process.env.SUPABASE_URL}/rest/v1/rides?slug=eq.${rideSlug}&select=name,description,banner_image_id,banner_image_url,park(name)`, { headers: { 'apikey': process.env.SUPABASE_ANON_KEY!, @@ -109,9 +122,15 @@ async function getPageData(pathname: string, fullUrl: string): Promise ? `https://cdn.thrillwiki.com/images/${ride.banner_image_id}/original` : (process.env.DEFAULT_OG_IMAGE || DEFAULT_FALLBACK_IMAGE)); + // Match client-side fallback logic + const description = ride.description || + (ride.park?.name + ? `${ride.name} - A thrilling ride at ${ride.park.name}` + : `${ride.name} - A thrilling ride`); + return { title: `${ride.name} - ThrillWiki`, - description: ride.description || `Discover ${ride.name} on ThrillWiki`, + description, image: imageUrl, url: fullUrl, type: 'website'