mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 07:51:13 -05:00
Refactor: Enhance OpenGraph descriptions
This commit is contained in:
27
api/ssrOG.ts
27
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<PageData> {
|
||||
@@ -49,7 +56,7 @@ async function getPageData(pathname: string, fullUrl: string): Promise<PageData>
|
||||
|
||||
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<PageData>
|
||||
? `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<PageData>
|
||||
|
||||
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<PageData>
|
||||
? `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'
|
||||
|
||||
Reference in New Issue
Block a user