import React, { ReactElement } from "react"; import Card from "../shared/Carda"; import { Link, useNavigate } from "react-router-dom"; import ellipsize from "ellipsize"; import { isEmpty, isNil, isUndefined, map } from "lodash"; import { detectIssueTypes } from "../../shared/utils/tradepaperback.utils"; import { determineCoverFile } from "../../shared/utils/metadata.utils"; import Header from "../shared/Header"; import useEmblaCarousel from "embla-carousel-react"; import { GetWantedComicsQuery } from "../../graphql/generated"; type WantedComicsListProps = { comics?: GetWantedComicsQuery['getComicBooks']['docs']; }; export const WantedComicsList = ({ comics, }: WantedComicsListProps): ReactElement => { const navigate = useNavigate(); // embla carousel const [emblaRef, emblaApi] = useEmblaCarousel({ loop: false, align: "start", containScroll: "trimSnaps", slidesToScroll: 1, }); return (
Comics marked as wanted from various sources} iconClassNames="fa-solid fa-binoculars mr-2" link={"/wanted"} />
{map( comics, (comic) => { const { id, rawFileDetails, sourcedMetadata, } = comic; // Parse sourced metadata (GraphQL returns as strings) const comicvine = typeof sourcedMetadata?.comicvine === 'string' ? JSON.parse(sourcedMetadata.comicvine) : sourcedMetadata?.comicvine; const comicInfo = typeof sourcedMetadata?.comicInfo === 'string' ? JSON.parse(sourcedMetadata.comicInfo) : sourcedMetadata?.comicInfo; const locg = sourcedMetadata?.locg; const isComicBookMetadataAvailable = !isUndefined(comicvine); const consolidatedComicMetadata = { rawFileDetails, comicvine, comicInfo, locg, }; const { issueName, url, publisher = null, } = determineCoverFile(consolidatedComicMetadata); const titleElement = ( {ellipsize(issueName, 20)}

{publisher}

); return (
No Name} cardState="wanted" >
{/* Issue type */} {isComicBookMetadataAvailable && !isNil(detectIssueTypes(comicvine?.description)) ? (
{ detectIssueTypes(comicvine?.description) ?.displayName }
) : null} {/* Wanted comics - info not available in current GraphQL query */}
{/* comicVine metadata presence */} {isComicBookMetadataAvailable && ( {"ComicVine )} {!isEmpty(locg) && ( )}
); }, )}
); };