diff --git a/src/client/components/ComicDetail.tsx b/src/client/components/ComicDetail.tsx
index 7761ac7..08050db 100644
--- a/src/client/components/ComicDetail.tsx
+++ b/src/client/components/ComicDetail.tsx
@@ -15,6 +15,11 @@ import { RawFileDetails } from "./ComicDetail/RawFileDetails";
import TabControls from "./ComicDetail/TabControls";
import { EditMetadataPanel } from "./ComicDetail/EditMetadataPanel";
import { Menu } from "./ComicDetail/ActionMenu/Menu";
+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";
import { isEmpty, isUndefined, isNil } from "lodash";
import { RootState } from "threetwo-ui-typings";
@@ -174,6 +179,79 @@ export const ComicDetail = ({}: ComicDetailProps): ReactElement => {
});
}
+ // 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);
+
// Determine which cover image to use:
// 1. from the locally imported or
// 2. from the CV-scraped version
@@ -255,7 +333,7 @@ export const ComicDetail = ({}: ComicDetailProps): 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 { filteredTabs } = props;
const [active, setActive] = useState(filteredTabs[0].id);
+ useEffect(() => {
+ console.log("changed");
+ setActive(filteredTabs[0].id);
+ }, [filteredTabs[0]]);
- return !libraryServiceCallInProgress ? (
+ return (
<>
@@ -157,8 +48,6 @@ export const TabControls = (props): ReactElement => {
return active === id ? content : null;
})}
>
- ) : (
- <>ANNA>
);
};
diff --git a/src/client/components/ComicDetail/Tabs/ArchiveOperations.tsx b/src/client/components/ComicDetail/Tabs/ArchiveOperations.tsx
index 3610ae8..c9655ed 100644
--- a/src/client/components/ComicDetail/Tabs/ArchiveOperations.tsx
+++ b/src/client/components/ComicDetail/Tabs/ArchiveOperations.tsx
@@ -1,7 +1,7 @@
import React, { ReactElement, useCallback, useState } from "react";
import { useSelector, useDispatch } from "react-redux";
import { DnD } from "../../DnD";
-import { isEmpty, isNil, isUndefined } from "lodash";
+import { isEmpty } from "lodash";
import Sticky from "react-stickynode";
import SlidingPane from "react-sliding-pane";
import { extractComicArchive } from "../../../actions/fileops.actions";
@@ -24,7 +24,7 @@ export const ArchiveOperations = (props): ReactElement => {
const dispatch = useDispatch();
const unpackComicArchive = useCallback(() => {
dispatch(extractComicArchive(data.rawFileDetails.filePath));
- }, [dispatch, data]);
+ }, []);
// sliding panel config
const [visible, setVisible] = useState(false);
@@ -55,7 +55,6 @@ export const ArchiveOperations = (props): ReactElement => {
// sliding panel handlers
const openImageAnalysisPanel = useCallback((imageFilePath) => {
- console.log(imageFilePath);
setSlidingPanelContentId("imageAnalysis");
dispatch(analyzeImage(imageFilePath));
setCurrentImage(imageFilePath);
diff --git a/src/client/components/ComicDetail/Tabs/ComicInfoXML.tsx b/src/client/components/ComicDetail/Tabs/ComicInfoXML.tsx
index 9aa0f07..ba4a575 100644
--- a/src/client/components/ComicDetail/Tabs/ComicInfoXML.tsx
+++ b/src/client/components/ComicDetail/Tabs/ComicInfoXML.tsx
@@ -1,3 +1,4 @@
+import { isUndefined } from "lodash";
import React, { ReactElement } from "react";
export const ComicInfoXML = (data): ReactElement => {
@@ -20,7 +21,7 @@ export const ComicInfoXML = (data): ReactElement => {
Issue #
- {parseInt(json.number[0], 10)}
+ {!isUndefined(json.number) && parseInt(json.number[0], 10)}