From 5a68e18c48524e856c87d03c6d3b049ee16f8c69 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Mon, 6 May 2024 18:46:12 +0530 Subject: [PATCH 1/7] fix: pdf url are not downloadable after some time --- apps/OpenSign/src/components/pdf/PdfHeader.js | 249 +++++++++--------- .../src/primitives/GetReportDisplay.js | 29 +- apps/OpenSignServer/cloud/main.js | 4 +- .../cloud/parsefunction/getSignedUrl.js | 23 ++ 4 files changed, 165 insertions(+), 140 deletions(-) diff --git a/apps/OpenSign/src/components/pdf/PdfHeader.js b/apps/OpenSign/src/components/pdf/PdfHeader.js index 896072f8e..eeac61ee3 100644 --- a/apps/OpenSign/src/components/pdf/PdfHeader.js +++ b/apps/OpenSign/src/components/pdf/PdfHeader.js @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import PrevNext from "./PrevNext"; import printModule from "print-js"; import { getBase64FromUrl } from "../../constant/Utils"; @@ -7,8 +7,9 @@ import "../../styles/signature.css"; import * as DropdownMenu from "@radix-ui/react-dropdown-menu"; import { useNavigate } from "react-router-dom"; import { themeColor } from "../../constant/const"; -import Certificate from "./Certificate"; -import { PDFDownloadLink } from "@react-pdf/renderer"; +import axios from "axios"; +import ModalUi from "../../primitives/ModalUi"; +import Parse from "parse"; function Header({ isPdfRequestFiles, @@ -39,6 +40,7 @@ function Header({ signerPos && signerPos?.filter((data) => data.Role !== "prefill"); const isMobile = window.innerWidth < 767; const navigate = useNavigate(); + const [isCertificate, setIsCertificate] = useState(false); const isGuestSigner = localStorage.getItem("isGuestSigner"); //for go to previous page function previousPage() { @@ -61,30 +63,43 @@ function Header({ const handleToPrint = async (event) => { event.preventDefault(); - const pdf = await getBase64FromUrl(pdfUrl); - const isAndroidDevice = navigator.userAgent.match(/Android/i); - const isAppleDevice = - (/iPad|iPhone|iPod/.test(navigator.platform) || - (navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1)) && - !window.MSStream; - if (isAndroidDevice || isAppleDevice) { - const byteArray = Uint8Array.from( - atob(pdf) - .split("") - .map((char) => char.charCodeAt(0)) - ); - const blob = new Blob([byteArray], { type: "application/pdf" }); - const blobUrl = URL.createObjectURL(blob); - window.open(blobUrl, "_blank"); - } else { - printModule({ printable: pdf, type: "pdf", base64: true }); + try { + const url = await Parse.Cloud.run("getsignedurl", { url: pdfUrl }); + const pdf = await getBase64FromUrl(url); + const isAndroidDevice = navigator.userAgent.match(/Android/i); + const isAppleDevice = + (/iPad|iPhone|iPod/.test(navigator.platform) || + (navigator.platform === "MacIntel" && + navigator.maxTouchPoints > 1)) && + !window.MSStream; + if (isAndroidDevice || isAppleDevice) { + const byteArray = Uint8Array.from( + atob(pdf) + .split("") + .map((char) => char.charCodeAt(0)) + ); + const blob = new Blob([byteArray], { type: "application/pdf" }); + const blobUrl = URL.createObjectURL(blob); + window.open(blobUrl, "_blank"); + } else { + printModule({ printable: pdf, type: "pdf", base64: true }); + } + } catch (err) { + console.log("err in getsignedurl", err); + alert("something went wrong, please try again later."); } }; //handle download signed pdf - const handleDownloadPdf = () => { + const handleDownloadPdf = async () => { const pdfName = pdfDetails[0] && pdfDetails[0].Name; - saveAs(pdfUrl, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); + try { + const url = await Parse.Cloud.run("getsignedurl", { url: pdfUrl }); + saveAs(url, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); + } catch (err) { + console.log("err in getsignedurl", err); + alert("something went wrong, please try again later."); + } }; const sanitizeFileName = (pdfName) => { @@ -102,55 +117,41 @@ function Header({ } catch (err) { console.log("err in download in certificate", err); } + } else { + setIsCertificate(true); + try { + const data = { + docId: pdfDetails[0]?.objectId + }; + const docDetails = await axios.post( + `${localStorage.getItem("baseUrl")}functions/getDocument`, + data, + { + headers: { + "Content-Type": "application/json", + "X-Parse-Application-Id": localStorage.getItem("parseAppId"), + sessionToken: localStorage.getItem("accesstoken") + } + } + ); + if (docDetails.data && docDetails.data.result) { + const doc = docDetails.data.result; + if (doc?.CertificateUrl) { + await fetch(doc?.CertificateUrl); + const certificateUrl = doc?.CertificateUrl; + saveAs(certificateUrl, `Certificate_signed_by_OpenSign™.pdf`); + setIsCertificate(false); + } else { + setIsCertificate(true); + } + } + } catch (err) { + console.log("err in download in certificate", err); + alert("something went wrong, please try again later."); + } } }; - const GenerateCertificate = () => { - //after generate download certifcate pdf - const handleDownload = (pdfBlob, fileName) => { - if (pdfBlob) { - const url = window.URL.createObjectURL(pdfBlob); - // Create a temporary anchor element - const link = document.createElement("a"); - link.href = url; - link.download = fileName; - // Append the anchor to the body - document.body.appendChild(link); - // Programmatically click the anchor to trigger the download - link.click(); - // Remove the anchor from the body - document.body.removeChild(link); - // Release the object URL to free up resources - window.URL.revokeObjectURL(url); - } - }; - - return ( - e.preventDefault()} - style={{ textDecoration: "none", zIndex: "35" }} - document={} - > - {({ blob, loading }) => ( - - )} - - ); - }; return (
{isMobile && isShowHeader ? ( @@ -240,32 +241,24 @@ function Header({
{isCompleted && ( - <> - {pdfDetails[0] && pdfDetails[0]?.CertificateUrl ? ( - handleDownloadCertificate()} - > -
- - Certificate -
-
- ) : ( - - - - )} - + handleDownloadCertificate()} + > +
+ + Certificate +
+
)} {isSignYourself && ( {isCompleted && ( - <> - {pdfDetails[0] && pdfDetails[0]?.CertificateUrl ? ( - - ) : ( - - )} - + )} - ) : ( - - )} - + )} - {formatRow(item?.ExtUserPtr)} diff --git a/apps/OpenSignServer/cloud/main.js b/apps/OpenSignServer/cloud/main.js index 652e69e53..bc6cb66a2 100644 --- a/apps/OpenSignServer/cloud/main.js +++ b/apps/OpenSignServer/cloud/main.js @@ -36,6 +36,7 @@ import TenantAterFind from './parsefunction/TenantAfterFind.js'; import saveSubscription from './parsefunction/saveSubscription.js'; import VerifyEmail from './parsefunction/VerifyEmail.js'; import encryptedpdf from './parsefunction/encryptedPdf.js'; +import { getSignedUrl } from './parsefunction/getSignedUrl.js'; Parse.Cloud.define('AddUserToRole', addUserToGroups); Parse.Cloud.define('UserGroups', getUserGroups); @@ -74,4 +75,5 @@ Parse.Cloud.afterFind('contracts_Signature', SignatureAfterFind); Parse.Cloud.afterFind('partners_Tenant', TenantAterFind); Parse.Cloud.define('savesubscription', saveSubscription); Parse.Cloud.define('verifyemail', VerifyEmail); -Parse.Cloud.define('encryptedpdf', encryptedpdf) +Parse.Cloud.define('encryptedpdf', encryptedpdf); +Parse.Cloud.define('getsignedurl', getSignedUrl); diff --git a/apps/OpenSignServer/cloud/parsefunction/getSignedUrl.js b/apps/OpenSignServer/cloud/parsefunction/getSignedUrl.js index d2869b549..642b41fdd 100644 --- a/apps/OpenSignServer/cloud/parsefunction/getSignedUrl.js +++ b/apps/OpenSignServer/cloud/parsefunction/getSignedUrl.js @@ -1,4 +1,5 @@ import AWS from 'aws-sdk'; +import { useLocal } from '../../Utils.js'; const credentials = { accessKeyId: process.env.DO_ACCESS_KEY_ID, secretAccessKey: process.env.DO_SECRET_ACCESS_KEY, @@ -24,3 +25,25 @@ export default function getPresignedUrl(url) { }); return presignedGETURL; } + +export async function getSignedUrl(request) { + try { + const url = request.params.url; + if (!request?.user) { + throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, 'User is not authenticated.'); + } else { + if (useLocal !== 'true') { + const presignedUrl = getPresignedUrl(url); + return presignedUrl; + } else { + return url; + } + } + } catch (err) { + console.log('error in getsignedurl', err); + const code = err.code || 400; + const msg = err.message; + const error = new Parse.Error(code, msg); + throw error; + } +} From bddebf2758d1c108666d4eb3aa3398d980927584 Mon Sep 17 00:00:00 2001 From: Zathiel | Sys <26553418+Zathiel@users.noreply.github.com> Date: Mon, 6 May 2024 13:18:04 +0000 Subject: [PATCH 2/7] deps : upgrade pdfkit, nodemailer, mongoose, express, eslint package version --- apps/OpenSignServer/package-lock.json | 46 +++++++++++++-------------- apps/OpenSignServer/package.json | 6 ++-- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json index 4d464842a..ba80c14a1 100644 --- a/apps/OpenSignServer/package-lock.json +++ b/apps/OpenSignServer/package-lock.json @@ -14,19 +14,19 @@ "axios": "^1.6.8", "cors": "^2.8.5", "dotenv": "^16.4.5", - "express": "^4.18.3", + "express": "^4.19.2", "express-sse": "^0.5.3", "form-data": "^4.0.0", "generate-api-key": "^1.0.2", "googleapis": "^134.0.0", "jsonschema": "^1.4.1", "mailgun.js": "^10.2.1", - "mongoose": "^8.2.2", + "mongoose": "^8.3.3", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "node-forge": "^1.3.1", "node-signpdf": "^1.5.1", - "nodemailer": "^6.9.12", + "nodemailer": "^6.9.13", "parse": "^5.0.0", "parse-dbtool": "^1.2.0", "parse-server": "^6.5.5", @@ -4123,9 +4123,9 @@ } }, "node_modules/bson": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz", - "integrity": "sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz", + "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==", "engines": { "node": ">=16.20.1" } @@ -7595,9 +7595,9 @@ } }, "node_modules/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", "engines": { "node": ">=12.0.0" } @@ -7961,12 +7961,12 @@ } }, "node_modules/mongodb": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.3.0.tgz", - "integrity": "sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.5.0.tgz", + "integrity": "sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA==", "dependencies": { - "@mongodb-js/saslprep": "^1.1.0", - "bson": "^6.2.0", + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.4.0", "mongodb-connection-string-url": "^3.0.0" }, "engines": { @@ -8312,13 +8312,13 @@ } }, "node_modules/mongoose": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.2.2.tgz", - "integrity": "sha512-6sMxe1d3k/dBjiOX4ExNTNOP0g1x0iq8eXyg+ttgIXM3HLnQ0IUyXRwVVAPFFY6O4/8uYN5dB0Ec72FrexbPpw==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.3.3.tgz", + "integrity": "sha512-3kSk0db9DM2tLttCdS6WNRqewPleamFEa4Vz/Qldc0dB4Zow/FiZxb9GExHTJjBZQ9T2xiGleQ3GzRrES3hhsA==", "dependencies": { - "bson": "^6.2.0", - "kareem": "2.5.1", - "mongodb": "6.3.0", + "bson": "^6.5.0", + "kareem": "2.6.3", + "mongodb": "6.5.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -8503,9 +8503,9 @@ } }, "node_modules/nodemailer": { - "version": "6.9.12", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.12.tgz", - "integrity": "sha512-pnLo7g37Br3jXbF0bl5DekBJihm2q+3bB3l2o/B060sWmb5l+VqeScAQCBqaQ+5ezRZFzW5SciZNGdRDEbq89w==", + "version": "6.9.13", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz", + "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==", "engines": { "node": ">=6.0.0" } diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index f3773756c..e1546c204 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -23,19 +23,19 @@ "axios": "^1.6.8", "cors": "^2.8.5", "dotenv": "^16.4.5", - "express": "^4.18.3", + "express": "^4.19.2", "express-sse": "^0.5.3", "form-data": "^4.0.0", "generate-api-key": "^1.0.2", "googleapis": "^134.0.0", "jsonschema": "^1.4.1", "mailgun.js": "^10.2.1", - "mongoose": "^8.2.2", + "mongoose": "^8.3.3", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "node-forge": "^1.3.1", "node-signpdf": "^1.5.1", - "nodemailer": "^6.9.12", + "nodemailer": "^6.9.13", "parse": "^5.0.0", "parse-dbtool": "^1.2.0", "parse-server": "^6.5.5", From 23b48838ae7af9c029a64b26b11ca5640a79e8fd Mon Sep 17 00:00:00 2001 From: Zathiel | Sys <26553418+Zathiel@users.noreply.github.com> Date: Mon, 6 May 2024 13:18:57 +0000 Subject: [PATCH 3/7] deps : upgrade prettier, pretty-quick, postcss, autoprefixer, @babel/runtime-corejs2, reactour, react-rnd, @react-pdf/renderer, @formkit/auto-animate --- apps/OpenSign/package-lock.json | 198 +++++++++++++------------------- apps/OpenSign/package.json | 14 +-- 2 files changed, 86 insertions(+), 126 deletions(-) diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json index 4cc4ec3d6..a4b48dc59 100644 --- a/apps/OpenSign/package-lock.json +++ b/apps/OpenSign/package-lock.json @@ -8,9 +8,9 @@ "name": "open_sign", "version": "0.1.0", "dependencies": { - "@formkit/auto-animate": "^0.8.1", + "@formkit/auto-animate": "^0.8.2", "@radix-ui/themes": "^2.0.3", - "@react-pdf/renderer": "^3.4.0", + "@react-pdf/renderer": "^3.4.4", "@reduxjs/toolkit": "^2.2.1", "axios": "^1.6.8", "file-saver": "^2.0.5", @@ -36,7 +36,7 @@ "react-pdf": "^7.7.1", "react-quill": "^2.0.0", "react-redux": "^9.1.0", - "react-rnd": "^10.4.1", + "react-rnd": "^10.4.10", "react-router-dom": "^6.22.3", "react-scripts": "5.0.1", "react-scrollbars-custom": "^4.1.1", @@ -44,7 +44,7 @@ "react-signature-canvas": "^1.0.6", "react-tooltip": "^5.26.3", "react-web-share": "^2.0.2", - "reactour": "^1.19.2", + "reactour": "^1.19.3", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "regex-parser": "^2.3.0", @@ -53,14 +53,14 @@ "web-vitals": "^2.1.4" }, "devDependencies": { - "@babel/runtime-corejs2": "^7.24.1", - "autoprefixer": "^10.4.18", + "@babel/runtime-corejs2": "^7.24.5", + "autoprefixer": "^10.4.19", "commitizen": "^4.3.0", "eslint": "^8.57.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.34.1", "lint-staged": "^15.2.2", - "postcss": "^8.4.37", + "postcss": "^8.4.38", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", "tailwindcss": "^3.4.1" @@ -1994,9 +1994,9 @@ } }, "node_modules/@babel/runtime-corejs2": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.1.tgz", - "integrity": "sha512-De0q0utpUPiXnc7+B7Ku86mJ0eDItC/v3uFa/lQkq63XnHyZiytDHeCIvechlnVwwpU2ChjGF7c3I+mBrTudwg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.24.5.tgz", + "integrity": "sha512-cC9jiO6s/IN+xwCHYy1AGrcFJ4bwgIwb8HX1KaoEpRsznLlO4x9eBP6AX7RIeMSWlQqEj2WHox637OS8cDq6Ew==", "dev": true, "dependencies": { "core-js": "^2.6.12", @@ -2989,9 +2989,9 @@ "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" }, "node_modules/@formkit/auto-animate": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-0.8.1.tgz", - "integrity": "sha512-0/Z2cuNXWVVIG/l0SpcHAWFhGdvLJ8DRvEfRWvmojtmRWfEy+LWNwgDazbZqY0qQYtkHcoEK3jBLkhiZaB/4Ig==" + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-0.8.2.tgz", + "integrity": "sha512-SwPWfeRa5veb1hOIBMdzI+73te5puUBHmqqaF1Bu7FjvxlYSz/kJcZKSa9Cg60zL0uRNeJL2SbRxV6Jp6Q1nFQ==" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", @@ -5381,41 +5381,41 @@ } }, "node_modules/@react-pdf/font": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.4.4.tgz", - "integrity": "sha512-yjK5eSY+LcbxS0m+sOYln8GdgIbUgti4xjwf14kx8OSsOMJQJyHFALHMh2cLcKJR9yZeqVDo1FwCsY6gw1yCkg==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.5.1.tgz", + "integrity": "sha512-Hyb2zBb92Glc3lvhmJfy4dO2Mj29KB26Uk12Ua9EhKAdiuCTLBqgP8Oe1cGwrvDI7xA4OOcwvBMdYh0vhOUHzA==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/types": "^2.4.1", + "@react-pdf/types": "^2.5.0", "cross-fetch": "^3.1.5", "fontkit": "^2.0.2", "is-url": "^1.2.4" } }, "node_modules/@react-pdf/image": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.5.tgz", - "integrity": "sha512-YK8oeD4cYTbX2KwdsY5DEDpvsKQoGbf3kwlxAQwYm8wrEol8V/5oCl8H8ZqdZIYQhx2XPp63cocQfMCZGwf+4w==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.6.tgz", + "integrity": "sha512-7iZDYZrZlJqNzS6huNl2XdMcLFUo68e6mOdzQeJ63d5eApdthhSHBnkGzHfLhH5t8DCpZNtClmklzuLL63ADfw==", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/png-js": "^2.3.1", "cross-fetch": "^3.1.5", - "jay-peg": "^1.0.1" + "jay-peg": "^1.0.2" } }, "node_modules/@react-pdf/layout": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.11.3.tgz", - "integrity": "sha512-SwfIWmZl3yZDgb4Qa9ebjAZTd/FyI5E2curSfra6SuAkrsEF037cmVfxCTgYCkPwpVMv/omOENPI+WjhOKPofA==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.12.1.tgz", + "integrity": "sha512-BxSeykDxvADlpe4OGtQ7NH46QXq3uImAYsTHOPLCwbXMniQ1O3uCBx7H+HthxkCNshgYVPp9qS3KyvQv/oIZwg==", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", - "@react-pdf/image": "^2.3.5", - "@react-pdf/pdfkit": "^3.1.7", + "@react-pdf/image": "^2.3.6", + "@react-pdf/pdfkit": "^3.1.10", "@react-pdf/primitives": "^3.1.1", - "@react-pdf/stylesheet": "^4.2.4", + "@react-pdf/stylesheet": "^4.2.5", "@react-pdf/textkit": "^4.4.1", - "@react-pdf/types": "^2.4.1", + "@react-pdf/types": "^2.5.0", "cross-fetch": "^3.1.5", "emoji-regex": "^10.3.0", "queue": "^6.0.1", @@ -5428,16 +5428,16 @@ "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" }, "node_modules/@react-pdf/pdfkit": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.1.7.tgz", - "integrity": "sha512-iXMmATqW5Aycpzm8nNsZOHV/DX2lpd8l5VkaTy1HjzHgQ3MHoV45BHwRph53soEqoPo7rUfpjuSi7X3hngPWGA==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.1.10.tgz", + "integrity": "sha512-P/qPBtCFo2HDJD0i6NfbmoBRrsOVO8CIogYsefwG4fklTo50zNgnMM5U1WLckTuX8Qt1ThiQuokmTG5arheblA==", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/png-js": "^2.3.1", "browserify-zlib": "^0.2.0", "crypto-js": "^4.2.0", "fontkit": "^2.0.2", - "jay-peg": "^1.0.1", + "jay-peg": "^1.0.2", "vite-compatible-readable-stream": "^3.6.1" } }, @@ -5455,15 +5455,15 @@ "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==" }, "node_modules/@react-pdf/render": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.4.3.tgz", - "integrity": "sha512-9LL059vfwrK1gA0uIA4utpQ/pUH9EW/yia4bb7pCoARs8IlupY5UP265jgax15ua0p+MdUwShZzQ9rilu7kGsw==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.4.4.tgz", + "integrity": "sha512-CfGxWmVgrY3JgmB1iMnz2W6Ck+8pisZeFt8vGlxP+JfT+0onr208pQvGSV5KwA9LGhAdABxqc/+y17V3vtKdFA==", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", "@react-pdf/primitives": "^3.1.1", "@react-pdf/textkit": "^4.4.1", - "@react-pdf/types": "^2.4.1", + "@react-pdf/types": "^2.5.0", "abs-svg-path": "^0.1.1", "color-string": "^1.9.1", "normalize-svg-path": "^1.1.0", @@ -5472,17 +5472,17 @@ } }, "node_modules/@react-pdf/renderer": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-3.4.0.tgz", - "integrity": "sha512-8i/B8xJZ4AwINM/RRBnawBXfNACaehQT/bM19TOTUjHoddYaRKM1g1+qOZx58yfxfr5TFRs4fORxEPU1mGmR1A==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-3.4.4.tgz", + "integrity": "sha512-j1TWMHHXDeHdoQE3xjhBh0MZ2rn7wHIlP/uglr/EJZXqnPbfg6bfLzRJCM6bs+XJV3d8+zLQjHf6sF/fWcBDfg==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/font": "^2.4.4", - "@react-pdf/layout": "^3.11.3", - "@react-pdf/pdfkit": "^3.1.7", + "@react-pdf/font": "^2.5.1", + "@react-pdf/layout": "^3.12.1", + "@react-pdf/pdfkit": "^3.1.10", "@react-pdf/primitives": "^3.1.1", - "@react-pdf/render": "^3.4.3", - "@react-pdf/types": "^2.4.1", + "@react-pdf/render": "^3.4.4", + "@react-pdf/types": "^2.5.0", "events": "^3.3.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", @@ -5503,13 +5503,13 @@ } }, "node_modules/@react-pdf/stylesheet": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.2.4.tgz", - "integrity": "sha512-CgRfDzeMtnV0GL7zSn381NubmgwqKhFKcK1YrWX3azl/KWVh52jjFd3HWi6dvcETNT862mjWz5MnExe4WOBJXA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.2.5.tgz", + "integrity": "sha512-XnmapeCW+hDuNdVwpuvO04WKv71wAs8aH+saIq29Bo2fp1SxznHTcQArTZtK6Wgr/E9BHXeB2iAPpUZuI6G+xA==", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", - "@react-pdf/types": "^2.4.1", + "@react-pdf/types": "^2.5.0", "color-string": "^1.9.1", "hsl-to-hex": "^1.0.0", "media-engine": "^1.0.3", @@ -5529,9 +5529,9 @@ } }, "node_modules/@react-pdf/types": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.4.1.tgz", - "integrity": "sha512-w8pk7svhjVj5f7d7kjEGXSk26ffCqRSQcgWR4DwcFltNpSM18ZJmzmM6WrNeeP437y48LlykLnmGDA3oATakgw==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.5.0.tgz", + "integrity": "sha512-XsVRkt0hQ60I4e3leAVt+aZR3KJCaJd179BfJHAv4F4x6Vq3yqkry8lcbUWKGKDw1j3/8sW4FsgGR41SFvsG9A==" }, "node_modules/@reduxjs/toolkit": { "version": "2.2.1", @@ -7237,9 +7237,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.18", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", - "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "funding": [ { "type": "opencollective", @@ -7256,7 +7256,7 @@ ], "dependencies": { "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001591", + "caniuse-lite": "^1.0.30001599", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -8108,9 +8108,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001593", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", - "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "version": "1.0.30001616", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz", + "integrity": "sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==", "funding": [ { "type": "opencollective", @@ -11097,11 +11097,6 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" - }, "node_modules/fast-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", @@ -13385,9 +13380,9 @@ } }, "node_modules/jay-peg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.0.1.tgz", - "integrity": "sha512-zBfjkGbuuNXk8JW+rEePpPEbRRjupS8q+5yPak7kjy3e2GvvNwsLle9okEFvfGyZA6HvtSSiYrVd1/jgnYebaQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.0.2.tgz", + "integrity": "sha512-fyV3NVvv6pTys/3BTapBUGAWAuU9rM2gRcgijZHzptd5KKL+s+S7hESFN+wOsbDH1MzFwdlRAXi0aGxS6uiMKg==", "dependencies": { "restructure": "^3.0.0" } @@ -15942,11 +15937,6 @@ "dev": true, "optional": true }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" - }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -17650,9 +17640,9 @@ } }, "node_modules/postcss": { - "version": "8.4.37", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.37.tgz", - "integrity": "sha512-7iB/v/r7Woof0glKLH8b1SPHrsX7uhdO+Geb41QpF/+mWZHU3uxxSlN+UXGVit1PawOYDToO+AbZzhBzWRDwbQ==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -19373,12 +19363,9 @@ } }, "node_modules/re-resizable": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.6.tgz", - "integrity": "sha512-0xYKS5+Z0zk+vICQlcZW+g54CcJTTmHluA7JUUgvERDxnKAnytylcyPsA+BSFi759s5hPlHmBRegFrwXs2FuBQ==", - "dependencies": { - "fast-memoize": "^2.5.1" - }, + "version": "6.9.14", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.14.tgz", + "integrity": "sha512-2UbPrpezMr6gkHKNCRA/N6QGGU237SKOZ78yMHId204A/oXWSAREAIuGZNQ9qlrJosewzcsv2CphZH3u7hC6ng==", "peerDependencies": { "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0" @@ -19971,45 +19958,19 @@ } }, "node_modules/react-rnd": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.1.tgz", - "integrity": "sha512-0m887AjQZr6p2ADLNnipquqsDq4XJu/uqVqI3zuoGD19tRm6uB83HmZWydtkilNp5EWsOHbLGF4IjWMdd5du8Q==", + "version": "10.4.10", + "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.10.tgz", + "integrity": "sha512-YjQAgEeSbNUoOXSD9ZBvIiLVizFb+bNhpDk8DbIRHA557NW02CXbwsAeOTpJQnsdhEL+NP2I+Ssrwejqcodtjg==", "dependencies": { - "re-resizable": "6.9.6", - "react-draggable": "4.4.5", - "tslib": "2.3.1" + "re-resizable": "6.9.14", + "react-draggable": "4.4.6", + "tslib": "2.6.2" }, "peerDependencies": { "react": ">=16.3.0", "react-dom": ">=16.3.0" } }, - "node_modules/react-rnd/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/react-rnd/node_modules/react-draggable": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.5.tgz", - "integrity": "sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==", - "dependencies": { - "clsx": "^1.1.1", - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "react": ">= 16.3.0", - "react-dom": ">= 16.3.0" - } - }, - "node_modules/react-rnd/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, "node_modules/react-router": { "version": "6.22.3", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", @@ -20236,15 +20197,14 @@ } }, "node_modules/reactour": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/reactour/-/reactour-1.19.2.tgz", - "integrity": "sha512-gbbUiLn8LbpbDW6k+QlVySkblvOICBd3AWMGRKPQghhmuMlOHNqgjW32JrT406lZHUvVlA8+umYD/2MmCHkNOQ==", + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/reactour/-/reactour-1.19.3.tgz", + "integrity": "sha512-a2/j+xmbGlPMQhMy/zdpSmJN1STc0PcLUxhJbAC+bOcYdWHStFR02j6dhNuF/+IeqpX/d44PvlrRXSTt4LGk6w==", "dependencies": { "@rooks/use-mutation-observer": "4.11.2", "classnames": "2.3.1", "focus-outline-manager": "^1.0.2", "lodash.debounce": "4.0.8", - "lodash.pick": "4.4.0", "prop-types": "15.7.2", "react-focus-lock": "2.5.2", "scroll-smooth": "1.1.1", @@ -20702,9 +20662,9 @@ } }, "node_modules/restructure": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.0.tgz", - "integrity": "sha512-Xj8/MEIhhfj9X2rmD9iJ4Gga9EFqVlpMj3vfLnV2r/Mh5jRMryNV+6lWh9GdJtDBcBSPIqzRdfBQ3wDtNFv/uw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.1.tgz", + "integrity": "sha512-6neDpI/yE9eogQo22qmWwKIA9wFPRyYjQleDEh6zaNAf2ZPqLJYUvNBJBWEWNoBlCeQMQkvIOe2YI/K2GOag+g==" }, "node_modules/retry": { "version": "0.13.1", diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json index d7a59becc..cf4c66752 100644 --- a/apps/OpenSign/package.json +++ b/apps/OpenSign/package.json @@ -3,9 +3,9 @@ "version": "0.1.0", "private": true, "dependencies": { - "@formkit/auto-animate": "^0.8.1", + "@formkit/auto-animate": "^0.8.2", "@radix-ui/themes": "^2.0.3", - "@react-pdf/renderer": "^3.4.0", + "@react-pdf/renderer": "^3.4.4", "@reduxjs/toolkit": "^2.2.1", "axios": "^1.6.8", "file-saver": "^2.0.5", @@ -31,7 +31,7 @@ "react-pdf": "^7.7.1", "react-quill": "^2.0.0", "react-redux": "^9.1.0", - "react-rnd": "^10.4.1", + "react-rnd": "^10.4.10", "react-router-dom": "^6.22.3", "react-scripts": "5.0.1", "react-scrollbars-custom": "^4.1.1", @@ -39,7 +39,7 @@ "react-signature-canvas": "^1.0.6", "react-tooltip": "^5.26.3", "react-web-share": "^2.0.2", - "reactour": "^1.19.2", + "reactour": "^1.19.3", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "regex-parser": "^2.3.0", @@ -83,14 +83,14 @@ } }, "devDependencies": { - "@babel/runtime-corejs2": "^7.24.1", - "autoprefixer": "^10.4.18", + "@babel/runtime-corejs2": "^7.24.5", + "autoprefixer": "^10.4.19", "commitizen": "^4.3.0", "eslint": "^8.57.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.34.1", "lint-staged": "^15.2.2", - "postcss": "^8.4.37", + "postcss": "^8.4.38", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", "tailwindcss": "^3.4.1" From 4a7108e4f65e92871a398bb34abba5c9ac894a07 Mon Sep 17 00:00:00 2001 From: Daniel Mutwiri Date: Tue, 7 May 2024 08:48:55 +0300 Subject: [PATCH 4/7] Bug Fix: saveFileUsage is not defined. saveFileUsage imported from Utils.js --- .../OpenSignServer/cloud/customRoute/v1/routes/draftDocument.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/draftDocument.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/draftDocument.js index 7f31b66bc..7651c580e 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/draftDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/draftDocument.js @@ -1,5 +1,5 @@ import axios from 'axios'; -import { customAPIurl } from '../../../../Utils.js'; +import { customAPIurl, saveFileUsage } from '../../../../Utils.js'; // const randomId = () => Math.floor(1000 + Math.random() * 9000); export default async function draftDocument(request, response) { From 37b73e36ca2b9a809cab942a9857ffb69c6a4fe6 Mon Sep 17 00:00:00 2001 From: RaktimaNXG Date: Tue, 7 May 2024 11:42:48 +0530 Subject: [PATCH 5/7] fix: document error No PDF file specified --- apps/OpenSign/src/pages/PdfRequestFiles.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/OpenSign/src/pages/PdfRequestFiles.js b/apps/OpenSign/src/pages/PdfRequestFiles.js index 4b4cb0781..0eb54aeb0 100644 --- a/apps/OpenSign/src/pages/PdfRequestFiles.js +++ b/apps/OpenSign/src/pages/PdfRequestFiles.js @@ -1331,7 +1331,10 @@ function PdfRequestFiles() { {/* this component used to render all pdf pages in left side */} Date: Tue, 7 May 2024 12:20:43 +0530 Subject: [PATCH 6/7] Revert "fix: Document loading error `No PDF file specified`" --- apps/OpenSign/src/pages/PdfRequestFiles.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/OpenSign/src/pages/PdfRequestFiles.js b/apps/OpenSign/src/pages/PdfRequestFiles.js index 0eb54aeb0..4b4cb0781 100644 --- a/apps/OpenSign/src/pages/PdfRequestFiles.js +++ b/apps/OpenSign/src/pages/PdfRequestFiles.js @@ -1331,10 +1331,7 @@ function PdfRequestFiles() { {/* this component used to render all pdf pages in left side */} Date: Tue, 7 May 2024 13:39:39 +0530 Subject: [PATCH 7/7] fix: issue of showing currently incrypted file not supported when try to sign document --- apps/OpenSign/src/components/pdf/SignPad.js | 15 ++++---- apps/OpenSign/src/constant/Utils.js | 17 +++++---- apps/OpenSign/src/pages/PdfRequestFiles.js | 23 ++++++++----- apps/OpenSign/src/pages/SignyourselfPdf.js | 38 +++++++++++++-------- 4 files changed, 57 insertions(+), 36 deletions(-) diff --git a/apps/OpenSign/src/components/pdf/SignPad.js b/apps/OpenSign/src/components/pdf/SignPad.js index 9103a3d8f..3fd03328a 100644 --- a/apps/OpenSign/src/components/pdf/SignPad.js +++ b/apps/OpenSign/src/components/pdf/SignPad.js @@ -214,8 +214,8 @@ function SignPad({ const fontfamily = fontStyle ? fontStyle : fontSelect - ? fontSelect - : "Fasthand"; + ? fontSelect + : "Fasthand"; //creating span for getting text content width const span = document.createElement("span"); @@ -267,10 +267,10 @@ function SignPad({ key === 0 && penColor === "blue" ? "2px solid blue" : key === 1 && penColor === "red" - ? "2px solid red" - : key === 2 && penColor === "black" - ? "2px solid black" - : "2px solid white" + ? "2px solid red" + : key === 2 && penColor === "black" + ? "2px solid black" + : "2px solid white" }} onClick={() => { props?.convertToImg && @@ -536,7 +536,6 @@ function SignPad({ style={{ border: "1.3px solid #007bff", borderRadius: "2px", - display: "flex", flexDirection: "column", justifyContent: "center", @@ -553,7 +552,7 @@ function SignPad({ type="file" onChange={onImageChange} className="filetype" - accept="image/*" + accept="image/png,image/jpeg" ref={imageRef} hidden /> diff --git a/apps/OpenSign/src/constant/Utils.js b/apps/OpenSign/src/constant/Utils.js index 63289af0b..f342dff8d 100644 --- a/apps/OpenSign/src/constant/Utils.js +++ b/apps/OpenSign/src/constant/Utils.js @@ -561,17 +561,22 @@ export const signPdfFun = async ( isCustomCompletionMail = true; } } - + + // below for loop is used to get first signature of user to send if to signpdf + // for adding it in completion certificate let getSignature; for (let item of xyPosition) { const typeExist = item.pos.some((data) => data?.type); if (typeExist) { - getSignature = item.pos.filter((data) => data?.type === "signature"); + getSignature = item.pos.find((data) => data?.type === "signature"); + break; } else { - getSignature = item.pos.filter((data) => !data.isStamp); + getSignature = item.pos.find((data) => !data.isStamp); + break; } } - let base64Sign = getSignature[0].SignUrl; + + let base64Sign = getSignature.SignUrl; //check https type signature (default signature exist) then convert in base64 const isUrl = base64Sign.includes("https"); if (isUrl) { @@ -1344,8 +1349,8 @@ export const multiSignEmbed = async ( position.type === radioButtonWidget ? 10 : position.type === "checkbox" - ? 10 - : newUpdateHeight; + ? 10 + : newUpdateHeight; const newHeight = ind ? (ind > 0 ? widgetHeight : 0) : widgetHeight; if (signyourself) { diff --git a/apps/OpenSign/src/pages/PdfRequestFiles.js b/apps/OpenSign/src/pages/PdfRequestFiles.js index 0eb54aeb0..b7f6384b1 100644 --- a/apps/OpenSign/src/pages/PdfRequestFiles.js +++ b/apps/OpenSign/src/pages/PdfRequestFiles.js @@ -647,7 +647,6 @@ function PdfRequestFiles() { const existingPdfBytes = pdfArrayBuffer; try { const pdfDoc = await PDFDocument.load(existingPdfBytes); - const isSignYourSelfFlow = false; const extUserPtr = pdfDetails[0].ExtUserPtr; const HeaderDocId = extUserPtr?.HeaderDocId; @@ -843,10 +842,18 @@ function PdfRequestFiles() { } } catch (err) { setIsUiLoading(false); - setIsAlert({ - isShow: true, - alertMessage: `Currently encrypted pdf files are not supported.` - }); + if (err && err.message.includes("is encrypted.")) { + setIsAlert({ + isShow: true, + alertMessage: `Currently encrypted pdf files are not supported.` + }); + } else { + console.log("err in request signing", err); + setIsAlert({ + isShow: true, + alertMessage: `Something went wrong.` + }); + } } } setIsSignPad(false); @@ -1238,9 +1245,9 @@ function PdfRequestFiles() { isDecline.currnt === "Sure" ? "Are you sure want to decline this document ?" : isDecline.currnt === "YouDeclined" - ? "You have declined this document!" - : isDecline.currnt === "another" && - "You can not sign this document as it has been declined/revoked." + ? "You have declined this document!" + : isDecline.currnt === "another" && + "You can not sign this document as it has been declined/revoked." } footerMessage={isDecline.currnt === "Sure"} declineDoc={declineDoc} diff --git a/apps/OpenSign/src/pages/SignyourselfPdf.js b/apps/OpenSign/src/pages/SignyourselfPdf.js index 6ad106d93..7fe144910 100644 --- a/apps/OpenSign/src/pages/SignyourselfPdf.js +++ b/apps/OpenSign/src/pages/SignyourselfPdf.js @@ -480,13 +480,13 @@ function SignYourSelf() { Width: widgetTypeExist ? calculateInitialWidthHeight(dragTypeValue, widgetValue).getWidth : dragTypeValue === "initials" - ? defaultWidthHeight(dragTypeValue).width - : "", + ? defaultWidthHeight(dragTypeValue).width + : "", Height: widgetTypeExist ? calculateInitialWidthHeight(dragTypeValue, widgetValue).getHeight : dragTypeValue === "initials" - ? defaultWidthHeight(dragTypeValue).height - : "", + ? defaultWidthHeight(dragTypeValue).height + : "", options: addWidgetOptions(dragTypeValue) }; @@ -649,9 +649,7 @@ function SignYourSelf() { const existingPdfBytes = pdfArrayBuffer; // Load a PDFDocument from the existing PDF bytes try { - const pdfDoc = await PDFDocument.load(existingPdfBytes, { - ignoreEncryption: true - }); + const pdfDoc = await PDFDocument.load(existingPdfBytes); const isSignYourSelfFlow = true; const extUserPtr = pdfDetails[0].ExtUserPtr; const HeaderDocId = extUserPtr?.HeaderDocId; @@ -672,10 +670,18 @@ function SignYourSelf() { await signPdfFun(pdfBytes, documentId); } catch (err) { setIsUiLoading(false); - setIsAlert({ - isShow: true, - alertMessage: `Currently encrypted pdf files are not supported.` - }); + if (err && err.message.includes("is encrypted.")) { + setIsAlert({ + isShow: true, + alertMessage: `Currently encrypted pdf files are not supported.` + }); + } else { + console.log("err in signing", err); + setIsAlert({ + isShow: true, + alertMessage: `Something went wrong.` + }); + } } } } catch (err) { @@ -703,16 +709,20 @@ function SignYourSelf() { isCustomCompletionMail = true; } } + // below for loop is used to get first signature of user to send if to signpdf + // for adding it in completion certificate let getSignature; for (let item of xyPostion) { const typeExist = item.pos.some((data) => data?.type); if (typeExist) { - getSignature = item.pos.filter((data) => data?.type === "signature"); + getSignature = item.pos.find((data) => data?.type === "signature"); + break; } else { - getSignature = item.pos.filter((data) => !data.isStamp); + getSignature = item.pos.find((data) => !data.isStamp); + break; } } - let base64Sign = getSignature[0].SignUrl; + let base64Sign = getSignature.SignUrl; //check https type signature (default signature exist) then convert in base64 const isUrl = base64Sign.includes("https"); if (isUrl) {