Merge branch 'staging' of https://github.com/OpenSignLabs/OpenSign into feat_bulksend

This commit is contained in:
prafull-opensignlabs
2024-05-22 12:11:46 +05:30
6 changed files with 92 additions and 35 deletions
+9 -1
View File
@@ -19,6 +19,7 @@ function GuestLogin() {
const [appLogo, setAppLogo] = useState(""); const [appLogo, setAppLogo] = useState("");
const [documentId, setDocumentId] = useState(id); const [documentId, setDocumentId] = useState(id);
const [contactId, setContactId] = useState(contactBookId); const [contactId, setContactId] = useState(contactBookId);
const [sendmail, setSendmail] = useState();
useEffect(() => { useEffect(() => {
handleServerUrl(); handleServerUrl();
@@ -54,6 +55,7 @@ function GuestLogin() {
setDocumentId(checkSplit[0]); setDocumentId(checkSplit[0]);
setEmail(checkSplit[1]); setEmail(checkSplit[1]);
setContactId(checkSplit[2]); setContactId(checkSplit[2]);
setSendmail(checkSplit[3]);
} }
setIsLoading(false); setIsLoading(false);
@@ -146,7 +148,13 @@ function GuestLogin() {
//save isGuestSigner true in local to handle login flow header in mobile view //save isGuestSigner true in local to handle login flow header in mobile view
localStorage.setItem("isGuestSigner", true); localStorage.setItem("isGuestSigner", true);
setLoading(false); setLoading(false);
navigate(`/load/recipientSignPdf/${documentId}/${contactId}`); if (sendmail === "false") {
navigate(
`/load/recipientSignPdf/${documentId}/${contactId}?sendmail=${sendmail}`
);
} else {
navigate(`/load/recipientSignPdf/${documentId}/${contactId}`);
}
} }
} catch (error) { } catch (error) {
console.log("err ", error); console.log("err ", error);
+6 -1
View File
@@ -39,11 +39,16 @@ import Title from "../components/Title";
import DefaultSignature from "../components/pdf/DefaultSignature"; import DefaultSignature from "../components/pdf/DefaultSignature";
import ModalUi from "../primitives/ModalUi"; import ModalUi from "../primitives/ModalUi";
import VerifyEmail from "../components/pdf/VerifyEmail"; import VerifyEmail from "../components/pdf/VerifyEmail";
function useQuery() {
return new URLSearchParams(useLocation().search);
}
function PdfRequestFiles() { function PdfRequestFiles() {
const { docId } = useParams(); const { docId } = useParams();
const navigate = useNavigate(); const navigate = useNavigate();
const location = useLocation(); const location = useLocation();
const query = useQuery();
const sendmail = query.get("sendmail");
const [pdfDetails, setPdfDetails] = useState([]); const [pdfDetails, setPdfDetails] = useState([]);
const [signedSigners, setSignedSigners] = useState([]); const [signedSigners, setSignedSigners] = useState([]);
const [unsignedSigners, setUnSignedSigners] = useState([]); const [unsignedSigners, setUnSignedSigners] = useState([]);
@@ -730,7 +735,7 @@ function PdfRequestFiles() {
); );
const newIndex = index + 1; const newIndex = index + 1;
const user = pdfDetails?.[0].Signers[newIndex]; const user = pdfDetails?.[0].Signers[newIndex];
if (sendInOrder) { if (sendmail !== "false" && sendInOrder) {
const requestBody = pdfDetails?.[0]?.RequestBody; const requestBody = pdfDetails?.[0]?.RequestBody;
const requestSubject = pdfDetails?.[0]?.RequestSubject; const requestSubject = pdfDetails?.[0]?.RequestSubject;
if (user) { if (user) {
+38 -32
View File
@@ -998,9 +998,10 @@ function PlaceHolderSign() {
for (let i = 0; i < signerMail.length; i++) { for (let i = 0; i < signerMail.length; i++) {
const objectId = signerMail[i].objectId; const objectId = signerMail[i].objectId;
const hostUrl = window.location.origin; const hostUrl = window.location.origin;
const sendMail = false;
//encode this url value `${pdfDetails?.[0].objectId}/${signerMail[i].Email}/${objectId}` to base64 using `btoa` function //encode this url value `${pdfDetails?.[0].objectId}/${signerMail[i].Email}/${objectId}` to base64 using `btoa` function
const encodeBase64 = btoa( const encodeBase64 = btoa(
`${pdfDetails?.[0].objectId}/${signerMail[i].Email}/${objectId}` `${pdfDetails?.[0].objectId}/${signerMail[i].Email}/${objectId}/${sendMail}`
); );
let signPdf = `${hostUrl}/login/${encodeBase64}`; let signPdf = `${hostUrl}/login/${encodeBase64}`;
shareLinkList.push({ signerEmail: signerMail[i].Email, url: signPdf }); shareLinkList.push({ signerEmail: signerMail[i].Email, url: signPdf });
@@ -1162,40 +1163,45 @@ function PlaceHolderSign() {
} }
if (sendMail.data.result.status === "success") { if (sendMail.data.result.status === "success") {
setMailStatus("success"); setMailStatus("success");
try {
if ( let data;
requestBody && if (
requestSubject && requestBody &&
isCustomize && requestSubject &&
(isSubscribe || !isEnableSubscription) isCustomize &&
) { (isSubscribe || !isEnableSubscription)
try { ) {
const data = { data = {
RequestBody: htmlReqBody, RequestBody: htmlReqBody,
RequestSubject: requestSubject RequestSubject: requestSubject,
SendMail: true
};
} else {
data = {
SendMail: true
}; };
await axios
.put(
`${localStorage.getItem("baseUrl")}classes/${localStorage.getItem(
"_appName"
)}_Document/${documentId}`,
data,
{
headers: {
"Content-Type": "application/json",
"X-Parse-Application-Id": localStorage.getItem("parseAppId"),
"X-Parse-Session-Token": localStorage.getItem("accesstoken")
}
}
)
.then(() => {})
.catch((err) => {
console.log("axois err ", err);
});
} catch (e) {
console.log("error", e);
} }
await axios
.put(
`${localStorage.getItem("baseUrl")}classes/${localStorage.getItem(
"_appName"
)}_Document/${documentId}`,
data,
{
headers: {
"Content-Type": "application/json",
"X-Parse-Application-Id": localStorage.getItem("parseAppId"),
"X-Parse-Session-Token": localStorage.getItem("accesstoken")
}
}
)
.then(() => {})
.catch((err) => {
console.log("axois err ", err);
});
} catch (e) {
console.log("error", e);
} }
setIsSend(true); setIsSend(true);
@@ -308,9 +308,12 @@ const ReportTable = (props) => {
const handleShare = (item) => { const handleShare = (item) => {
setActLoader({ [item.objectId]: true }); setActLoader({ [item.objectId]: true });
const host = window.location.origin; const host = window.location.origin;
const sendMail = item?.SendMail || false;
const getUrl = (x) => { const getUrl = (x) => {
//encode this url value `${item.objectId}/${x.Email}/${x.objectId}` to base64 using `btoa` function //encode this url value `${item.objectId}/${x.Email}/${x.objectId}` to base64 using `btoa` function
const encodeBase64 = btoa(`${item.objectId}/${x.Email}/${x.objectId}`); const encodeBase64 = btoa(
`${item.objectId}/${x.Email}/${x.objectId}/${sendMail}`
);
return `${host}/login/${encodeBase64}`; return `${host}/login/${encodeBase64}`;
}; };
@@ -101,6 +101,7 @@ export default function reportJson(id, userId) {
'AuditTrail', 'AuditTrail',
'AuditTrail.UserPtr', 'AuditTrail.UserPtr',
'ExpiryDate', 'ExpiryDate',
'SendMail',
], ],
}; };
// completed documents report // completed documents report
@@ -0,0 +1,34 @@
/**
*
* @param {Parse} Parse
*/
exports.up = async Parse => {
// TODO: set className here
const className = 'contracts_Document';
const schema = new Parse.Schema(className);
schema.addBoolean('SendMail');
schema.addBoolean('SendCompletionMail');
// TODO: Set the schema here
// Example:
// schema.addString('name').addNumber('cash');
return schema.update();
};
/**
*
* @param {Parse} Parse
*/
exports.down = async Parse => {
// TODO: set className here
const className = 'contracts_Document';
const schema = new Parse.Schema(className);
schema.deleteField('SendMail');
schema.deleteField('SendCompletionMail');
// TODO: Set the schema here
// Example:
// schema.deleteField('name').deleteField('cash');
return schema.update();
};