2024-05-23 13:24:21 +02:00

34 lines
1.4 KiB
TypeScript

import { Collections } from "../../../constants";
import { createGetByEndpoint } from "../../../endpoints/createGetByEndpoint";
import { EndpointCollectibleGallery } from "../../../sdk";
import { isImage, isNotEmpty, isPayloadType } from "../../../utils/asserts";
import { convertSourceToEndpointSource } from "../../../utils/endpoints";
import { convertImageToEndpointImage } from "../../Images/endpoints/getByID";
export const getBySlugEndpointGallery = createGetByEndpoint({
collection: Collections.Collectibles,
attribute: "slug",
suffix: "/gallery",
depth: 3,
handler: (collectible): EndpointCollectibleGallery => {
const { slug, thumbnail, translations, gallery } = collectible;
return {
slug,
translations:
translations?.map(({ language, title, description, pretitle, subtitle }) => ({
language: isPayloadType(language) ? language.id : language,
title,
...(isNotEmpty(pretitle) ? { pretitle } : {}),
...(isNotEmpty(subtitle) ? { subtitle } : {}),
...(isNotEmpty(description) ? { description } : {}),
})) ?? [],
...(isImage(thumbnail) ? { thumbnail: convertImageToEndpointImage(thumbnail) } : {}),
images:
gallery?.flatMap(({ image }) =>
isImage(image) ? convertImageToEndpointImage(image) : []
) ?? [],
parentPages: convertSourceToEndpointSource({ collectibles: [collectible] }),
};
},
});