mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-09-27 03:54:52 +02:00
Merge branch 'staging' of https://github.com/OpenSignLabs/OpenSign into feat_bulksend
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
+34
@@ -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();
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user