import React, { useState, useEffect, useMemo, ReactElement } from "react"; import PropTypes from "prop-types"; import { useNavigate } from "react-router"; import { removeLeadingPeriod, escapePoundSymbol, } from "../../shared/utils/formatting.utils"; import { useTable, usePagination } from "react-table"; import prettyBytes from "pretty-bytes"; import ellipsize from "ellipsize"; import { useDispatch, useSelector } from "react-redux"; import { getComicBooks } from "../../actions/fileops.actions"; import { isNil, isEmpty, isUndefined } from "lodash"; import Masonry from "react-masonry-css"; import Card from "../Carda"; import { detectIssueTypes } from "../../shared/utils/tradepaperback.utils"; import { Link } from "react-router-dom"; import { LIBRARY_SERVICE_HOST } from "../../constants/endpoints"; interface ILibraryGridProps {} export const LibraryGrid = (libraryGridProps: ILibraryGridProps) => { const data = useSelector( (state: RootState) => state.fileOps.recentComics.docs, ); const pageTotal = useSelector( (state: RootState) => state.fileOps.recentComics.totalDocs, ); const breakpointColumnsObj = { default: 5, 1100: 4, 700: 3, 500: 1, }; return (

Library

{data.map(({ _id, rawFileDetails, sourcedMetadata }) => { let imagePath = ""; let comicName = ""; if (!isEmpty(rawFileDetails.cover)) { const encodedFilePath = encodeURI( `${LIBRARY_SERVICE_HOST}/${removeLeadingPeriod( rawFileDetails.cover.filePath, )}`, ); imagePath = escapePoundSymbol(encodedFilePath); comicName = rawFileDetails.name; } else if (!isNil(sourcedMetadata)) { imagePath = sourcedMetadata.comicvine.image.small_url; comicName = sourcedMetadata.comicvine.name; } const titleElement = ( {ellipsize(comicName, 18)} ); return (
{!isEmpty(sourcedMetadata.comicvine) && ( )} {isNil(rawFileDetails) && ( )} {!isUndefined(sourcedMetadata.comicvine.volumeInformation) && !isEmpty( detectIssueTypes( sourcedMetadata.comicvine.volumeInformation.description, ), ) ? ( { detectIssueTypes( sourcedMetadata.comicvine.volumeInformation .description, ).displayName } ) : null}
); })}
); }; export default LibraryGrid;