Reduced data sent by endpoint by 99 percents
This commit is contained in:
		
							parent
							
								
									42b76b2dff
								
							
						
					
					
						commit
						abd7d3680b
					
				| @ -5,8 +5,8 @@ import { ChronologyEvent, CollectibleBlock } from "../../../types/collections"; | ||||
| import { CollectionEndpoint } from "../../../types/payload"; | ||||
| import { isDefined, isNotEmpty, isPayloadType } from "../../../utils/asserts"; | ||||
| import { convertCreditsToEndpointCredits, getDomainFromUrl } from "../../../utils/endpoints"; | ||||
| import { convertCollectibleToEndpointCollectible } from "../../Collectibles/endpoints/getBySlugEndpoint"; | ||||
| import { convertPageToEndpointPage } from "../../Pages/endpoints/getBySlugEndpoint"; | ||||
| import { convertCollectibleToEndpointCollectiblePreview } from "../../Collectibles/endpoints/getBySlugEndpoint"; | ||||
| import { convertPageToEndpointPagePreview } from "../../Pages/endpoints/getBySlugEndpoint"; | ||||
| 
 | ||||
| export const getAllEndpoint: CollectionEndpoint = { | ||||
|   method: "get", | ||||
| @ -89,7 +89,7 @@ const handleSources = (sources: ChronologyEvent["events"][number]["sources"]): E | ||||
|           if (!isPayloadType(source.collectible)) return []; | ||||
|           return { | ||||
|             type: "collectible", | ||||
|             collectible: convertCollectibleToEndpointCollectible(source.collectible), | ||||
|             collectible: convertCollectibleToEndpointCollectiblePreview(source.collectible), | ||||
|             ...(isDefined(range) ? { range } : {}), | ||||
|           }; | ||||
| 
 | ||||
| @ -97,7 +97,7 @@ const handleSources = (sources: ChronologyEvent["events"][number]["sources"]): E | ||||
|           if (!isPayloadType(source.page)) return []; | ||||
|           return { | ||||
|             type: "page", | ||||
|             page: convertPageToEndpointPage(source.page), | ||||
|             page: convertPageToEndpointPagePreview(source.page), | ||||
|           }; | ||||
| 
 | ||||
|         case "urlBlock": | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import { CollectibleNature, Collections } from "../../../constants"; | ||||
| import { createGetByEndpoint } from "../../../endpoints/createGetByEndpoint"; | ||||
| import { EndpointCollectible } from "../../../sdk"; | ||||
| import { EndpointCollectible, EndpointCollectiblePreview } from "../../../sdk"; | ||||
| import { Collectible } from "../../../types/collections"; | ||||
| import { | ||||
|   isAudio, | ||||
| @ -21,8 +21,8 @@ import { | ||||
| } from "../../../utils/endpoints"; | ||||
| import { convertAudioToEndpointAudio } from "../../Audios/endpoints/getByID"; | ||||
| import { convertImageToEndpointImage } from "../../Images/endpoints/getByID"; | ||||
| import { convertPageToEndpointPage } from "../../Pages/endpoints/getBySlugEndpoint"; | ||||
| import { convertRecorderToEndpointRecorder } from "../../Recorders/endpoints/getByID"; | ||||
| import { convertPageToEndpointPagePreview } from "../../Pages/endpoints/getBySlugEndpoint"; | ||||
| import { convertRecorderToEndpointRecorderPreview } from "../../Recorders/endpoints/getByID"; | ||||
| import { convertVideoToEndpointVideo } from "../../Videos/endpoints/getByID"; | ||||
| 
 | ||||
| export const getBySlugEndpoint = createGetByEndpoint({ | ||||
| @ -32,48 +32,63 @@ export const getBySlugEndpoint = createGetByEndpoint({ | ||||
|   handler: (collectible) => convertCollectibleToEndpointCollectible(collectible), | ||||
| }); | ||||
| 
 | ||||
| export const convertCollectibleToEndpointCollectible = ({ | ||||
|   nature, | ||||
|   urls, | ||||
|   subitems, | ||||
|   gallery: rawGallery, | ||||
|   contents, | ||||
| export const convertCollectibleToEndpointCollectiblePreview = ({ | ||||
|   id, | ||||
|   priceEnabled, | ||||
|   price, | ||||
|   size, | ||||
|   sizeEnabled, | ||||
|   weight, | ||||
|   weightEnabled, | ||||
|   pageInfo, | ||||
|   pageInfoEnabled, | ||||
|   parentItems, | ||||
|   folders, | ||||
|   backgroundImage, | ||||
|   slug, | ||||
|   thumbnail, | ||||
|   translations, | ||||
|   releaseDate, | ||||
|   languages, | ||||
|   scans: rawScans, | ||||
|   attributes, | ||||
|   createdAt, | ||||
|   updatedAt, | ||||
|   scansEnabled, | ||||
|   updatedBy, | ||||
| }: Collectible): EndpointCollectible => { | ||||
| }: Collectible): EndpointCollectiblePreview => ({ | ||||
|   id, | ||||
|   slug, | ||||
|   ...(isImage(thumbnail) ? { thumbnail: convertImageToEndpointImage(thumbnail) } : {}), | ||||
|   translations: | ||||
|     translations?.map(({ language, title, pretitle, subtitle }) => ({ | ||||
|       language: isPayloadType(language) ? language.id : language, | ||||
|       title, | ||||
|       ...(isNotEmpty(pretitle) ? { pretitle } : {}), | ||||
|       ...(isNotEmpty(subtitle) ? { subtitle } : {}), | ||||
|     })) ?? [], | ||||
|   attributes: convertAttributesToEndpointAttributes(attributes), | ||||
|   ...(isDefined(releaseDate) ? { releaseDate } : {}), | ||||
|   languages: languages?.map((language) => (isPayloadType(language) ? language.id : language)) ?? [], | ||||
|   ...handlePrice(price, priceEnabled), | ||||
| }); | ||||
| 
 | ||||
| const convertCollectibleToEndpointCollectible = (collectible: Collectible): EndpointCollectible => { | ||||
|   const { | ||||
|     nature, | ||||
|     urls, | ||||
|     subitems, | ||||
|     gallery: rawGallery, | ||||
|     contents, | ||||
|     priceEnabled, | ||||
|     price, | ||||
|     size, | ||||
|     sizeEnabled, | ||||
|     weight, | ||||
|     weightEnabled, | ||||
|     pageInfo, | ||||
|     pageInfoEnabled, | ||||
|     parentItems, | ||||
|     folders, | ||||
|     backgroundImage, | ||||
|     translations, | ||||
|     scans: rawScans, | ||||
|     createdAt, | ||||
|     updatedAt, | ||||
|     scansEnabled, | ||||
|     updatedBy, | ||||
|   } = collectible; | ||||
|   const gallery = handleGallery(rawGallery); | ||||
|   const scans = scansEnabled ? handleScans(rawScans) : undefined; | ||||
| 
 | ||||
|   return { | ||||
|     slug, | ||||
|     languages: | ||||
|       languages?.map((language) => (isPayloadType(language) ? language.id : language)) ?? [], | ||||
|     ...(isDefined(releaseDate) ? { releaseDate } : {}), | ||||
|     ...(isImage(thumbnail) ? { thumbnail: convertImageToEndpointImage(thumbnail) } : {}), | ||||
|     ...(isImage(backgroundImage) | ||||
|       ? { backgroundImage: convertImageToEndpointImage(backgroundImage) } | ||||
|       : {}), | ||||
|     attributes: convertAttributesToEndpointAttributes(attributes), | ||||
|     ...convertCollectibleToEndpointCollectiblePreview(collectible), | ||||
|     translations: | ||||
|       translations?.map(({ language, title, description, pretitle, subtitle }) => ({ | ||||
|         language: isPayloadType(language) ? language.id : language, | ||||
| @ -82,22 +97,25 @@ export const convertCollectibleToEndpointCollectible = ({ | ||||
|         ...(isNotEmpty(subtitle) ? { subtitle } : {}), | ||||
|         ...(isNotEmpty(description) ? { description } : {}), | ||||
|       })) ?? [], | ||||
|     contents: handleContents(contents), | ||||
|     ...(isImage(backgroundImage) | ||||
|       ? { backgroundImage: convertImageToEndpointImage(backgroundImage) } | ||||
|       : {}), | ||||
|     nature: nature === "Physical" ? CollectibleNature.Physical : CollectibleNature.Digital, | ||||
|     ...(gallery ? { gallery } : {}), | ||||
|     ...(scans ? { scans } : {}), | ||||
|     nature: nature === "Physical" ? CollectibleNature.Physical : CollectibleNature.Digital, | ||||
|     subitems: isPayloadArrayType(subitems) | ||||
|       ? subitems.filter(isPublished).map(convertCollectibleToEndpointCollectible) | ||||
|       : [], | ||||
|     urls: urls?.map(({ url }) => ({ url, label: getDomainFromUrl(url) })) ?? [], | ||||
|     ...(weightEnabled && isDefined(weight) ? { weight: weight.amount } : {}), | ||||
|     ...handleSize(size, sizeEnabled), | ||||
|     ...(weightEnabled && isDefined(weight) ? { weight: weight.amount } : {}), | ||||
|     ...handlePageInfo(pageInfo, pageInfoEnabled), | ||||
|     subitems: isPayloadArrayType(subitems) | ||||
|       ? subitems.filter(isPublished).map(convertCollectibleToEndpointCollectiblePreview) | ||||
|       : [], | ||||
|     contents: handleContents(contents), | ||||
|     ...handlePrice(price, priceEnabled), | ||||
|     createdAt, | ||||
|     updatedAt, | ||||
|     ...(isPayloadType(updatedBy) | ||||
|       ? { updatedBy: convertRecorderToEndpointRecorder(updatedBy) } | ||||
|       ? { updatedBy: convertRecorderToEndpointRecorderPreview(updatedBy) } | ||||
|       : {}), | ||||
|     parentPages: convertSourceToEndpointSource({ collectibles: parentItems, folders }), | ||||
|   }; | ||||
| @ -172,7 +190,7 @@ const handleScans = (scans: Collectible["scans"]): EndpointCollectible["scans"] | ||||
| 
 | ||||
|   const thumbnail = result?.[0]; | ||||
|   if (!thumbnail) return; | ||||
|    | ||||
| 
 | ||||
|   return { | ||||
|     count: totalCount, | ||||
|     thumbnail: convertScanToEndpointScanImage(thumbnail.image, thumbnail.index), | ||||
| @ -230,7 +248,10 @@ const handleContents = (contents: Collectible["contents"]): EndpointCollectible[ | ||||
| 
 | ||||
|         case Collections.Pages: | ||||
|           return isPayloadType(content.value) && isPublished(content.value) | ||||
|             ? { relationTo: Collections.Pages, value: convertPageToEndpointPage(content.value) } | ||||
|             ? { | ||||
|                 relationTo: Collections.Pages, | ||||
|                 value: convertPageToEndpointPagePreview(content.value), | ||||
|               } | ||||
|             : undefined; | ||||
| 
 | ||||
|         case Collections.Audios: | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import { Collections } from "../../../constants"; | ||||
| import { createGetByEndpoint } from "../../../endpoints/createGetByEndpoint"; | ||||
| import { EndpointFolder } from "../../../sdk"; | ||||
| import { EndpointFolder, EndpointFolderPreview } from "../../../sdk"; | ||||
| import { Folder, Language } from "../../../types/collections"; | ||||
| import { | ||||
|   isAudio, | ||||
| @ -13,9 +13,9 @@ import { | ||||
| } from "../../../utils/asserts"; | ||||
| import { convertSourceToEndpointSource, getLanguageId } from "../../../utils/endpoints"; | ||||
| import { convertAudioToEndpointAudio } from "../../Audios/endpoints/getByID"; | ||||
| import { convertCollectibleToEndpointCollectible } from "../../Collectibles/endpoints/getBySlugEndpoint"; | ||||
| import { convertCollectibleToEndpointCollectiblePreview } from "../../Collectibles/endpoints/getBySlugEndpoint"; | ||||
| import { convertImageToEndpointImage } from "../../Images/endpoints/getByID"; | ||||
| import { convertPageToEndpointPage } from "../../Pages/endpoints/getBySlugEndpoint"; | ||||
| import { convertPageToEndpointPagePreview } from "../../Pages/endpoints/getBySlugEndpoint"; | ||||
| import { convertVideoToEndpointVideo } from "../../Videos/endpoints/getByID"; | ||||
| 
 | ||||
| export const getBySlugEndpoint = createGetByEndpoint({ | ||||
| @ -25,72 +25,88 @@ export const getBySlugEndpoint = createGetByEndpoint({ | ||||
|   handler: (folder) => convertFolderToEndpointFolder(folder), | ||||
| }); | ||||
| 
 | ||||
| export const convertFolderToEndpointFolder = ({ | ||||
| export const convertFolderToEndpointFolderPreview = ({ | ||||
|   id, | ||||
|   slug, | ||||
|   icon, | ||||
|   translations, | ||||
|   sections, | ||||
|   files, | ||||
|   parentFolders, | ||||
| }: Folder): EndpointFolder => ({ | ||||
| }: Folder): EndpointFolderPreview => ({ | ||||
|   id, | ||||
|   slug, | ||||
|   ...(isDefined(icon) ? { icon } : {}), | ||||
|   translations: | ||||
|     translations?.map(({ language, name, description }) => ({ | ||||
|     translations?.map(({ language, name }) => ({ | ||||
|       language: getLanguageId(language), | ||||
|       name, | ||||
|       ...(isNotEmpty(description) ? { description } : {}), | ||||
|       title: name, | ||||
|     })) ?? [], | ||||
|   sections: | ||||
|     sections?.length === 1 | ||||
|       ? { | ||||
|           type: "single", | ||||
|           subfolders: | ||||
|             sections[0]?.subfolders?.filter(isPayloadType).map(convertFolderToEndpointFolder) ?? [], | ||||
|         } | ||||
|       : { | ||||
|           type: "multiple", | ||||
|           sections: | ||||
|             sections?.filter(isValidSection).map(({ translations, subfolders }) => ({ | ||||
|               translations: translations.map(({ language, name }) => ({ | ||||
|                 language: getLanguageId(language), | ||||
|                 name, | ||||
|               })), | ||||
|               subfolders: subfolders.map(convertFolderToEndpointFolder), | ||||
|             })) ?? [], | ||||
|         }, | ||||
|   files: | ||||
|     files?.flatMap<EndpointFolder["files"][number]>(({ relationTo, value }) => { | ||||
|       if (!isPayloadType(value) || ("_status" in value && !isPublished(value))) { | ||||
|         return []; | ||||
|       } | ||||
| 
 | ||||
|       switch (relationTo) { | ||||
|         case Collections.Collectibles: | ||||
|           return [ | ||||
|             { | ||||
|               relationTo: Collections.Collectibles, | ||||
|               value: convertCollectibleToEndpointCollectible(value), | ||||
|             }, | ||||
|           ]; | ||||
|         case Collections.Pages: | ||||
|           return [{ relationTo: Collections.Pages, value: convertPageToEndpointPage(value) }]; | ||||
|         case Collections.Images: | ||||
|           if (!isImage(value)) return []; | ||||
|           return [{ relationTo: Collections.Images, value: convertImageToEndpointImage(value) }]; | ||||
|         case Collections.Audios: | ||||
|           if (!isAudio(value)) return []; | ||||
|           return [{ relationTo: Collections.Audios, value: convertAudioToEndpointAudio(value) }]; | ||||
|         case Collections.Videos: | ||||
|           if (!isVideo(value)) return []; | ||||
|           return [{ relationTo: Collections.Videos, value: convertVideoToEndpointVideo(value) }]; | ||||
|         default: | ||||
|           return []; | ||||
|       } | ||||
|     }) ?? [], | ||||
|   parentPages: convertSourceToEndpointSource({ folders: parentFolders }), | ||||
| }); | ||||
| 
 | ||||
| const convertFolderToEndpointFolder = (folder: Folder): EndpointFolder => { | ||||
|   const { translations, sections, files, parentFolders } = folder; | ||||
| 
 | ||||
|   return { | ||||
|     ...convertFolderToEndpointFolderPreview(folder), | ||||
|     translations: | ||||
|       translations?.map(({ language, name, description }) => ({ | ||||
|         language: getLanguageId(language), | ||||
|         title: name, | ||||
|         ...(isNotEmpty(description) ? { description } : {}), | ||||
|       })) ?? [], | ||||
|     sections: | ||||
|       sections?.length === 1 | ||||
|         ? { | ||||
|             type: "single", | ||||
|             subfolders: | ||||
|               sections[0]?.subfolders | ||||
|                 ?.filter(isPayloadType) | ||||
|                 .map(convertFolderToEndpointFolderPreview) ?? [], | ||||
|           } | ||||
|         : { | ||||
|             type: "multiple", | ||||
|             sections: | ||||
|               sections?.filter(isValidSection).map(({ translations, subfolders }) => ({ | ||||
|                 translations: translations.map(({ language, name }) => ({ | ||||
|                   language: getLanguageId(language), | ||||
|                   name, | ||||
|                 })), | ||||
|                 subfolders: subfolders.map(convertFolderToEndpointFolderPreview), | ||||
|               })) ?? [], | ||||
|           }, | ||||
|     files: | ||||
|       files?.flatMap<EndpointFolder["files"][number]>(({ relationTo, value }) => { | ||||
|         if (!isPayloadType(value) || ("_status" in value && !isPublished(value))) { | ||||
|           return []; | ||||
|         } | ||||
| 
 | ||||
|         switch (relationTo) { | ||||
|           case Collections.Collectibles: | ||||
|             return [ | ||||
|               { | ||||
|                 relationTo: Collections.Collectibles, | ||||
|                 value: convertCollectibleToEndpointCollectiblePreview(value), | ||||
|               }, | ||||
|             ]; | ||||
|           case Collections.Pages: | ||||
|             return [ | ||||
|               { relationTo: Collections.Pages, value: convertPageToEndpointPagePreview(value) }, | ||||
|             ]; | ||||
|           case Collections.Images: | ||||
|             if (!isImage(value)) return []; | ||||
|             return [{ relationTo: Collections.Images, value: convertImageToEndpointImage(value) }]; | ||||
|           case Collections.Audios: | ||||
|             if (!isAudio(value)) return []; | ||||
|             return [{ relationTo: Collections.Audios, value: convertAudioToEndpointAudio(value) }]; | ||||
|           case Collections.Videos: | ||||
|             if (!isVideo(value)) return []; | ||||
|             return [{ relationTo: Collections.Videos, value: convertVideoToEndpointVideo(value) }]; | ||||
|           default: | ||||
|             return []; | ||||
|         } | ||||
|       }) ?? [], | ||||
|     parentPages: convertSourceToEndpointSource({ folders: parentFolders }), | ||||
|   }; | ||||
| }; | ||||
| 
 | ||||
| const isValidSection = (section: { | ||||
|   translations?: | ||||
|     | { | ||||
|  | ||||
| @ -7,7 +7,7 @@ import { | ||||
|   isNodeBlockNode, | ||||
| } from "../../../constants"; | ||||
| import { createGetByEndpoint } from "../../../endpoints/createGetByEndpoint"; | ||||
| import { EndpointPage, TableOfContentEntry } from "../../../sdk"; | ||||
| import { EndpointPage, EndpointPagePreview, TableOfContentEntry } from "../../../sdk"; | ||||
| import { Page } from "../../../types/collections"; | ||||
| import { isImage, isNotEmpty, isPayloadType } from "../../../utils/asserts"; | ||||
| import { | ||||
| @ -17,7 +17,7 @@ import { | ||||
|   convertSourceToEndpointSource, | ||||
| } from "../../../utils/endpoints"; | ||||
| import { convertImageToEndpointImage } from "../../Images/endpoints/getByID"; | ||||
| import { convertRecorderToEndpointRecorder } from "../../Recorders/endpoints/getByID"; | ||||
| import { convertRecorderToEndpointRecorderPreview } from "../../Recorders/endpoints/getByID"; | ||||
| 
 | ||||
| export const getBySlugEndpoint = createGetByEndpoint({ | ||||
|   collection: Collections.Pages, | ||||
| @ -25,43 +25,56 @@ export const getBySlugEndpoint = createGetByEndpoint({ | ||||
|   handler: (page) => convertPageToEndpointPage(page), | ||||
| }); | ||||
| 
 | ||||
| export const convertPageToEndpointPage = ({ | ||||
| export const convertPageToEndpointPagePreview = ({ | ||||
|   id, | ||||
|   translations, | ||||
|   collectibles, | ||||
|   folders, | ||||
|   backgroundImage, | ||||
|   slug, | ||||
|   attributes, | ||||
|   thumbnail, | ||||
|   createdAt, | ||||
|   updatedAt, | ||||
|   updatedBy, | ||||
| }: Page): EndpointPage => ({ | ||||
| }: Page): EndpointPagePreview => ({ | ||||
|   id, | ||||
|   slug, | ||||
|   ...(isImage(thumbnail) ? { thumbnail: convertImageToEndpointImage(thumbnail) } : {}), | ||||
|   ...(isImage(backgroundImage) | ||||
|     ? { backgroundImage: convertImageToEndpointImage(backgroundImage) } | ||||
|     : {}), | ||||
|   attributes: convertAttributesToEndpointAttributes(attributes), | ||||
|   translations: translations.map( | ||||
|     ({ content, language, sourceLanguage, title, pretitle, subtitle, summary, credits }) => ({ | ||||
|       language: isPayloadType(language) ? language.id : language, | ||||
|       sourceLanguage: isPayloadType(sourceLanguage) ? sourceLanguage.id : sourceLanguage, | ||||
|       ...(isNotEmpty(pretitle) ? { pretitle } : {}), | ||||
|       title, | ||||
|       ...(isNotEmpty(subtitle) ? { subtitle } : {}), | ||||
|       ...(isNotEmpty(summary) ? { summary } : {}), | ||||
|       content: convertRTCToEndpointRTC(content), | ||||
|       toc: handleToc(content), | ||||
|       credits: convertCreditsToEndpointCredits(credits), | ||||
|     }) | ||||
|   ), | ||||
|   createdAt, | ||||
|   translations: translations.map(({ language, title, pretitle, subtitle }) => ({ | ||||
|     language: isPayloadType(language) ? language.id : language, | ||||
|     ...(isNotEmpty(pretitle) ? { pretitle } : {}), | ||||
|     title, | ||||
|     ...(isNotEmpty(subtitle) ? { subtitle } : {}), | ||||
|   })), | ||||
|   updatedAt, | ||||
|   ...(isPayloadType(updatedBy) ? { updatedBy: convertRecorderToEndpointRecorder(updatedBy) } : {}), | ||||
|   parentPages: convertSourceToEndpointSource({ collectibles, folders }), | ||||
| }); | ||||
| 
 | ||||
| const convertPageToEndpointPage = (page: Page): EndpointPage => { | ||||
|   const { translations, collectibles, folders, backgroundImage, createdAt, updatedBy } = page; | ||||
| 
 | ||||
|   return { | ||||
|     ...convertPageToEndpointPagePreview(page), | ||||
|     ...(isImage(backgroundImage) | ||||
|       ? { backgroundImage: convertImageToEndpointImage(backgroundImage) } | ||||
|       : {}), | ||||
|     translations: translations.map( | ||||
|       ({ content, language, sourceLanguage, title, pretitle, subtitle, summary, credits }) => ({ | ||||
|         language: isPayloadType(language) ? language.id : language, | ||||
|         sourceLanguage: isPayloadType(sourceLanguage) ? sourceLanguage.id : sourceLanguage, | ||||
|         ...(isNotEmpty(pretitle) ? { pretitle } : {}), | ||||
|         title, | ||||
|         ...(isNotEmpty(subtitle) ? { subtitle } : {}), | ||||
|         ...(isNotEmpty(summary) ? { summary } : {}), | ||||
|         content: convertRTCToEndpointRTC(content), | ||||
|         toc: handleToc(content), | ||||
|         credits: convertCreditsToEndpointCredits(credits), | ||||
|       }) | ||||
|     ), | ||||
|     createdAt, | ||||
|     ...(isPayloadType(updatedBy) | ||||
|       ? { updatedBy: convertRecorderToEndpointRecorderPreview(updatedBy) } | ||||
|       : {}), | ||||
|     parentPages: convertSourceToEndpointSource({ collectibles, folders }), | ||||
|   }; | ||||
| }; | ||||
| 
 | ||||
| const handleToc = (content: RichTextContent, parentPrefix = ""): TableOfContentEntry[] => { | ||||
|   let index = 0; | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import payload from "payload"; | ||||
| import { Collections } from "../../../constants"; | ||||
| import { EndpointRecorder } from "../../../sdk"; | ||||
| import { EndpointRecorder, EndpointRecorderPreview } from "../../../sdk"; | ||||
| import { Recorder } from "../../../types/collections"; | ||||
| import { CollectionEndpoint } from "../../../types/payload"; | ||||
| import { isImage, isPayloadType } from "../../../utils/asserts"; | ||||
| @ -38,21 +38,26 @@ export const getByID: CollectionEndpoint = { | ||||
|   }, | ||||
| }; | ||||
| 
 | ||||
| export const convertRecorderToEndpointRecorder = ({ | ||||
| export const convertRecorderToEndpointRecorderPreview = ({ | ||||
|   id, | ||||
|   languages, | ||||
|   username, | ||||
|   avatar, | ||||
|   anonymize, | ||||
|   translations, | ||||
| }: Recorder): EndpointRecorder => ({ | ||||
| }: Recorder): EndpointRecorderPreview => ({ | ||||
|   id, | ||||
|   languages: languages?.map((language) => (isPayloadType(language) ? language.id : language)) ?? [], | ||||
|   username: anonymize ? `Recorder#${id.substring(0, 5)}` : username, | ||||
|   ...(isImage(avatar) ? { avatar: convertImageToEndpointImage(avatar) } : {}), | ||||
|   translations: | ||||
|     translations?.map(({ language, biography }) => ({ | ||||
|       language: isPayloadType(language) ? language.id : language, | ||||
|       biography: convertRTCToEndpointRTC(biography), | ||||
|     })) ?? [], | ||||
| }); | ||||
| 
 | ||||
| const convertRecorderToEndpointRecorder = (recorder: Recorder): EndpointRecorder => { | ||||
|   const { languages, avatar, translations } = recorder; | ||||
|   return { | ||||
|     ...convertRecorderToEndpointRecorderPreview(recorder), | ||||
|     languages: | ||||
|       languages?.map((language) => (isPayloadType(language) ? language.id : language)) ?? [], | ||||
|     ...(isImage(avatar) ? { avatar: convertImageToEndpointImage(avatar) } : {}), | ||||
|     translations: | ||||
|       translations?.map(({ language, biography }) => ({ | ||||
|         language: isPayloadType(language) ? language.id : language, | ||||
|         biography: convertRTCToEndpointRTC(biography), | ||||
|       })) ?? [], | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| @ -3,7 +3,7 @@ import { Collections } from "../../../constants"; | ||||
| import { EndpointWebsiteConfig } from "../../../sdk"; | ||||
| import { CollectionEndpoint } from "../../../types/payload"; | ||||
| import { isImage, isPayloadType } from "../../../utils/asserts"; | ||||
| import { convertFolderToEndpointFolder } from "../../Folders/endpoints/getBySlugEndpoint"; | ||||
| import { convertFolderToEndpointFolderPreview } from "../../Folders/endpoints/getBySlugEndpoint"; | ||||
| import { convertImageToEndpointImage } from "../../Images/endpoints/getByID"; | ||||
| 
 | ||||
| export const getConfigEndpoint: CollectionEndpoint = { | ||||
| @ -57,7 +57,7 @@ export const getConfigEndpoint: CollectionEndpoint = { | ||||
|           homeFolders?.flatMap(({ folder, darkThumbnail, lightThumbnail }) => { | ||||
|             if (!isPayloadType(folder)) return []; | ||||
|             return { | ||||
|               ...convertFolderToEndpointFolder(folder), | ||||
|               ...convertFolderToEndpointFolderPreview(folder), | ||||
|               ...(isImage(darkThumbnail) | ||||
|                 ? { darkThumbnail: convertImageToEndpointImage(darkThumbnail) } | ||||
|                 : {}), | ||||
|  | ||||
							
								
								
									
										91
									
								
								src/sdk.ts
									
									
									
									
									
								
							
							
						
						
									
										91
									
								
								src/sdk.ts
									
									
									
									
									
								
							| @ -10,31 +10,37 @@ import { Currency, Language } from "./types/collections"; | ||||
| 
 | ||||
| // END MOCKING SECTION
 | ||||
| 
 | ||||
| export type EndpointFolder = { | ||||
| export type EndpointFolderPreview = { | ||||
|   id: string; | ||||
|   slug: string; | ||||
|   icon?: string; | ||||
|   translations: { | ||||
|     language: string; | ||||
|     name: string; | ||||
|     description?: RichTextContent; | ||||
|     title: string; | ||||
|   }[]; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointFolder = EndpointFolderPreview & { | ||||
|   translations: (EndpointFolderPreview["translations"][number] & { | ||||
|     description?: RichTextContent; | ||||
|   })[]; | ||||
|   sections: | ||||
|     | { type: "single"; subfolders: EndpointFolder[] } | ||||
|     | { type: "single"; subfolders: EndpointFolderPreview[] } | ||||
|     | { | ||||
|         type: "multiple"; | ||||
|         sections: { | ||||
|           translations: { language: string; name: string }[]; | ||||
|           subfolders: EndpointFolder[]; | ||||
|           subfolders: EndpointFolderPreview[]; | ||||
|         }[]; | ||||
|       }; | ||||
|   files: ( | ||||
|     | { | ||||
|         relationTo: Collections.Collectibles; | ||||
|         value: EndpointCollectible; | ||||
|         value: EndpointCollectiblePreview; | ||||
|       } | ||||
|     | { | ||||
|         relationTo: Collections.Pages; | ||||
|         value: EndpointPage; | ||||
|         value: EndpointPagePreview; | ||||
|       } | ||||
|     | { | ||||
|         relationTo: Collections.Images; | ||||
| @ -55,7 +61,7 @@ export type EndpointFolder = { | ||||
| export type EndpointWebsiteConfig = { | ||||
|   home: { | ||||
|     backgroundImage?: EndpointImage; | ||||
|     folders: (EndpointFolder & { | ||||
|     folders: (EndpointFolderPreview & { | ||||
|       lightThumbnail?: EndpointImage; | ||||
|       darkThumbnail?: EndpointImage; | ||||
|     })[]; | ||||
| @ -73,9 +79,12 @@ export type EndpointWebsiteConfig = { | ||||
|   defaultOpenGraphImage?: EndpointImage; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointRecorder = { | ||||
| export type EndpointRecorderPreview = { | ||||
|   id: string; | ||||
|   username: string; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointRecorder = EndpointRecorderPreview & { | ||||
|   avatar?: EndpointImage; | ||||
|   translations: { | ||||
|     language: string; | ||||
| @ -93,8 +102,9 @@ export type EndpointWording = { | ||||
| }; | ||||
| 
 | ||||
| export type EndpointTag = { | ||||
|   id: string; | ||||
|   slug: string; | ||||
|   page?: EndpointPage; | ||||
|   page?: { slug: string }; | ||||
|   translations: { | ||||
|     language: string; | ||||
|     name: string; | ||||
| @ -102,6 +112,7 @@ export type EndpointTag = { | ||||
| }; | ||||
| 
 | ||||
| export type EndpointGenericAttribute = { | ||||
|   id: string; | ||||
|   slug: string; | ||||
|   icon: string; | ||||
|   translations: { | ||||
| @ -131,6 +142,7 @@ export type EndpointAttribute = | ||||
|   | EndpointTagsAttribute; | ||||
| 
 | ||||
| export type EndpointRole = { | ||||
|   id: string; | ||||
|   icon: string; | ||||
|   translations: { | ||||
|     language: string; | ||||
| @ -140,32 +152,39 @@ export type EndpointRole = { | ||||
| 
 | ||||
| export type EndpointCredit = { | ||||
|   role: EndpointRole; | ||||
|   recorders: EndpointRecorder[]; | ||||
|   recorders: EndpointRecorderPreview[]; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointPage = { | ||||
| export type EndpointPagePreview = { | ||||
|   id: string; | ||||
|   slug: string; | ||||
|   thumbnail?: EndpointImage; | ||||
|   attributes: EndpointAttribute[]; | ||||
|   backgroundImage?: EndpointImage; | ||||
|   translations: { | ||||
|     language: string; | ||||
|     pretitle?: string; | ||||
|     title: string; | ||||
|     subtitle?: string; | ||||
|   }[]; | ||||
|   updatedAt: string; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointPage = EndpointPagePreview & { | ||||
|   backgroundImage?: EndpointImage; | ||||
|   translations: (EndpointPagePreview["translations"][number] & { | ||||
|     sourceLanguage: string; | ||||
|     summary?: RichTextContent; | ||||
|     content: RichTextContent; | ||||
|     credits: EndpointCredit[]; | ||||
|     toc: TableOfContentEntry[]; | ||||
|   }[]; | ||||
|   })[]; | ||||
|   createdAt: string; | ||||
|   updatedAt: string; | ||||
|   updatedBy?: EndpointRecorder; | ||||
|   updatedBy?: EndpointRecorderPreview; | ||||
|   parentPages: EndpointSource[]; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointCollectible = { | ||||
| export type EndpointCollectiblePreview = { | ||||
|   id: string; | ||||
|   slug: string; | ||||
|   thumbnail?: EndpointImage; | ||||
|   translations: { | ||||
| @ -173,20 +192,25 @@ export type EndpointCollectible = { | ||||
|     pretitle?: string; | ||||
|     title: string; | ||||
|     subtitle?: string; | ||||
|     description?: RichTextContent; | ||||
|   }[]; | ||||
|   attributes: EndpointAttribute[]; | ||||
|   releaseDate?: string; | ||||
|   languages: string[]; | ||||
|   price?: { | ||||
|     amount: number; | ||||
|     currency: string; | ||||
|   }; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointCollectible = EndpointCollectiblePreview & { | ||||
|   translations: (EndpointCollectiblePreview["translations"][number] & { | ||||
|     description?: RichTextContent; | ||||
|   })[]; | ||||
|   backgroundImage?: EndpointImage; | ||||
|   nature: CollectibleNature; | ||||
|   gallery?: { count: number; thumbnail: EndpointImage }; | ||||
|   scans?: { count: number; thumbnail: EndpointScanImage }; | ||||
|   urls: { url: string; label: string }[]; | ||||
|   price?: { | ||||
|     amount: number; | ||||
|     currency: string; | ||||
|   }; | ||||
|   size?: { | ||||
|     width: number; | ||||
|     height: number; | ||||
| @ -198,12 +222,12 @@ export type EndpointCollectible = { | ||||
|     bindingType?: CollectibleBindingTypes; | ||||
|     pageOrder?: CollectiblePageOrders; | ||||
|   }; | ||||
|   subitems: EndpointCollectible[]; | ||||
|   subitems: EndpointCollectiblePreview[]; | ||||
|   contents: { | ||||
|     content: | ||||
|       | { | ||||
|           relationTo: Collections.Pages; | ||||
|           value: EndpointPage; | ||||
|           value: EndpointPagePreview; | ||||
|         } | ||||
|       | { | ||||
|           relationTo: Collections.Audios; | ||||
| @ -244,7 +268,7 @@ export type EndpointCollectible = { | ||||
|   }[]; | ||||
|   createdAt: string; | ||||
|   updatedAt: string; | ||||
|   updatedBy?: EndpointRecorder; | ||||
|   updatedBy?: EndpointRecorderPreview; | ||||
|   parentPages: EndpointSource[]; | ||||
| }; | ||||
| 
 | ||||
| @ -377,20 +401,26 @@ export type EndpointChronologyEvent = { | ||||
|   }[]; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointSourcePreview = { | ||||
|   id: string; | ||||
|   slug: string; | ||||
|   translations: { language: string; pretitle?: string; title: string; subtitle?: string }[]; | ||||
| }; | ||||
| 
 | ||||
| export type EndpointSource = | ||||
|   | { type: "url"; url: string; label: string } | ||||
|   | { | ||||
|       type: "collectible"; | ||||
|       collectible: EndpointCollectible; | ||||
|       collectible: EndpointSourcePreview; | ||||
|       range?: | ||||
|         | { type: "page"; page: number } | ||||
|         | { type: "timestamp"; timestamp: string } | ||||
|         | { type: "custom"; translations: { language: string; note: string }[] }; | ||||
|     } | ||||
|   | { type: "page"; page: EndpointPage } | ||||
|   | { type: "folder"; folder: EndpointFolder } | ||||
|   | { type: "scans"; collectible: EndpointCollectible } | ||||
|   | { type: "gallery"; collectible: EndpointCollectible }; | ||||
|   | { type: "page"; page: EndpointSourcePreview } | ||||
|   | { type: "folder"; folder: EndpointSourcePreview } | ||||
|   | { type: "scans"; collectible: EndpointSourcePreview } | ||||
|   | { type: "gallery"; collectible: EndpointSourcePreview }; | ||||
| 
 | ||||
| export type EndpointMedia = { | ||||
|   id: string; | ||||
| @ -450,6 +480,7 @@ export type EndpointMediaThumbnail = PayloadImage & { | ||||
| }; | ||||
| 
 | ||||
| export type PayloadMedia = { | ||||
|   id: string; | ||||
|   url: string; | ||||
|   mimeType: string; | ||||
|   filename: string; | ||||
|  | ||||
| @ -142,6 +142,8 @@ export interface Image { | ||||
|   filesize?: number | null; | ||||
|   width?: number | null; | ||||
|   height?: number | null; | ||||
|   focalX?: number | null; | ||||
|   focalY?: number | null; | ||||
|   sizes?: { | ||||
|     thumb?: { | ||||
|       url?: string | null; | ||||
| @ -620,6 +622,8 @@ export interface Scan { | ||||
|   filesize?: number | null; | ||||
|   width?: number | null; | ||||
|   height?: number | null; | ||||
|   focalX?: number | null; | ||||
|   focalY?: number | null; | ||||
|   sizes?: { | ||||
|     thumb?: { | ||||
|       url?: string | null; | ||||
| @ -725,6 +729,8 @@ export interface Audio { | ||||
|   filesize?: number | null; | ||||
|   width?: number | null; | ||||
|   height?: number | null; | ||||
|   focalX?: number | null; | ||||
|   focalY?: number | null; | ||||
| } | ||||
| /** | ||||
|  * This interface was referenced by `Config`'s JSON-Schema | ||||
| @ -740,6 +746,8 @@ export interface MediaThumbnail { | ||||
|   filesize?: number | null; | ||||
|   width?: number | null; | ||||
|   height?: number | null; | ||||
|   focalX?: number | null; | ||||
|   focalY?: number | null; | ||||
|   sizes?: { | ||||
|     thumb?: { | ||||
|       url?: string | null; | ||||
| @ -865,6 +873,8 @@ export interface Video { | ||||
|   filesize?: number | null; | ||||
|   width?: number | null; | ||||
|   height?: number | null; | ||||
|   focalX?: number | null; | ||||
|   focalY?: number | null; | ||||
| } | ||||
| /** | ||||
|  * This interface was referenced by `Config`'s JSON-Schema | ||||
| @ -878,6 +888,8 @@ export interface VideoSubtitle { | ||||
|   filesize?: number | null; | ||||
|   width?: number | null; | ||||
|   height?: number | null; | ||||
|   focalX?: number | null; | ||||
|   focalY?: number | null; | ||||
| } | ||||
| /** | ||||
|  * This interface was referenced by `Config`'s JSON-Schema | ||||
|  | ||||
| @ -1,9 +1,6 @@ | ||||
| import { convertAudioToEndpointAudio } from "../collections/Audios/endpoints/getByID"; | ||||
| import { convertCollectibleToEndpointCollectible } from "../collections/Collectibles/endpoints/getBySlugEndpoint"; | ||||
| import { convertFolderToEndpointFolder } from "../collections/Folders/endpoints/getBySlugEndpoint"; | ||||
| import { convertImageToEndpointImage } from "../collections/Images/endpoints/getByID"; | ||||
| import { convertPageToEndpointPage } from "../collections/Pages/endpoints/getBySlugEndpoint"; | ||||
| import { convertRecorderToEndpointRecorder } from "../collections/Recorders/endpoints/getByID"; | ||||
| import { convertRecorderToEndpointRecorderPreview } from "../collections/Recorders/endpoints/getByID"; | ||||
| import { convertVideoToEndpointVideo } from "../collections/Videos/endpoints/getByID"; | ||||
| import { | ||||
|   AttributeTypes, | ||||
| @ -26,6 +23,7 @@ import { | ||||
|   EndpointRole, | ||||
|   EndpointScanImage, | ||||
|   EndpointSource, | ||||
|   EndpointSourcePreview, | ||||
|   EndpointTag, | ||||
|   PayloadImage, | ||||
| } from "../sdk"; | ||||
| @ -50,6 +48,7 @@ import { | ||||
|   isDefined, | ||||
|   isEmpty, | ||||
|   isImage, | ||||
|   isNotEmpty, | ||||
|   isPayloadArrayType, | ||||
|   isPayloadImage, | ||||
|   isPayloadType, | ||||
| @ -57,9 +56,10 @@ import { | ||||
|   isVideo, | ||||
| } from "./asserts"; | ||||
| 
 | ||||
| const convertTagToEndpointTag = ({ slug, page, translations }: Tag): EndpointTag => ({ | ||||
| const convertTagToEndpointTag = ({ id, slug, page, translations }: Tag): EndpointTag => ({ | ||||
|   id, | ||||
|   slug, | ||||
|   ...(page && isPayloadType(page) ? { page: convertPageToEndpointPage(page) } : {}), | ||||
|   ...(page && isPayloadType(page) ? { page: { slug: page.slug } } : {}), | ||||
|   translations: translations.map(({ language, name }) => ({ | ||||
|     language: isPayloadType(language) ? language.id : language, | ||||
|     name, | ||||
| @ -134,6 +134,7 @@ export const convertRTCToEndpointRTC = ( | ||||
|   }; | ||||
| }; | ||||
| 
 | ||||
| // TODO: Handle URL sources
 | ||||
| export const convertSourceToEndpointSource = ({ | ||||
|   collectibles, | ||||
|   folders, | ||||
| @ -147,11 +148,39 @@ export const convertSourceToEndpointSource = ({ | ||||
| }): EndpointSource[] => { | ||||
|   const result: EndpointSource[] = []; | ||||
| 
 | ||||
|   const convertFolderToEndpointSourcePreview = ({ | ||||
|     id, | ||||
|     slug, | ||||
|     translations, | ||||
|   }: Folder): EndpointSourcePreview => ({ | ||||
|     id, | ||||
|     slug, | ||||
|     translations: translations.map(({ language, name }) => ({ | ||||
|       language: isPayloadType(language) ? language.id : language, | ||||
|       title: name, | ||||
|     })), | ||||
|   }); | ||||
| 
 | ||||
|   const convertCollectibleToEndpointSourcePreview = ({ | ||||
|     id, | ||||
|     slug, | ||||
|     translations, | ||||
|   }: Collectible): EndpointSourcePreview => ({ | ||||
|     id, | ||||
|     slug, | ||||
|     translations: translations.map(({ language, title, pretitle, subtitle }) => ({ | ||||
|       language: isPayloadType(language) ? language.id : language, | ||||
|       title, | ||||
|       ...(isNotEmpty(pretitle) ? { pretitle } : {}), | ||||
|       ...(isNotEmpty(subtitle) ? { subtitle } : {}), | ||||
|     })), | ||||
|   }); | ||||
| 
 | ||||
|   if (collectibles && isPayloadArrayType(collectibles)) { | ||||
|     collectibles.filter(isPublished).forEach((collectible) => { | ||||
|       result.push({ | ||||
|         type: "collectible", | ||||
|         collectible: convertCollectibleToEndpointCollectible(collectible), | ||||
|         collectible: convertCollectibleToEndpointSourcePreview(collectible), | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
| @ -160,7 +189,7 @@ export const convertSourceToEndpointSource = ({ | ||||
|     scans.filter(isPublished).forEach((collectible) => { | ||||
|       result.push({ | ||||
|         type: "scans", | ||||
|         collectible: convertCollectibleToEndpointCollectible(collectible), | ||||
|         collectible: convertCollectibleToEndpointSourcePreview(collectible), | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
| @ -169,7 +198,7 @@ export const convertSourceToEndpointSource = ({ | ||||
|     gallery.filter(isPublished).forEach((collectible) => { | ||||
|       result.push({ | ||||
|         type: "gallery", | ||||
|         collectible: convertCollectibleToEndpointCollectible(collectible), | ||||
|         collectible: convertCollectibleToEndpointSourcePreview(collectible), | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
| @ -178,7 +207,7 @@ export const convertSourceToEndpointSource = ({ | ||||
|     folders.forEach((folder) => { | ||||
|       result.push({ | ||||
|         type: "folder", | ||||
|         folder: convertFolderToEndpointFolder(folder), | ||||
|         folder: convertFolderToEndpointSourcePreview(folder), | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
| @ -198,7 +227,8 @@ export const getDomainFromUrl = (url: string): string => { | ||||
| export const getLanguageId = (language: string | Language) => | ||||
|   typeof language === "object" ? language.id : language; | ||||
| 
 | ||||
| const convertRoleToEndpointRole = ({ icon, translations }: CreditsRole): EndpointRole => ({ | ||||
| const convertRoleToEndpointRole = ({ id, icon, translations }: CreditsRole): EndpointRole => ({ | ||||
|   id, | ||||
|   icon: icon ?? "material-symbols:person", | ||||
|   translations: translations.map(({ language, name }) => ({ | ||||
|     language: getLanguageId(language), | ||||
| @ -212,7 +242,7 @@ export const convertCreditsToEndpointCredits = (credits?: Credits | null): Endpo | ||||
|     return [ | ||||
|       { | ||||
|         role: convertRoleToEndpointRole(role), | ||||
|         recorders: recorders.map(convertRecorderToEndpointRecorder), | ||||
|         recorders: recorders.map(convertRecorderToEndpointRecorderPreview), | ||||
|       }, | ||||
|     ]; | ||||
|   }) ?? []; | ||||
| @ -229,8 +259,9 @@ const convertAttributeToEndpointAttribute = ( | ||||
|     case "numberBlock": { | ||||
|       const { name, number } = attribute; | ||||
|       if (!isPayloadType(name)) return; | ||||
|       const { slug, icon, translations } = name; | ||||
|       const { id, slug, icon, translations } = name; | ||||
|       return { | ||||
|         id, | ||||
|         slug, | ||||
|         icon: icon ?? "material-symbols:category", | ||||
|         translations: translations.map(({ language, name }) => ({ | ||||
| @ -246,8 +277,9 @@ const convertAttributeToEndpointAttribute = ( | ||||
|       const { name, text } = attribute; | ||||
|       if (!isPayloadType(name)) return; | ||||
|       if (isEmpty(text)) return; | ||||
|       const { slug, icon, translations } = name; | ||||
|       const { id, slug, icon, translations } = name; | ||||
|       return { | ||||
|         id, | ||||
|         slug, | ||||
|         icon: icon ?? "material-symbols:category", | ||||
|         translations: translations.map(({ language, name }) => ({ | ||||
| @ -264,9 +296,10 @@ const convertAttributeToEndpointAttribute = ( | ||||
|       if (!isPayloadType(name)) return; | ||||
|       if (!isPayloadArrayType(tags)) return; | ||||
|       if (tags.length === 0) return; | ||||
|       const { slug, icon, translations } = name; | ||||
|       const { id, slug, icon, translations } = name; | ||||
| 
 | ||||
|       return { | ||||
|         id, | ||||
|         slug, | ||||
|         icon: icon ?? "material-symbols:category", | ||||
|         translations: translations.map(({ language, name }) => ({ | ||||
| @ -307,14 +340,14 @@ export const convertSizesToPayloadImages = ( | ||||
|     images.push(smallestImage); | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
|   return images; | ||||
| }; | ||||
| 
 | ||||
| export const convertScanToEndpointScanImage = ( | ||||
|   { url, width, height, mimeType, filename, filesize, sizes }: Scan & PayloadImage, | ||||
|   { id, url, width, height, mimeType, filename, filesize, sizes }: Scan & PayloadImage, | ||||
|   index: string | ||||
| ): EndpointScanImage => ({ | ||||
|   id, | ||||
|   index, | ||||
|   url, | ||||
|   width, | ||||
| @ -335,6 +368,7 @@ export const convertScanToEndpointScanImage = ( | ||||
| }); | ||||
| 
 | ||||
| export const convertMediaThumbnailToEndpointMediaThumbnail = ({ | ||||
|   id, | ||||
|   url, | ||||
|   width, | ||||
|   height, | ||||
| @ -343,6 +377,7 @@ export const convertMediaThumbnailToEndpointMediaThumbnail = ({ | ||||
|   filesize, | ||||
|   sizes, | ||||
| }: MediaThumbnail & PayloadImage): EndpointMediaThumbnail => ({ | ||||
|   id, | ||||
|   url, | ||||
|   width, | ||||
|   height, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 DrMint
						DrMint