import React, { ReactElement, useCallback, useState } from "react"; import { useSelector, useDispatch } from "react-redux"; import { DnD } from "../../DnD"; import { isEmpty } from "lodash"; import Sticky from "react-stickynode"; import SlidingPane from "react-sliding-pane"; import { extractComicArchive } from "../../../actions/fileops.actions"; import { analyzeImage } from "../../../actions/fileops.actions"; export const ArchiveOperations = (props): ReactElement => { const { data } = props; const isComicBookExtractionInProgress = useSelector( (state: RootState) => state.fileOps.comicBookExtractionInProgress, ); const extractedComicBookArchive = useSelector( (state: RootState) => state.fileOps.extractedComicBookArchive, ); const imageAnalysisResult = useSelector( (state: RootState) => state.fileOps.imageAnalysisResults, ); const dispatch = useDispatch(); const unpackComicArchive = useCallback(() => { dispatch( extractComicArchive(data.rawFileDetails.filePath, { extractTarget: "book", targetExtractionFolder: "./userdata/expanded/" + data.rawFileDetails.name, extractionMode: "all", }), ); }, [dispatch, data]); // sliding panel config const [visible, setVisible] = useState(false); const [slidingPanelContentId, setSlidingPanelContentId] = useState(""); // current image const [currentImage, setCurrentImage] = useState([]); // sliding panel init const contentForSlidingPanel = { imageAnalysis: { content: () => { return (
{currentImage}
              {JSON.stringify(imageAnalysisResult, null, 2)}
            
); }, }, }; // sliding panel handlers const openImageAnalysisPanel = useCallback((imageFilePath) => { setSlidingPanelContentId("imageAnalysis"); dispatch(analyzeImage(imageFilePath)); setCurrentImage(imageFilePath); setVisible(true); }, []); return (
{!isEmpty(extractedComicBookArchive) ? ( ) : null}
{!isEmpty(extractedComicBookArchive) ? (
{extractedComicBookArchive.length} pages
) : null}
setVisible(false)} title={"Image Analysis"} width={"600px"} > {slidingPanelContentId !== "" && contentForSlidingPanel[slidingPanelContentId].content()}
); }; export default ArchiveOperations;