feat(SW-201): Added hotel metadata

This commit is contained in:
Erik Tiekstra
2024-11-18 10:31:32 +01:00
parent a60c048476
commit 75c811eb32
5 changed files with 106 additions and 28 deletions

View File

@@ -1,3 +1,5 @@
import { getIntl } from "@/i18n"
import { RTETypeEnum } from "@/types/rte/enums"
import type { RawMetadataSchema } from "@/types/trpc/routers/contentstack/metadata"
@@ -58,11 +60,18 @@ function truncateTextAfterLastPeriod(
return `${maxLengthText}...`
}
export function getTitle(data: RawMetadataSchema) {
export async function getTitle(data: RawMetadataSchema) {
const intl = await getIntl()
const metadata = data.web?.seo_metadata
if (metadata?.title) {
return metadata.title
}
if (data.hotelData) {
return intl.formatMessage(
{ id: "Stay at HOTEL_NAME | Hotel in DESTINATION" },
{ hotelName: data.hotelData.name, destination: data.hotelData.city }
)
}
if (data.web?.breadcrumbs?.title) {
return data.web.breadcrumbs.title
}
@@ -75,11 +84,15 @@ export function getTitle(data: RawMetadataSchema) {
return ""
}
export function getDescription(data: RawMetadataSchema) {
export async function getDescription(data: RawMetadataSchema) {
const intl = await getIntl()
const metadata = data.web?.seo_metadata
if (metadata?.description) {
return metadata.description
}
if (data.hotelData) {
return data.hotelData.description
}
if (data.preamble) {
return truncateTextAfterLastPeriod(data.preamble)
}
@@ -108,22 +121,23 @@ export function getImages(data: RawMetadataSchema) {
// Currently we don't have the possibility to get smaller images from ImageVault (2024-11-15)
if (metadataImage) {
return [
{
url: metadataImage.url,
width: metadataImage.dimensions.width,
height: metadataImage.dimensions.height,
},
]
return {
url: metadataImage.url,
alt: metadataImage.meta.alt || undefined,
width: metadataImage.dimensions.width,
height: metadataImage.dimensions.height,
}
}
if (data.hotelData?.image) {
return data.hotelData.image
}
if (heroImage) {
return [
{
url: heroImage.url,
width: heroImage.dimensions.width,
height: heroImage.dimensions.height,
},
]
return {
url: heroImage.url,
alt: heroImage.meta.alt || undefined,
width: heroImage.dimensions.width,
height: heroImage.dimensions.height,
}
}
return []
return undefined
}