import React from "react"; import VersionListSkeleton from "./VersionListSkeleton"; import { getDocuementsStatus } from "./Documents"; import Avatar from "../common/Avatar"; import { formatUTCToLocalTime } from "../../utils/dateUtils"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { DOWNLOAD_DOCUMENT, VERIFY_DOCUMENT } from "../../utils/constants"; import { FileIcon } from "../../utils/FileIcon"; const DocumentVersionList = ({ versionLoding, versionList, isPending, setOpenDocument, VerifyDocument, }) => { const canVerifyDocument = useHasUserPermission(VERIFY_DOCUMENT); const canDownloadDocument = useHasUserPermission(DOWNLOAD_DOCUMENT); const handleOpenDocument = () => { if (canDownloadDocument) { setOpenDocument(true); } }; const contentTypeIcons = { "application/pdf": "fa-solid fa-file-pdf text-primary", "application/msword": "fa-solid fa-file-word text-primary", "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "fa-solid fa-file-word text-primary", "application/vnd.ms-excel": "fa-solid fa-file-excel text-success", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "fa-solid fa-file-excel text-primary", "application/vnd.ms-powerpoint": "fa-solid fa-file-powerpoint text-primary", "application/vnd.openxmlformats-officedocument.presentationml.presentation": "fa-solid fa-file-powerpoint text-primary", "image/jpg": "fa-solid fa-file-image text-primary", "image/jpeg": "fa-solid fa-file-image text-primary", "image/png": "fa-solid fa-file-image text-primary", "image/gif": "fa-solid fa-file-image text-primary", "text/plain": "fa-solid fa-file-lines text-primary", "text/csv": "fa-solid fa-file-csv text-primary", "application/json": "fa-solid fa-file-code text-primary", default: "fa-solid fa-file text-primary", }; const getIcon = (fileName = "") => { const ext = fileName.split(".").pop().toLowerCase(); return contentTypeIcons[ext] || contentTypeIcons.default; }; const sortedVersions = versionList?.data ? [...versionList.data].sort((a, b) => b.version - a.version) : []; if (versionLoding) { return ; } if (!sortedVersions.length) { return

No documents available.

; } const latestDoc = sortedVersions[0]; return (

{sortedVersions.map((document, index) => (
0 ? "ms-4" : "" // indent only older versions }`} >
{document.name} Version-{document.version} {" "} File Size: {document.fileSize} Kb
{formatUTCToLocalTime(document?.uploadedAt)} | Uploaded by{" "}
{`${document.uploadedBy?.firstName ?? ""} ${document.uploadedBy?.lastName ?? "" }`.trim() || "N/A"}
{document?.verifiedAt && ( <> {formatUTCToLocalTime(document?.verifiedAt)} |{" "} {document.isVerified ? "Verified by " : "Rejected by "}
{`${document.verifiedBy?.firstName ?? ""} ${document.verifiedBy?.lastName ?? "" }`.trim() || "N/A"}
)}
{document?.updatedAt && (
{formatUTCToLocalTime(document?.updatedAt)} | Updated by{" "}
{`${document.updatedBy?.firstName ?? ""} ${document.updatedBy?.lastName ?? "" }`.trim() || "N/A"}
)}
{getDocuementsStatus(document.isVerified)}
))}
); }; export default DocumentVersionList;