diff --git a/apps/OpenSign/src/components/pdf/PdfHeader.js b/apps/OpenSign/src/components/pdf/PdfHeader.js index c12085814..b2d01d3b3 100644 --- a/apps/OpenSign/src/components/pdf/PdfHeader.js +++ b/apps/OpenSign/src/components/pdf/PdfHeader.js @@ -414,19 +414,15 @@ function Header({ ) : isPublicTemplate ? ( - <> -
- -
- +
+ +
) : (

This is an automated email from OpenSign™. For any queries regarding this email, please contact the sender " + - senderEmail + - " directly.If you think this email is inappropriate or spam, you may file a complaint with OpenSign™ here.

" - }; - await axios.post(url, params, { - headers: headers - }); - } catch (error) { - console.log("error", error); + const newIndex = index + 1; + const usermail = { + Email: pdfDetails?.[0]?.Placeholders[newIndex]?.email || "" + }; + const user = usermail?.Email + ? usermail + : pdfDetails?.[0]?.Signers[newIndex]; + if (sendmail !== "false" && sendInOrder) { + const requestBody = pdfDetails?.[0]?.RequestBody; + const requestSubject = pdfDetails?.[0]?.RequestSubject; + if (user) { + const expireDate = pdfDetails?.[0].ExpiryDate.iso; + const newDate = new Date(expireDate); + const localExpireDate = newDate.toLocaleDateString( + "en-US", + { + day: "numeric", + month: "long", + year: "numeric" } + ); + let senderEmail = pdfDetails?.[0].ExtUserPtr.Email; + let senderPhone = pdfDetails?.[0]?.ExtUserPtr?.Phone; + const senderName = `${pdfDetails?.[0].ExtUserPtr.Name}`; + + try { + const imgPng = + "https://qikinnovation.ams3.digitaloceanspaces.com/logo.png"; + let url = `${localStorage.getItem( + "baseUrl" + )}functions/sendmailv3`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": + localStorage.getItem("parseAppId"), + sessionToken: localStorage.getItem("accesstoken") + }; + const objectId = user?.objectId; + const hostUrl = window.location.origin; + //encode this url value `${pdfDetails?.[0].objectId}/${user.Email}/${objectId}` to base64 using `btoa` function + let encodeBase64; + if (objectId) { + encodeBase64 = btoa( + `${pdfDetails?.[0].objectId}/${user.Email}/${objectId}` + ); + } else { + encodeBase64 = btoa( + `${pdfDetails?.[0].objectId}/${user.Email}` + ); + } + const hostPublicUrl = isStaging + ? "https://staging-app.opensignlabs.com" + : "https://app.opensignlabs.com"; + let signPdf = props?.templateId + ? `${hostPublicUrl}/login/${encodeBase64}` + : `${hostUrl}/login/${encodeBase64}`; + const openSignUrl = + "https://www.opensignlabs.com/contact-us"; + const orgName = pdfDetails[0]?.ExtUserPtr.Company + ? pdfDetails[0].ExtUserPtr.Company + : ""; + const themeBGcolor = themeColor; + let replaceVar; + if (requestBody && requestSubject && isSubscribed) { + const replacedRequestBody = requestBody.replace( + /"/g, + "'" + ); + const htmlReqBody = + "" + + replacedRequestBody + + " "; + + const variables = { + document_title: pdfDetails?.[0].Name, + sender_name: senderName, + sender_mail: senderEmail, + sender_phone: senderPhone, + receiver_name: user.Name, + receiver_email: user.Email, + receiver_phone: user.Phone, + expiry_date: localExpireDate, + company_name: orgName, + signing_url: `Sign here` + }; + replaceVar = replaceMailVaribles( + requestSubject, + htmlReqBody, + variables + ); + } + + let params = { + mailProvider: activeMailAdapter, + extUserId: extUserId, + recipient: user.Email, + subject: requestSubject + ? replaceVar?.subject + : `${pdfDetails?.[0].ExtUserPtr.Name} has requested you to sign "${pdfDetails?.[0].Name}"`, + from: senderEmail, + html: requestBody + ? replaceVar?.body + : "

Digital Signature Request

" + + pdfDetails?.[0].ExtUserPtr.Name + + " has requested you to review and sign " + + pdfDetails?.[0].Name + + ".

Sender " + + senderEmail + + "
Organization " + + orgName + + "
Expires on " + + localExpireDate + + "

This is an automated email from OpenSign™. For any queries regarding this email, please contact the sender " + + senderEmail + + " directly.If you think this email is inappropriate or spam, you may file a complaint with OpenSign™ here.

" + }; + await axios.post(url, params, { + headers: headers + }); + } catch (error) { + console.log("error", error); } } - } else { - setIsAlert({ - isShow: true, - alertMessage: "something went wrong" - }); } - } catch (err) { - setIsAlert({ - isShow: true, - alertMessage: "something went wrong" - }); + } else { + setIsUiLoading(false); + setIsAlert({ isShow: true, alertMessage: resSign.message }); } } catch (err) { setIsUiLoading(false); @@ -1657,26 +1645,19 @@ function PdfRequestFiles(props) { requestSignTourFunction()} { - setIsAlert({ - isShow: false, - alertMessage: "" - }); - }} + title={"Alert"} + handleClose={() => + setIsAlert({ isShow: false, alertMessage: "" }) + } >

{isAlert.alertMessage}

-
diff --git a/apps/OpenSign/src/pages/SignyourselfPdf.js b/apps/OpenSign/src/pages/SignyourselfPdf.js index 4f81bd83d..93b9591e7 100644 --- a/apps/OpenSign/src/pages/SignyourselfPdf.js +++ b/apps/OpenSign/src/pages/SignyourselfPdf.js @@ -710,15 +710,28 @@ function SignYourSelf() { setIsUiLoading(false); if (err && err.message.includes("is encrypted.")) { setIsAlert({ + header: "Error", isShow: true, alertMessage: `Currently encrypted pdf files are not supported.` }); } else { - console.log("err in signing", err); - setIsAlert({ - isShow: true, - alertMessage: `Something went wrong.` - }); + console.log("err in signing", err.message); + if ( + err.message === + "PKCS#12 MAC could not be verified. Invalid password?" + ) { + setIsAlert({ + header: "Error", + isShow: true, + alertMessage: `PFX file password is invalid.` + }); + } else { + setIsAlert({ + header: "Error", + isShow: true, + alertMessage: `Something went wrong.` + }); + } } } } @@ -726,6 +739,7 @@ function SignYourSelf() { console.log("err in embedselfsign ", err); setIsUiLoading(false); setIsAlert({ + header: "Error", isShow: true, alertMessage: "something went wrong, please try again later." }); @@ -776,34 +790,19 @@ function SignYourSelf() { //remove suffiix of base64 const suffixbase64 = getNewse64 && getNewse64.split(",").pop(); - let singleSign = { + const params = { pdfFile: base64Url, docId: documentId, isCustomCompletionMail: isCustomCompletionMail, mailProvider: activeMailAdapter, signature: suffixbase64 }; - - await axios - .post(`${localStorage.getItem("baseUrl")}functions/signPdf`, singleSign, { - headers: { - "Content-Type": "application/json", - "X-Parse-Application-Id": localStorage.getItem("parseAppId"), - // sessionToken: localStorage.getItem("accesstoken") - "X-Parse-Session-Token": localStorage.getItem("accesstoken") - } - }) - .then((Listdata) => { - const json = Listdata.data; - - setPdfUrl(json.result.data); - if (json.result.data) { - getDocumentDetails(false); - } - }) - .catch((err) => { - console.log("axois err ", err); - }); + const resSignPdf = await Parse.Cloud.run("signPdf", params); + if (resSignPdf) { + const signedpdf = JSON.parse(JSON.stringify(resSignPdf)); + setPdfUrl(signedpdf); + getDocumentDetails(false); + } }; //function for save x and y position and show signature tab on that position @@ -1230,16 +1229,13 @@ function SignYourSelf() { setZoomPercent={setZoomPercent} zoomPercent={zoomPercent} /> -
+
{ - setIsAlert({ - isShow: false, - alertMessage: "" - }); - }} + handleClose={() => + setIsAlert({ isShow: false, alertMessage: "" }) + } >

{isAlert.alertMessage}

diff --git a/apps/OpenSign/src/pages/TemplatePlaceholder.js b/apps/OpenSign/src/pages/TemplatePlaceholder.js index e96cab49d..68e39dfc7 100644 --- a/apps/OpenSign/src/pages/TemplatePlaceholder.js +++ b/apps/OpenSign/src/pages/TemplatePlaceholder.js @@ -1317,7 +1317,7 @@ const TemplatePlaceholder = () => { setZoomPercent={setZoomPercent} zoomPercent={zoomPercent} /> -
+
{/* this modal is used show alert set placeholder for all signers before send mail */} { {currentEmail.length > 0 && ( <>
) : ( -
+
{
)} -