Files
Erik Tiekstra 9f02870647 feat(BOOK-57): Adjusted metadata for destination pages with active seo filter
Approved-by: Chuma Mcphoy (We Ahead)
2025-09-25 13:26:00 +00:00

60 lines
1.8 KiB
TypeScript

import { PageContentTypeEnum } from "@scandic-hotels/trpc/enums/contentType"
import { getDestinationFilterSeoMetaImage } from "@/utils/metadata/image/destinationPage"
import { getHotelPageImage } from "@/utils/metadata/image/hotelPage"
import type { RawMetadataSchema } from "@scandic-hotels/trpc/routers/contentstack/metadata/output"
export function getImage(data: RawMetadataSchema) {
const metadataImage = data.web?.seo_metadata?.seo_image
const isDestinationPage = [
PageContentTypeEnum.destinationCityPage,
PageContentTypeEnum.destinationCountryPage,
].includes(data.system.content_type_uid as PageContentTypeEnum)
if (isDestinationPage) {
const destinationFilterSeoMetaImage = getDestinationFilterSeoMetaImage(data)
if (destinationFilterSeoMetaImage) {
return destinationFilterSeoMetaImage
}
}
// Currently we don't have the possibility to get smaller images from ImageVault (2024-11-15)
if (metadataImage) {
return {
url: metadataImage.url,
alt: metadataImage.meta.alt || undefined,
width: metadataImage.dimensions.width,
height: metadataImage.dimensions.height,
}
}
let contentTypeImage: { url: string; alt?: string } | null = null
switch (data.system.content_type_uid) {
case PageContentTypeEnum.hotelPage:
contentTypeImage = getHotelPageImage(data)
break
default:
break
}
if (contentTypeImage) {
return contentTypeImage
}
// Fallback to hero image if no other image is found
const heroImage =
data.hero_image || data.header?.hero_image || data.images?.[0]
if (heroImage) {
return {
url: heroImage.url,
alt: heroImage.meta.alt || undefined,
width: heroImage.dimensions.width,
height: heroImage.dimensions.height,
}
}
return undefined
}