From d5d646e6e0894d68800adc7432ac6a9e523ec382 Mon Sep 17 00:00:00 2001 From: RaktimaNXG Date: Fri, 26 Jul 2024 18:37:48 +0530 Subject: [PATCH 1/2] fix: issue with files opening in a new tab on download instead of direct download --- apps/OpenSign/src/constant/Utils.js | 13 +++++++++++- .../src/primitives/GetReportDisplay.js | 20 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/apps/OpenSign/src/constant/Utils.js b/apps/OpenSign/src/constant/Utils.js index a79fbc9b8..30e9a1f26 100644 --- a/apps/OpenSign/src/constant/Utils.js +++ b/apps/OpenSign/src/constant/Utils.js @@ -2001,7 +2001,18 @@ export const handleDownloadPdf = async ( } ); const url = axiosRes.data.result; - saveAs(url, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); + try { + const response = await fetch(url); + if (!response.ok) { + alert("something went wrong, please try again later."); + throw new Error("Network response was not ok"); + } + const blob = await response.blob(); + saveAs(blob, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); + } catch (error) { + alert("something went wrong, please try again later."); + console.error("Error downloading the file:", error); + } setIsDownloading(""); } catch (err) { console.log("err in getsignedurl", err); diff --git a/apps/OpenSign/src/primitives/GetReportDisplay.js b/apps/OpenSign/src/primitives/GetReportDisplay.js index 76635aa49..95b01182a 100644 --- a/apps/OpenSign/src/primitives/GetReportDisplay.js +++ b/apps/OpenSign/src/primitives/GetReportDisplay.js @@ -27,6 +27,7 @@ import BulkSendUi from "../components/BulkSendUi"; import Loader from "./Loader"; import Select from "react-select"; import SubscribeCard from "./SubscribeCard"; +import sanitizeFileName from "./sanitizeFileName"; const ReportTable = (props) => { const navigate = useNavigate(); @@ -595,14 +596,31 @@ const ReportTable = (props) => { // `handleDownload` is used to get valid doc url available in completed report const handleDownload = async (item) => { + setActLoader({ [`${item.objectId}`]: true }); const url = item?.SignedUrl || item?.URL || ""; + const pdfName = item?.Name || "exported_file"; if (url) { try { const signedUrl = await Parse.Cloud.run("getsignedurl", { url: url }); - saveAs(signedUrl); + // saveAs(signedUrl); + try { + const response = await fetch(signedUrl); + if (!response.ok) { + alert("something went wrong, please try again later."); + throw new Error("Network response was not ok"); + } + const blob = await response.blob(); + saveAs(blob, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); + setActLoader({}); + } catch (error) { + alert("something went wrong, please try again later."); + console.error("Error downloading the file:", error); + setActLoader({}); + } } catch (err) { console.log("err in getsignedurl", err); alert("something went wrong, please try again later."); + setActLoader({}); } } }; From 886161d65f00550dac81304158c52c7106c603dc Mon Sep 17 00:00:00 2001 From: RaktimaNXG Date: Fri, 26 Jul 2024 18:47:57 +0530 Subject: [PATCH 2/2] refactor code --- apps/OpenSign/src/constant/Utils.js | 27 ++++++++++--------- .../src/primitives/GetReportDisplay.js | 20 +++----------- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/apps/OpenSign/src/constant/Utils.js b/apps/OpenSign/src/constant/Utils.js index 30e9a1f26..f30fc6dfe 100644 --- a/apps/OpenSign/src/constant/Utils.js +++ b/apps/OpenSign/src/constant/Utils.js @@ -1979,6 +1979,20 @@ export const handleSendOTP = async (email) => { alert(error.message); } }; +export const fetchUrl = async (url, pdfName) => { + try { + const response = await fetch(url); + if (!response.ok) { + alert("something went wrong, please try again later."); + throw new Error("Network response was not ok"); + } + const blob = await response.blob(); + saveAs(blob, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); + } catch (error) { + alert("something went wrong, please try again later."); + console.error("Error downloading the file:", error); + } +}; //handle download signed pdf export const handleDownloadPdf = async ( pdfDetails, @@ -2001,18 +2015,7 @@ export const handleDownloadPdf = async ( } ); const url = axiosRes.data.result; - try { - const response = await fetch(url); - if (!response.ok) { - alert("something went wrong, please try again later."); - throw new Error("Network response was not ok"); - } - const blob = await response.blob(); - saveAs(blob, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); - } catch (error) { - alert("something went wrong, please try again later."); - console.error("Error downloading the file:", error); - } + await fetchUrl(url, pdfName); setIsDownloading(""); } catch (err) { console.log("err in getsignedurl", err); diff --git a/apps/OpenSign/src/primitives/GetReportDisplay.js b/apps/OpenSign/src/primitives/GetReportDisplay.js index 95b01182a..0a375cdec 100644 --- a/apps/OpenSign/src/primitives/GetReportDisplay.js +++ b/apps/OpenSign/src/primitives/GetReportDisplay.js @@ -10,10 +10,10 @@ import Tooltip from "./Tooltip"; import { RWebShare } from "react-web-share"; import Tour from "reactour"; import Parse from "parse"; -import { saveAs } from "file-saver"; import { checkIsSubscribedTeam, copytoData, + fetchUrl, replaceMailVaribles } from "../constant/Utils"; import Confetti from "react-confetti"; @@ -27,7 +27,6 @@ import BulkSendUi from "../components/BulkSendUi"; import Loader from "./Loader"; import Select from "react-select"; import SubscribeCard from "./SubscribeCard"; -import sanitizeFileName from "./sanitizeFileName"; const ReportTable = (props) => { const navigate = useNavigate(); @@ -602,21 +601,8 @@ const ReportTable = (props) => { if (url) { try { const signedUrl = await Parse.Cloud.run("getsignedurl", { url: url }); - // saveAs(signedUrl); - try { - const response = await fetch(signedUrl); - if (!response.ok) { - alert("something went wrong, please try again later."); - throw new Error("Network response was not ok"); - } - const blob = await response.blob(); - saveAs(blob, `${sanitizeFileName(pdfName)}_signed_by_OpenSign™.pdf`); - setActLoader({}); - } catch (error) { - alert("something went wrong, please try again later."); - console.error("Error downloading the file:", error); - setActLoader({}); - } + await fetchUrl(signedUrl, pdfName); + setActLoader({}); } catch (err) { console.log("err in getsignedurl", err); alert("something went wrong, please try again later.");