feat(SW-3151): Added original to imageSchema and added transform to a more generic image type
Approved-by: Bianca Widstam Approved-by: Chuma Mcphoy (We Ahead) Approved-by: Matilda Landström
This commit is contained in:
@@ -526,7 +526,7 @@ export const ancillaryPackagesSchema = z
|
||||
id: item.id,
|
||||
title: item.title,
|
||||
description: item.descriptions.html,
|
||||
imageUrl: item.images[0]?.imageSizes.small || undefined,
|
||||
imageUrl: item.images[0]?.src || undefined,
|
||||
price: {
|
||||
total: item.variants.ancillary.price.totalPrice,
|
||||
currency: item.variants.ancillary.price.currency,
|
||||
|
||||
@@ -2,46 +2,37 @@ import { z } from "zod"
|
||||
|
||||
import { nullableStringValidator } from "@scandic-hotels/common/utils/zod/stringValidator"
|
||||
|
||||
export const imageSizesSchema = z.object({
|
||||
large: nullableStringValidator,
|
||||
medium: nullableStringValidator,
|
||||
small: nullableStringValidator,
|
||||
tiny: nullableStringValidator,
|
||||
})
|
||||
|
||||
export const imageMetaDataSchema = z.object({
|
||||
altText: nullableStringValidator,
|
||||
altText_En: nullableStringValidator,
|
||||
copyRight: nullableStringValidator,
|
||||
title: nullableStringValidator,
|
||||
title_En: nullableStringValidator,
|
||||
})
|
||||
|
||||
const DEFAULT_IMAGE_OBJ = {
|
||||
metaData: {
|
||||
altText: "Default image",
|
||||
altText_En: "Default image",
|
||||
copyRight: "Default image",
|
||||
title: "Default image",
|
||||
title_En: "Default image",
|
||||
},
|
||||
imageSizes: {
|
||||
tiny: "https://placehold.co/1280x720",
|
||||
small: "https://placehold.co/1280x720",
|
||||
medium: "https://placehold.co/1280x720",
|
||||
large: "https://placehold.co/1280x720",
|
||||
},
|
||||
altText: "Default image",
|
||||
altText_En: "Default image",
|
||||
title: "Default image",
|
||||
title_En: "Default image",
|
||||
src: "https://placehold.co/1280x720",
|
||||
}
|
||||
|
||||
export const imageSchema = z
|
||||
.object({
|
||||
imageSizes: imageSizesSchema,
|
||||
metaData: imageMetaDataSchema,
|
||||
imageSizes: z.object({
|
||||
original: nullableStringValidator,
|
||||
}),
|
||||
metaData: z.object({
|
||||
altText: nullableStringValidator,
|
||||
altText_En: nullableStringValidator,
|
||||
copyRight: nullableStringValidator,
|
||||
title: nullableStringValidator,
|
||||
title_En: nullableStringValidator,
|
||||
}),
|
||||
})
|
||||
.nullish()
|
||||
.transform((val) => {
|
||||
if (!val) {
|
||||
return DEFAULT_IMAGE_OBJ
|
||||
}
|
||||
return val
|
||||
return {
|
||||
src: val.imageSizes.original,
|
||||
altText: val.metaData.altText,
|
||||
altText_En: val.metaData.altText_En,
|
||||
title: val.metaData.title,
|
||||
title_En: val.metaData.title_En,
|
||||
}
|
||||
})
|
||||
|
||||
@@ -5,7 +5,7 @@ import { CurrencyEnum } from "@scandic-hotels/common/constants/currency"
|
||||
import { BreakfastPackageEnum } from "../../../enums/breakfast"
|
||||
import { PackageTypeEnum } from "../../../enums/packages"
|
||||
import { RoomPackageCodeEnum } from "../../../enums/roomFilter"
|
||||
import { imageSizesSchema } from "./image"
|
||||
import { imageSchema } from "./image"
|
||||
|
||||
// TODO: Remove optional and default when the API change has been deployed
|
||||
export const packagePriceSchema = z
|
||||
@@ -38,7 +38,7 @@ export const ancillaryContentSchema = z.object({
|
||||
}),
|
||||
title: z.string(),
|
||||
descriptions: z.object({ html: z.string() }),
|
||||
images: z.array(z.object({ imageSizes: imageSizesSchema })),
|
||||
images: z.array(imageSchema),
|
||||
requiresDeliveryTime: z.boolean(),
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user