import React, { useState, useEffect, useRef } from "react"; import folder from "../../../assests/folder.png"; import "../LegaDrive.css"; import draftDoc from "../../../assests/draftDoc1.png"; import pdfLogo from "../../../assests/pdf3.png"; import axios from "axios"; import * as ContextMenu from "@radix-ui/react-context-menu"; import { saveAs } from "file-saver"; import { getHostUrl } from "../../../utils/Utils"; import { useNavigate } from "react-router-dom"; import Table from "react-bootstrap/Table"; import * as HoverCard from "@radix-ui/react-hover-card"; function PdfFileComponent({ pdfData, setFolderName, setDocId, setIsLoading, setPdfData, isList }) { const [rename, setRename] = useState(""); const [renameValue, setRenameValue] = useState(""); const inputRef = useRef(null); const navigate = useNavigate(); //to focus input box on press rename to change doc name useEffect(() => { if (rename && inputRef.current) { // console.log("ref", inputRef.current) setTimeout(() => { inputRef.current.focus(); }, 10); } }, [rename]); //function to handle folder component const handleOnclikFolder = (data) => { const folderData = { name: data.Name, objectId: data.objectId }; setFolderName((prev) => [...prev, folderData]); const loadObj = { isLoad: true, message: "This might take some time" }; setIsLoading(loadObj); setDocId(data.objectId); }; //function for change doc name and update doc name in _document class const handledRenameDoc = async (data) => { setRename(""); const trimmedValue = renameValue.trim(); if (trimmedValue.length > 0) { const updateName = { Name: renameValue }; const docId = data.objectId; const docData = pdfData; const updatedData = docData.map((item) => { if (item.objectId === docId) { // If the item's ID matches the target ID, update the name return { ...item, Name: renameValue }; } // If the item's ID doesn't match, keep it unchanged return item; }); setPdfData(updatedData); await axios .put( `${localStorage.getItem("baseUrl")}classes/${localStorage.getItem( "_appName" )}_Document/${docId}`, updateName, { headers: { "Content-Type": "application/json", "X-Parse-Application-Id": localStorage.getItem("parseAppId"), "X-Parse-Session-Token": localStorage.getItem("accesstoken") } } ) .then((result) => { // const res = result.data; // console.log("res", res); }) .catch((err) => { console.log("error updating field is decline ", err); }); } }; //function for navigate user to microapp-signature component const checkPdfStatus = async (data) => { const hostUrl = getHostUrl(); const expireDate = data.ExpiryDate.iso; const expireUpdateDate = new Date(expireDate).getTime(); const currDate = new Date().getTime(); const signerExist = data.Signers && data.Signers; const signUrl = data.SignedUrl && data.SignedUrl; const isDecline = data.IsDeclined && data.IsDeclined; const isPlaceholder = data.Placeholders && data.Placeholders; //checking and navigate to signyouself page const checkPlaceHolder = data.Placeholders; //checking if document has completed if (data.IsCompleted && signerExist) { navigate(`${hostUrl}pdfRequestFiles/${data.objectId}`); // window.location.hash = `/pdfRequestFiles/${data.objectId}`; } else if (data.IsCompleted && !signerExist) { navigate(`${hostUrl}signaturePdf/${data.objectId}`); } //checking if document has declined by someone else if (isDecline) { navigate(`${hostUrl}pdfRequestFiles/${data.objectId}`); // window.location.hash = `/pdfRequestFiles/${data.objectId}`; } else if (currDate > expireUpdateDate && signerExist && !isPlaceholder) { // window.location.hash = `/placeHolderSign/${data.objectId}`; navigate(`${hostUrl}placeHolderSign/${data.objectId}`); } else if ( currDate > expireUpdateDate && !signerExist && !isPlaceholder && !signUrl ) { navigate(`${hostUrl}signaturePdf/${data.objectId}`); // window.location.hash = `/signaturePdf/${data.objectId}`; } //checking if document has expired else if (currDate > expireUpdateDate) { navigate(`${hostUrl}pdfRequestFiles/${data.objectId}`); // window.location.hash = `/pdfRequestFiles/${data.objectId}`; } //checking if document is draft signers type and signers placeholder does not placed yet else if (!signUrl && signerExist) { // window.location.hash = `/placeHolderSign/${data.objectId}`; navigate(`${hostUrl}placeHolderSign/${data.objectId}`); } //checking if document is request type and signers placeholder exist and does not completed yet //then user can check progress of document and sign also else if ( checkPlaceHolder && checkPlaceHolder.length > 0 && !data.IsCompleted ) { navigate(`${hostUrl}pdfRequestFiles/${data.objectId}`); // window.location.hash = `/pdfRequestFiles/${data.objectId}`; } //checking document is draft and signyourself type then user can sign document else { navigate(`${hostUrl}signaturePdf/${data.objectId}`); // navigate(`/signaturePdf/${data.objectId}`); // window.location.hash = `/signaturePdf/${data.objectId}`; } }; //component to handle type of document and render according to type const handleFolderData = (data, ind, listType) => { // console.log("data", data); let createddate, status, isDecline, signerExist, isExpire, isComplete, signUrl, isPlaceholder; if (data.Type !== "Folder") { const expireDate = data.ExpiryDate && data.ExpiryDate.iso; const createdDate = data.createdAt && data.createdAt; createddate = new Date(createdDate).toLocaleDateString(); isComplete = data.IsCompleted && data.IsCompleted ? true : false; isDecline = data.IsDeclined && data.IsDeclined; isPlaceholder = data.Placeholders && data.Placeholders; signerExist = data.Signers && data.Signers; signUrl = data.SignedUrl && data.SignedUrl; const expireUpdateDate = new Date(expireDate).getTime(); const currDate = new Date().getTime(); if (currDate > expireUpdateDate) { isExpire = true; } else { isExpire = false; } if (isComplete) { status = "Completed"; } else if (isDecline) { status = "Declined"; } else if (isExpire && !isPlaceholder && signerExist) { // status = "Expired"; status = "Draft"; } else if (isExpire && !isPlaceholder && !signerExist && !signUrl) { // status = "Expired"; status = "Draft"; } else if (isExpire) { status = "Expired"; } else if (!signUrl) { status = "Draft"; } else { status = "InComplete"; } } const handleDraftDoc = (data) => { window.location.hash = `/mf/remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9MZWdhR2VuaWUtTWljcm9hcHBWMi9yZW1vdGVFbnRyeS5qcw==&moduleToLoad=AppRoutes&remoteName=legageniemicroapp/legagenie?${data.objectId}`; }; const handleMenuItemClick = (selectType, data) => { // console.log("data",data) if (selectType === "Download") { // console.log("download") const pdfName = data && data.Name; const pdfUrl = data && data.SignedUrl ? data.SignedUrl : data.URL; saveAs(pdfUrl, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); } else if (selectType === "Rename") { // console.log("rename") setRenameValue(data.Name); setRename(data.objectId); } }; const sanitizeFileName = (pdfName) => { // Replace spaces with underscore return pdfName.replace(/ /g, "_"); }; const handleEnterPress = (e, data) => { if (e.key === "Enter") { handledRenameDoc(data); } }; return listType === "table" ? ( data.Type === "Folder" ? (
| Name | Created Date | Type | Status | Action |
|---|