import { map, unionBy } from "lodash"; import React, { ReactElement } from "react"; import ellipsize from "ellipsize"; import { Link, useNavigate } from "react-router-dom"; import Card from "../shared/Carda"; import Header from "../shared/Header"; import useEmblaCarousel from "embla-carousel-react"; import { GetVolumeGroupsQuery } from "../../graphql/generated"; type VolumeGroupsProps = { volumeGroups?: GetVolumeGroupsQuery['getComicBookGroups']; }; export const VolumeGroups = (props: VolumeGroupsProps): ReactElement | null => { // Till mongo gives us back the deduplicated results with the ObjectId const deduplicatedGroups = unionBy(props.volumeGroups, "volumes.id"); if (!deduplicatedGroups || deduplicatedGroups.length === 0) return null; const navigate = useNavigate(); const navigateToVolumes = (row: any) => { navigate(`/volumes/all`); }; // embla carousel const [emblaRef, emblaApi] = useEmblaCarousel({ loop: false, align: "start", containScroll: "trimSnaps", slidesToScroll: 1, }); return (
Based on ComicVine Volume information} iconClassNames="fa-solid fa-binoculars mr-2" link={"/volumes"} />
{map(deduplicatedGroups, (data) => { return (
{ellipsize(data.volumes?.name || 'Unknown', 48)}
{/* issue count */} {data.volumes?.count_of_issues || 0} issues
); })}
); }; export default VolumeGroups;