Refactor: Enhance OpenGraph descriptions

This commit is contained in:
gpt-engineer-app[bot]
2025-11-04 22:06:21 +00:00
parent ffd71f51fb
commit 5d3231f0dd

View File

@@ -30,6 +30,10 @@ interface ParkData {
description?: string; description?: string;
banner_image_id?: string; banner_image_id?: string;
banner_image_url?: string; banner_image_url?: string;
location?: {
city: string;
country: string;
};
} }
interface RideData { interface RideData {
@@ -37,6 +41,9 @@ interface RideData {
description?: string; description?: string;
banner_image_id?: string; banner_image_id?: string;
banner_image_url?: string; banner_image_url?: string;
park?: {
name: string;
};
} }
async function getPageData(pathname: string, fullUrl: string): Promise<PageData> { async function getPageData(pathname: string, fullUrl: string): Promise<PageData> {
@@ -49,7 +56,7 @@ async function getPageData(pathname: string, fullUrl: string): Promise<PageData>
try { try {
const response = await fetch( 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: { headers: {
'apikey': process.env.SUPABASE_ANON_KEY!, 'apikey': process.env.SUPABASE_ANON_KEY!,
@@ -67,9 +74,15 @@ async function getPageData(pathname: string, fullUrl: string): Promise<PageData>
? `https://cdn.thrillwiki.com/images/${park.banner_image_id}/original` ? `https://cdn.thrillwiki.com/images/${park.banner_image_id}/original`
: (process.env.DEFAULT_OG_IMAGE || DEFAULT_FALLBACK_IMAGE)); : (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 { return {
title: `${park.name} - ThrillWiki`, title: `${park.name} - ThrillWiki`,
description: park.description || `Discover ${park.name} on ThrillWiki`, description,
image: imageUrl, image: imageUrl,
url: fullUrl, url: fullUrl,
type: 'website' type: 'website'
@@ -91,7 +104,7 @@ async function getPageData(pathname: string, fullUrl: string): Promise<PageData>
try { try {
const response = await fetch( 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: { headers: {
'apikey': process.env.SUPABASE_ANON_KEY!, 'apikey': process.env.SUPABASE_ANON_KEY!,
@@ -109,9 +122,15 @@ async function getPageData(pathname: string, fullUrl: string): Promise<PageData>
? `https://cdn.thrillwiki.com/images/${ride.banner_image_id}/original` ? `https://cdn.thrillwiki.com/images/${ride.banner_image_id}/original`
: (process.env.DEFAULT_OG_IMAGE || DEFAULT_FALLBACK_IMAGE)); : (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 { return {
title: `${ride.name} - ThrillWiki`, title: `${ride.name} - ThrillWiki`,
description: ride.description || `Discover ${ride.name} on ThrillWiki`, description,
image: imageUrl, image: imageUrl,
url: fullUrl, url: fullUrl,
type: 'website' type: 'website'