import "./DocumentModal.scss"; import { FC, useCallback, useEffect, useState } from "react"; import Button from "@/components/generics/button/Button"; import { GoX } from "react-icons/go"; import Modal from "react-modal"; import PdfViewer from "./PdfViewer"; import Spinner from "@/components/generics/spinner/Spinner"; import { getDocumentPdf } from "@/api/documents/documentsApi"; export interface DocumentModalProps { isOpen: boolean; file_id: string | null; file_xml_name: string; filename: string; setIsOpen: React.Dispatch>; } const customStyles = { content: { top: "50%", left: "50%", right: "auto", bottom: "auto", transform: "translate(-50%, -50%)", borderRadius: "15px", minWidth: "600px", }, }; export const DocumentModal: FC = ({ isOpen, file_id, filename, setIsOpen, }) => { const [file, setFile] = useState<{ file: Blob; filename: string } | null>( null ); const [isLoading, setIsLoading] = useState(false); const [isError, setIsError] = useState(false); const handleRead = useCallback(() => { setIsLoading(true); if (file_id !== null) { getDocumentPdf(null, file_id, filename) .then((file) => { setIsError(false); setFile(file); }) .catch(() => { setIsError(true); }) .finally(() => { setIsLoading(false); }); } }, [file_id, filename]); useEffect(() => { if (isOpen) { handleRead(); } }, [handleRead, isOpen]); function closeModal() { setIsOpen(false); setFile(null); } return (

{filename}

{isLoading || isError ? (
{!isError ? ( <> Загрузка документа ) : ( <>Ошибка загрузки документа )}
) : ( )}
); };