Skip to content

Commit ad25d73

Browse files
authored
Merge branch 'OpenSignLabs:staging' into staging
2 parents 1a8cf11 + 4cd3791 commit ad25d73

40 files changed

+1507
-966
lines changed

apps/OpenSign/package-lock.json

Lines changed: 45 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/OpenSign/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@
1111
"file-saver": "^2.0.5",
1212
"jwt-decode": "^4.0.0",
1313
"moment": "^2.30.1",
14-
"parse": "^4.3.1",
14+
"parse": "^5.1.0",
1515
"pdf-lib": "^1.17.1",
1616
"print-js": "^1.6.0",
1717
"radix-ui": "^1.0.1",
1818
"react": "^18.2.0",
1919
"react-bootstrap": "^2.10.2",
20+
"react-confetti": "^6.1.0",
2021
"react-cookie": "^7.1.4",
2122
"react-datepicker": "^6.4.0",
2223
"react-dnd": "^16.0.1",

apps/OpenSign/src/components/pdf/EditTemplate.js

Lines changed: 87 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
import React, { useState } from "react";
1+
import React, { useState, useEffect } from "react";
22
import "../../styles/AddUser.css";
3-
import { getFileName } from "../../constant/Utils";
3+
import { checkIsSubscribed, getFileName } from "../../constant/Utils";
4+
import PremiumAlertHeader from "../../primitives/PremiumAlertHeader";
5+
import Upgrade from "../../primitives/Upgrade";
6+
import { isEnableSubscription } from "../../constant/const";
47
// import SelectFolder from "../../premitives/SelectFolder";
58

69
const EditTemplate = ({ template, onSuccess }) => {
@@ -9,9 +12,21 @@ const EditTemplate = ({ template, onSuccess }) => {
912
Name: template?.Name || "",
1013
Note: template?.Note || "",
1114
Description: template?.Description || "",
12-
SendinOrder: template?.SendinOrder ? `${template?.SendinOrder}` : "false"
15+
SendinOrder: template?.SendinOrder ? `${template?.SendinOrder}` : "false",
16+
AutomaticReminders: template?.AutomaticReminders || false,
17+
RemindOnceInEvery: template?.RemindOnceInEvery || 5
1318
});
14-
19+
const [isSubscribe, setIsSubscribe] = useState(false);
20+
useEffect(() => {
21+
fetchSubscription();
22+
// eslint-disable-next-line react-hooks/exhaustive-deps
23+
}, []);
24+
const fetchSubscription = async () => {
25+
if (isEnableSubscription) {
26+
const getIsSubscribe = await checkIsSubscribed();
27+
setIsSubscribe(getIsSubscribe);
28+
}
29+
};
1530
const handleStrInput = (e) => {
1631
setFormData({ ...formData, [e.target.name]: e.target.value });
1732
};
@@ -25,12 +40,26 @@ const EditTemplate = ({ template, onSuccess }) => {
2540
e.preventDefault();
2641
e.stopPropagation();
2742
const isChecked = formData.SendinOrder === "true" ? true : false;
28-
const data = { ...formData, SendinOrder: isChecked };
43+
const AutoReminder = formData?.AutomaticReminders || false;
44+
45+
let reminderDate = {};
46+
if (AutoReminder) {
47+
const RemindOnceInEvery = parseInt(formData?.RemindOnceInEvery);
48+
const ReminderDate = new Date(template?.createdAt);
49+
ReminderDate.setDate(ReminderDate.getDate() + RemindOnceInEvery);
50+
reminderDate = { NextReminderDate: ReminderDate };
51+
}
52+
const data = { ...formData, SendinOrder: isChecked, ...reminderDate };
2953
onSuccess(data);
3054
};
31-
55+
const handleAutoReminder = () => {
56+
setFormData((prev) => ({
57+
...prev,
58+
AutomaticReminders: !formData.AutomaticReminders
59+
}));
60+
};
3261
return (
33-
<div className="addusercontainer">
62+
<div className="max-h-[300px] md:max-h-[400px] overflow-y-scroll p-[10px]">
3463
<div className="form-wrapper">
3564
<form onSubmit={handleSubmit}>
3665
<div>
@@ -128,6 +157,57 @@ const EditTemplate = ({ template, onSuccess }) => {
128157
<div style={{ fontSize: 12 }}>No</div>
129158
</div>
130159
</div>
160+
<div className="text-xs mt-2">
161+
{!isEnableSubscription && (
162+
<PremiumAlertHeader
163+
message={
164+
"Disable Auto reminder is free in beta, this feature will incur a fee later."
165+
}
166+
/>
167+
)}
168+
<span
169+
className={
170+
isSubscribe || !isEnableSubscription
171+
? "font-semibold"
172+
: "font-semibold text-gray-300"
173+
}
174+
>
175+
Auto reminder{" "}
176+
{!isSubscribe && isEnableSubscription && <Upgrade />}
177+
</span>
178+
<label
179+
className={`${
180+
isSubscribe || !isEnableSubscription
181+
? "cursor-pointer "
182+
: "pointer-events-none opacity-50"
183+
} relative block items-center mb-0`}
184+
>
185+
<input
186+
checked={formData.AutomaticReminders}
187+
onChange={handleAutoReminder}
188+
type="checkbox"
189+
value=""
190+
className="sr-only peer"
191+
/>
192+
<div className="w-9 h-5 bg-gray-200 peer-focus:outline-none peer-focus:ring-1 peer-focus:ring-black rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all dark:border-black peer-checked:bg-blue-600 mt-2"></div>
193+
</label>
194+
</div>
195+
{isSubscribe && formData?.AutomaticReminders === true && (
196+
<div className="text-xs mt-2">
197+
<label className="block">
198+
Remind once in every (Days)
199+
<span className="text-red-500 text-[13px]">*</span>
200+
</label>
201+
<input
202+
type="number"
203+
value={formData.RemindOnceInEvery}
204+
name="RemindOnceInEvery"
205+
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
206+
onChange={handleStrInput}
207+
required
208+
/>
209+
</div>
210+
)}
131211
{/* <SelectFolder onSuccess={handleFolder} folderCls={"contracts_Template"} /> */}
132212
<div className="buttoncontainer">
133213
<button type="submit" className="submitbutton">

apps/OpenSign/src/components/pdf/EmailComponent.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import loader from "../../assets/images/loader2.gif";
1010
function EmailComponent({
1111
isEmail,
1212
pdfUrl,
13-
isCeleb,
1413
setIsEmail,
1514
setSuccessEmail,
1615
pdfName,
@@ -22,6 +21,7 @@ function EmailComponent({
2221
const [emailList, setEmailList] = useState([]);
2322
const [emailValue, setEmailValue] = useState();
2423
const [isLoading, setIsLoading] = useState(false);
24+
const [isEmailCelebration, setIsEmailCelebration] = useState(false);
2525
//function for send email
2626
const sendEmail = async () => {
2727
setIsLoading(true);
@@ -62,6 +62,10 @@ function EmailComponent({
6262
" target=_blank>here</a> </p></div></div></body></html>"
6363
};
6464
sendMail = await axios.post(url, params, { headers: headers });
65+
setIsEmailCelebration(true);
66+
setTimeout(() => {
67+
setIsEmailCelebration(false);
68+
}, 3000);
6569
} catch (error) {
6670
console.log("error", error);
6771
setIsLoading(false);
@@ -245,22 +249,17 @@ function EmailComponent({
245249
</div>
246250
</div>
247251
<div style={{ height: "100%", padding: 20 }}>
248-
{isCeleb && (
249-
<div
250-
style={{
251-
position: "absolute",
252-
marginLeft: "50px"
253-
}}
254-
>
252+
{isEmailCelebration && (
253+
<div className="absolute w-[100%] flex justify-center items-center">
255254
<img
256255
alt="print img"
257256
width={300}
258257
height={250}
259-
// style={styles.gifCeleb}
260258
src={celebration}
261259
/>
262260
</div>
263261
)}
262+
264263
<p
265264
style={{
266265
fontFamily: "system-ui",

apps/OpenSign/src/constant/Utils.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ export const signPdfFun = async (
561561
isCustomCompletionMail = true;
562562
}
563563
}
564-
564+
565565
// below for loop is used to get first signature of user to send if to signpdf
566566
// for adding it in completion certificate
567567
let getSignature;
@@ -676,7 +676,9 @@ export const createDocument = async (template, placeholders, signerData) => {
676676
objectId: Doc.CreatedBy.objectId
677677
},
678678
Signers: signers,
679-
SendinOrder: Doc?.SendinOrder || false
679+
SendinOrder: Doc?.SendinOrder || false,
680+
AutomaticReminders: Doc?.AutomaticReminders || false,
681+
RemindOnceInEvery: parseInt(Doc?.RemindOnceInEvery || 5)
680682
};
681683

682684
try {
@@ -1349,8 +1351,8 @@ export const multiSignEmbed = async (
13491351
position.type === radioButtonWidget
13501352
? 10
13511353
: position.type === "checkbox"
1352-
? 10
1353-
: newUpdateHeight;
1354+
? 10
1355+
: newUpdateHeight;
13541356
const newHeight = ind ? (ind > 0 ? widgetHeight : 0) : widgetHeight;
13551357

13561358
if (signyourself) {

0 commit comments

Comments
 (0)