🏗️ Refactored ComicDetailContainer with useQuery
This commit is contained in:
@@ -46,6 +46,7 @@ export const ComicDetail = (data: ComicDetailProps): ReactElement => {
|
|||||||
rawFileDetails,
|
rawFileDetails,
|
||||||
inferredMetadata,
|
inferredMetadata,
|
||||||
sourcedMetadata: { comicvine, locg, comicInfo },
|
sourcedMetadata: { comicvine, locg, comicInfo },
|
||||||
|
acquisition,
|
||||||
},
|
},
|
||||||
userSettings,
|
userSettings,
|
||||||
} = data;
|
} = data;
|
||||||
@@ -99,7 +100,7 @@ export const ComicDetail = (data: ComicDetailProps): ReactElement => {
|
|||||||
CVMatches: {
|
CVMatches: {
|
||||||
content: (props) => (
|
content: (props) => (
|
||||||
<>
|
<>
|
||||||
<div className="card search-criteria-card">
|
{/* <div className="card search-criteria-card">
|
||||||
<div className="card-content">
|
<div className="card-content">
|
||||||
<ComicVineSearchForm data={rawFileDetails} />
|
<ComicVineSearchForm data={rawFileDetails} />
|
||||||
</div>
|
</div>
|
||||||
@@ -133,7 +134,7 @@ export const ComicDetail = (data: ComicDetailProps): ReactElement => {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)} */}
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
@@ -192,7 +193,9 @@ export const ComicDetail = (data: ComicDetailProps): ReactElement => {
|
|||||||
id: 3,
|
id: 3,
|
||||||
icon: <i className="fa-regular fa-file-archive"></i>,
|
icon: <i className="fa-regular fa-file-archive"></i>,
|
||||||
name: "Archive Operations",
|
name: "Archive Operations",
|
||||||
content: <ArchiveOperations data={data.data} key={3} />,
|
content: <></>,
|
||||||
|
/*
|
||||||
|
<ArchiveOperations data={data.data} key={3} /> */
|
||||||
shouldShow: areRawFileDetailsAvailable,
|
shouldShow: areRawFileDetailsAvailable,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -284,7 +287,7 @@ export const ComicDetail = (data: ComicDetailProps): ReactElement => {
|
|||||||
Read
|
Read
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<Modal
|
{/* <Modal
|
||||||
style={{ content: { marginTop: "2rem" } }}
|
style={{ content: { marginTop: "2rem" } }}
|
||||||
isOpen={modalIsOpen}
|
isOpen={modalIsOpen}
|
||||||
onAfterOpen={afterOpenModal}
|
onAfterOpen={afterOpenModal}
|
||||||
@@ -301,13 +304,16 @@ export const ComicDetail = (data: ComicDetailProps): ReactElement => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Modal>
|
</Modal> */}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{<TabControls filteredTabs={filteredTabs} />}
|
<TabControls
|
||||||
|
filteredTabs={filteredTabs}
|
||||||
|
acquisition={acquisition}
|
||||||
|
/>
|
||||||
|
|
||||||
<SlidingPane
|
<SlidingPane
|
||||||
isOpen={visible}
|
isOpen={visible}
|
||||||
|
|||||||
@@ -3,17 +3,40 @@ import React, { ReactElement, useContext, useEffect, useState } from "react";
|
|||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
import { getComicBookDetailById } from "../../actions/comicinfo.actions";
|
import { getComicBookDetailById } from "../../actions/comicinfo.actions";
|
||||||
import { ComicDetail } from "../ComicDetail/ComicDetail";
|
import { ComicDetail } from "../ComicDetail/ComicDetail";
|
||||||
|
import { useQuery } from "@tanstack/react-query";
|
||||||
|
import { LIBRARY_SERVICE_BASE_URI } from "../../constants/endpoints";
|
||||||
|
import axios from "axios";
|
||||||
|
|
||||||
export const ComicDetailContainer = (): ReactElement | null => {
|
export const ComicDetailContainer = (): ReactElement | null => {
|
||||||
// const comicBookDetailData = useSelector(
|
|
||||||
// (state: RootState) => state.comicInfo.comicBookDetail,
|
|
||||||
// );
|
|
||||||
|
|
||||||
const { comicObjectId } = useParams<{ comicObjectId: string }>();
|
const { comicObjectId } = useParams<{ comicObjectId: string }>();
|
||||||
console.log(comicObjectId);
|
const {
|
||||||
|
data: comicBookDetailData,
|
||||||
|
isLoading,
|
||||||
|
isError,
|
||||||
|
} = useQuery({
|
||||||
|
queryKey: [],
|
||||||
|
queryFn: async () =>
|
||||||
|
await axios({
|
||||||
|
url: `${LIBRARY_SERVICE_BASE_URI}/getComicBookById`,
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
id: comicObjectId,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
console.log(comicBookDetailData);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// dispatch(getComicBookDetailById(comicObjectId));
|
// dispatch(getComicBookDetailById(comicObjectId));
|
||||||
// dispatch(getSettings());
|
// dispatch(getSettings());
|
||||||
}, []);
|
}, []);
|
||||||
return <ComicDetail data={comicBookDetailData} />;
|
|
||||||
|
{
|
||||||
|
isError && <>Error</>;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
isLoading && <>Loading...</>;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
comicBookDetailData?.data && <ComicDetail data={comicBookDetailData.data} />
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ export const TabControls = (props): ReactElement => {
|
|||||||
// const comicBookDetailData = useSelector(
|
// const comicBookDetailData = useSelector(
|
||||||
// (state: RootState) => state.comicInfo.comicBookDetail,
|
// (state: RootState) => state.comicInfo.comicBookDetail,
|
||||||
// );
|
// );
|
||||||
const { filteredTabs } = props;
|
const { filteredTabs, acquisition } = props;
|
||||||
|
|
||||||
const [active, setActive] = useState(filteredTabs[0].id);
|
const [active, setActive] = useState(filteredTabs[0].id);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setActive(filteredTabs[0].id);
|
setActive(filteredTabs[0].id);
|
||||||
}, [comicBookDetailData]);
|
}, [acquisition]);
|
||||||
|
|
||||||
|
console.log(filteredTabs);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="tabs">
|
<div className="tabs">
|
||||||
@@ -24,15 +24,11 @@ export const TabControls = (props): ReactElement => {
|
|||||||
>
|
>
|
||||||
{/* Downloads tab and count badge */}
|
{/* Downloads tab and count badge */}
|
||||||
<a>
|
<a>
|
||||||
{id === 6 &&
|
{id === 6 && !isNil(acquisition.directconnect) ? (
|
||||||
!isNil(comicBookDetailData.acquisition.directconnect) ? (
|
|
||||||
<span className="download-icon-labels">
|
<span className="download-icon-labels">
|
||||||
<i className="fa-solid fa-download"></i>
|
<i className="fa-solid fa-download"></i>
|
||||||
<span className="tag downloads-count is-info is-light">
|
<span className="tag downloads-count is-info is-light">
|
||||||
{
|
{acquisition.directconnect.downloads.length}
|
||||||
comicBookDetailData.acquisition.directconnect.downloads
|
|
||||||
.length
|
|
||||||
}
|
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
Reference in New Issue
Block a user