import React, { ReactElement, useEffect, useState } from "react"; import { isEmpty, isNil, isUndefined } from "lodash"; import { useSelector } from "react-redux"; import { ArchiveOperations } from "../ComicDetail/Tabs/ArchiveOperations"; import { ComicInfoXML } from "../ComicDetail/Tabs/ComicInfoXML"; import AcquisitionPanel from "../ComicDetail/AcquisitionPanel"; import DownloadsPanel from "../ComicDetail/DownloadsPanel"; import { VolumeInformation } from "../ComicDetail/Tabs/VolumeInformation"; export const TabControls = (props): ReactElement => { const comicBookDetailData = useSelector( (state: RootState) => state.comicInfo.comicBookDetail, ); const libraryServiceCallInProgress = useSelector( (state: RootState) => state.fileOps.IMSCallInProgress, ); const { comicObjectId } = props; // check for the availability of CV metadata const isComicBookMetadataAvailable = comicBookDetailData.sourcedMetadata && !isUndefined(comicBookDetailData.sourcedMetadata.comicvine) && !isUndefined( comicBookDetailData.sourcedMetadata.comicvine.volumeInformation, ) && !isEmpty(comicBookDetailData.sourcedMetadata); // check for the availability of rawFileDetails const areRawFileDetailsAvailable = !isUndefined(comicBookDetailData.rawFileDetails) && !isEmpty(comicBookDetailData.rawFileDetails.cover); // query for airdc++ const airDCPPQuery = {}; if (isComicBookMetadataAvailable) { Object.assign(airDCPPQuery, { issue: { name: comicBookDetailData.sourcedMetadata.comicvine.volumeInformation .name, }, }); } else if (areRawFileDetailsAvailable) { Object.assign(airDCPPQuery, { issue: { name: comicBookDetailData.inferredMetadata.issue.name, number: comicBookDetailData.inferredMetadata.issue.number, }, }); } // Tab content and header details const tabGroup = [ { id: 1, name: "Volume Information", icon: , content: isComicBookMetadataAvailable ? ( ) : null, shouldShow: isComicBookMetadataAvailable, }, { id: 2, name: "ComicInfo.xml", icon: , content: (
{!isNil(comicBookDetailData.sourcedMetadata) && !isNil(comicBookDetailData.sourcedMetadata.comicInfo) && ( )}
), shouldShow: !isUndefined(comicBookDetailData.sourcedMetadata) && !isEmpty(comicBookDetailData.sourcedMetadata.comicInfo), }, { id: 3, icon: , name: "Archive Operations", content: , shouldShow: areRawFileDetailsAvailable, }, { id: 4, icon: , name: "Acquisition", content: ( ), shouldShow: true, }, { id: 5, icon: null, name: !isNil(comicBookDetailData) && !isEmpty(comicBookDetailData) ? ( Downloads ) : ( "Downloads" ), content: !isNil(comicBookDetailData) && !isEmpty(comicBookDetailData) && ( ), shouldShow: true, }, ]; // filtered Tabs const filteredTabs = tabGroup.filter((tab) => tab.shouldShow); const [active, setActive] = useState(filteredTabs[0].id); return !libraryServiceCallInProgress ? ( <>
{filteredTabs.map(({ id, content }) => { return active === id ? content : null; })} ) : ( <>ANNA ); }; export default TabControls;