From e52537c3032736e975d33d7fa4ed9b3750982bf0 Mon Sep 17 00:00:00 2001 From: Sheng Xiao Date: Mon, 8 Jun 2020 11:18:34 -0700 Subject: [PATCH] fix: Save as pdf saved downloaded too many files on multiple clicks - When clicked on save as pdf for too many times, too many files were downloaded --- src/utils/index.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/utils/index.js b/src/utils/index.js index 0fab0818..fde925a4 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -104,12 +104,16 @@ const importJson = (event, dispatch) => { fr.readAsText(event.target.files[0]); }; -const saveAsPdf = (pageRef, panZoomRef, quality, type) => - new Promise(resolve => { +let saveAsPdfTimer = null; +const saveAsPdf = (pageRef, panZoomRef, quality, type) => { + if(saveAsPdfTimer){ + return; + } + return new Promise(resolve => { panZoomRef.current.autoCenter(1); panZoomRef.current.reset(); - setTimeout(() => { + saveAsPdfTimer = setTimeout(() => { html2canvas(pageRef.current, { scale: 5, useCORS: true, @@ -142,17 +146,23 @@ const saveAsPdf = (pageRef, panZoomRef, quality, type) => doc.addImage(image, 'JPEG', marginX, marginY, canvasWidth, canvasHeight, null, 'SLOW'); doc.save(`RxResume_${Date.now()}.pdf`); + saveAsPdfTimer = null; resolve(); }); }, 250); }); - -const saveAsMultiPagePdf = (pageRef, panZoomRef, quality) => - new Promise(resolve => { +} + +let saveAsMultiPagePdfTimer = null; +const saveAsMultiPagePdf = (pageRef, panZoomRef, quality) => { + if(saveAsMultiPagePdfTimer){ + return; + } + return new Promise(resolve => { panZoomRef.current.autoCenter(1); panZoomRef.current.reset(); - setTimeout(() => { + saveAsMultiPagePdfTimer = setTimeout(() => { html2canvas(pageRef.current, { scale: 5, useCORS: true, @@ -182,10 +192,12 @@ const saveAsMultiPagePdf = (pageRef, panZoomRef, quality) => } doc.save(`RxResume_${Date.now()}.pdf`); + saveAsMultiPagePdfTimer = null; resolve(); }); }, 250); }); +} export { move,