From 737b33db1e3b9956cd6cd22110434dc8918c59e5 Mon Sep 17 00:00:00 2001 From: RaktimaNXG Date: Wed, 17 Apr 2024 19:04:57 +0530 Subject: [PATCH] fix: add try catch to convert pdf array buffer --- apps/OpenSign/src/constant/Utils.js | 16 ++++++++++++++++ apps/OpenSign/src/pages/PdfRequestFiles.js | 11 ++++++++--- apps/OpenSign/src/pages/PlaceHolderSign.js | 11 ++++++++--- apps/OpenSign/src/pages/SignyourselfPdf.js | 11 ++++++++--- 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/apps/OpenSign/src/constant/Utils.js b/apps/OpenSign/src/constant/Utils.js index 12ab12a81..2d2e341d8 100644 --- a/apps/OpenSign/src/constant/Utils.js +++ b/apps/OpenSign/src/constant/Utils.js @@ -1895,3 +1895,19 @@ export const copytoData = (text) => { document.body.removeChild(textArea); } }; + +export const convertPdfArrayBuffer = async (url) => { + try { + const response = await fetch(url); + // Check if the response was successful (status 200) + if (!response.ok) { + return "Error"; + } + // Convert the response to ArrayBuffer + const arrayBuffer = await response.arrayBuffer(); + return arrayBuffer; + } catch (error) { + console.error("Error fetching data:", error); + return "Error"; + } +}; diff --git a/apps/OpenSign/src/pages/PdfRequestFiles.js b/apps/OpenSign/src/pages/PdfRequestFiles.js index b3b8d7e84..a1e25e61c 100644 --- a/apps/OpenSign/src/pages/PdfRequestFiles.js +++ b/apps/OpenSign/src/pages/PdfRequestFiles.js @@ -23,7 +23,8 @@ import { addDefaultSignatureImg, radioButtonWidget, replaceMailVaribles, - fetchSubscription + fetchSubscription, + convertPdfArrayBuffer } from "../constant/Utils"; import Loader from "../primitives/LoaderWithMsg"; import HandleError from "../primitives/HandleError"; @@ -170,8 +171,12 @@ function PdfRequestFiles() { if (documentData && documentData.length > 0) { const url = documentData[0] && documentData[0]?.URL; //convert document url in array buffer format to use embed widgets in pdf using pdf-lib - const arrayBuffer = await fetch(url).then((res) => res.arrayBuffer()); - setPdfArrayBuffer(arrayBuffer); + const arrayBuffer = await convertPdfArrayBuffer(url); + if (arrayBuffer === "Error") { + setHandleError("Error: Something went wrong!"); + } else { + setPdfArrayBuffer(arrayBuffer); + } if (isEnableSubscription) { await checkIsSubscribed(documentData[0]?.ExtUserPtr?.Email); } diff --git a/apps/OpenSign/src/pages/PlaceHolderSign.js b/apps/OpenSign/src/pages/PlaceHolderSign.js index 2b5a2dd3f..e86bcae72 100644 --- a/apps/OpenSign/src/pages/PlaceHolderSign.js +++ b/apps/OpenSign/src/pages/PlaceHolderSign.js @@ -33,7 +33,8 @@ import { getTenantDetails, replaceMailVaribles, copytoData, - fetchSubscription + fetchSubscription, + convertPdfArrayBuffer } from "../constant/Utils"; import RenderPdf from "../components/pdf/RenderPdf"; import { useNavigate } from "react-router-dom"; @@ -266,8 +267,12 @@ function PlaceHolderSign() { if (documentData && documentData.length > 0) { const url = documentData[0] && documentData[0]?.URL; //convert document url in array buffer format to use embed widgets in pdf using pdf-lib - const arrayBuffer = await fetch(url).then((res) => res.arrayBuffer()); - setPdfArrayBuffer(arrayBuffer); + const arrayBuffer = await convertPdfArrayBuffer(url); + if (arrayBuffer === "Error") { + setHandleError("Error: Something went wrong!"); + } else { + setPdfArrayBuffer(arrayBuffer); + } setExtUserId(documentData[0]?.ExtUserPtr?.objectId); if (isEnableSubscription) { checkIsSubscribed(documentData[0]?.ExtUserPtr?.Email); diff --git a/apps/OpenSign/src/pages/SignyourselfPdf.js b/apps/OpenSign/src/pages/SignyourselfPdf.js index 3c55c27a7..283699d8e 100644 --- a/apps/OpenSign/src/pages/SignyourselfPdf.js +++ b/apps/OpenSign/src/pages/SignyourselfPdf.js @@ -28,7 +28,8 @@ import { getDate, textWidget, getTenantDetails, - checkIsSubscribed + checkIsSubscribed, + convertPdfArrayBuffer } from "../constant/Utils"; import { useParams } from "react-router-dom"; import Tour from "reactour"; @@ -193,8 +194,12 @@ function SignYourSelf() { setExtUserId(documentData[0]?.ExtUserPtr?.objectId); const url = documentData[0] && documentData[0]?.URL; //convert document url in array buffer format to use embed widgets in pdf using pdf-lib - const arrayBuffer = await fetch(url).then((res) => res.arrayBuffer()); - setPdfArrayBuffer(arrayBuffer); + const arrayBuffer = await convertPdfArrayBuffer(url); + if (arrayBuffer === "Error") { + setHandleError("Error: Something went wrong!"); + } else { + setPdfArrayBuffer(arrayBuffer); + } isCompleted = documentData[0].IsCompleted && documentData[0].IsCompleted; if (isCompleted) { setIsCompleted(true);