// ViewDocument.jsx import React, { useState } from "react"; import { useDocumentDetails, useDocumentVersionList, useVerifyDocument, } from "../../hooks/useDocument"; import { getDocuementsStatus, useDocumentContext } from "./Documents"; import { formatUTCToLocalTime } from "../../utils/dateUtils"; import Avatar from "../common/Avatar"; import { DOWNLOAD_DOCUMENT, ITEMS_PER_PAGE, VERIFY_DOCUMENT, } from "../../utils/constants"; import DocumentDetailsSkeleton from "./DocumentDetailsSkeleton "; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import DocumentVersionList from "./DocumentVersionList"; const ViewDocument = () => { const { viewDoc, setOpenDocument } = useDocumentContext(); const [currentPage, setCurrentPage] = useState(1); const [showVersions, setShowVersions] = useState(false); const canVerifyDocument = useHasUserPermission(VERIFY_DOCUMENT); // Document Details const { data, isLoading, isError, error } = useDocumentDetails( viewDoc?.document ); // Document Versions (fetch only if toggle is ON) const { data: versionList, isLoading: versionLoading, } = useDocumentVersionList( showVersions ? data?.parentAttachmentId : null, ITEMS_PER_PAGE - 10, currentPage ); const paginate = (page) => { if (page >= 1 && page <= (versionList?.totalPages ?? 1)) { setCurrentPage(page); } }; // Verify / Reject const { mutate: VerifyDoc, isPending } = useVerifyDocument(); const VerifyDocument = () => { VerifyDoc({ documentId: viewDoc?.document, isVerify: true }); }; const RejectDocument = () => { VerifyDoc({ documentId: viewDoc?.document, isVerify: false }); }; if (isLoading) return ; if (isError) return (

{error?.response?.data?.message || error?.message}

{error?.response?.status}

); return (

Document Details

{/* Document Info Rows */}
Category: {data.documentType?.documentCategory?.name || "-"}
Type: {data.documentType?.name || "-"}
Document Name: {data.name || "-"}
Document ID: {data.documentId || "-"}
Uploaded At: {formatUTCToLocalTime(data.uploadedAt)}
Tags:
{data.tags?.length > 0 ? ( data.tags.map((t, i) => ( {t.name} )) ) : ( - )}
Description: {data.description || "-"}
{/* Toggle for Versions */}

Documents:

setShowVersions(e.target.checked)} />
); }; export default ViewDocument;