Skip to content

Commit ba2bb07

Browse files
authored
Merge pull request #655 from OpenSignLabs/staging
v1.5.7
2 parents a44cb71 + 61e11b7 commit ba2bb07

File tree

12 files changed

+532
-479
lines changed

12 files changed

+532
-479
lines changed

apps/OpenSign/src/pages/Form.js

Lines changed: 92 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Title from "../components/Title";
1212
import PageNotFound from "./PageNotFound";
1313
import { SaveFileSize } from "../constant/saveFileSize";
1414
import { getFileName } from "../constant/Utils";
15+
import { PDFDocument } from "pdf-lib";
1516

1617
// `Form` render all type of Form on this basis of their provided in path
1718
function Form() {
@@ -41,7 +42,7 @@ const Forms = (props) => {
4142
TimeToCompleteDays: 15,
4243
SendinOrder: "false"
4344
});
44-
const [fileupload, setFileUpload] = useState([]);
45+
const [fileupload, setFileUpload] = useState("");
4546
const [fileload, setfileload] = useState(false);
4647
const [percentage, setpercentage] = useState(0);
4748
const [isReset, setIsReset] = useState(false);
@@ -55,7 +56,23 @@ const Forms = (props) => {
5556
handleReset();
5657
// eslint-disable-next-line react-hooks/exhaustive-deps
5758
}, [props.title]);
58-
const handleFileInput = (e) => {
59+
60+
function getFileAsArrayBuffer(file) {
61+
return new Promise((resolve, reject) => {
62+
const reader = new FileReader();
63+
64+
reader.onload = (e) => {
65+
resolve(e.target.result);
66+
};
67+
68+
reader.onerror = (e) => {
69+
reject(e.target.error);
70+
};
71+
72+
reader.readAsArrayBuffer(file);
73+
});
74+
}
75+
const handleFileInput = async (e) => {
5976
setpercentage(0);
6077
try {
6178
let files = e.target.files;
@@ -65,11 +82,21 @@ const Forms = (props) => {
6582
alert(
6683
`The selected file size is too large. Please select a file less than ${maxFileSize} MB`
6784
);
68-
setFileUpload([]);
85+
setFileUpload("");
6986
e.target.value = "";
7087
return;
7188
} else {
72-
handleFileUpload(files[0]);
89+
try {
90+
const res = await getFileAsArrayBuffer(files[0]);
91+
const pdfBytes = await PDFDocument.load(res);
92+
console.log("pdfbytes ", pdfBytes);
93+
handleFileUpload(files[0]);
94+
} catch (err) {
95+
alert(`Currently encrypted pdf files are not supported.`);
96+
setFileUpload("");
97+
e.target.value = "";
98+
console.log("err ", err);
99+
}
73100
}
74101
} else {
75102
alert("Please select file.");
@@ -162,64 +189,68 @@ const Forms = (props) => {
162189
const handleSubmit = async (e) => {
163190
e.preventDefault();
164191
e.stopPropagation();
165-
setIsSubmit(true);
166-
try {
167-
const currentUser = Parse.User.current();
168-
const object = new Parse.Object(props.Cls);
169-
object.set("Name", formData?.Name);
170-
object.set("Description", formData?.Description);
171-
object.set("Note", formData?.Note);
172-
if (props.title === "Request Signatures") {
173-
object.set(
174-
"TimeToCompleteDays",
175-
parseInt(formData?.TimeToCompleteDays)
176-
);
177-
}
178-
if (props.title !== "Sign Yourself") {
179-
const isChecked = formData.SendinOrder === "false" ? false : true;
180-
object.set("SendinOrder", isChecked);
181-
}
182-
object.set("URL", fileupload);
183-
object.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
184-
if (folder && folder.ObjectId) {
185-
object.set("Folder", {
192+
if (fileupload) {
193+
setIsSubmit(true);
194+
try {
195+
const currentUser = Parse.User.current();
196+
const object = new Parse.Object(props.Cls);
197+
object.set("Name", formData?.Name);
198+
object.set("Description", formData?.Description);
199+
object.set("Note", formData?.Note);
200+
if (props.title === "Request Signatures") {
201+
object.set(
202+
"TimeToCompleteDays",
203+
parseInt(formData?.TimeToCompleteDays)
204+
);
205+
}
206+
if (props.title !== "Sign Yourself") {
207+
const isChecked = formData.SendinOrder === "false" ? false : true;
208+
object.set("SendinOrder", isChecked);
209+
}
210+
object.set("URL", fileupload);
211+
object.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
212+
if (folder && folder.ObjectId) {
213+
object.set("Folder", {
214+
__type: "Pointer",
215+
className: props.Cls,
216+
objectId: folder.ObjectId
217+
});
218+
}
219+
if (signers && signers.length > 0) {
220+
object.set("Signers", signers);
221+
}
222+
const ExtCls = JSON.parse(localStorage.getItem("Extand_Class"));
223+
object.set("ExtUserPtr", {
186224
__type: "Pointer",
187-
className: props.Cls,
188-
objectId: folder.ObjectId
225+
className: "contracts_Users",
226+
objectId: ExtCls[0].objectId
189227
});
190-
}
191-
if (signers && signers.length > 0) {
192-
object.set("Signers", signers);
193-
}
194-
const ExtCls = JSON.parse(localStorage.getItem("Extand_Class"));
195-
object.set("ExtUserPtr", {
196-
__type: "Pointer",
197-
className: "contracts_Users",
198-
objectId: ExtCls[0].objectId
199-
});
200228

201-
const res = await object.save();
202-
if (res) {
203-
setSigners([]);
204-
setFolder({ ObjectId: "", Name: "" });
205-
setFormData({
206-
Name: "",
207-
Description: "",
208-
Note: ""
209-
});
210-
setFileUpload([]);
211-
setpercentage(0);
212-
navigate(`/${props?.redirectRoute}/${res.id}`);
229+
const res = await object.save();
230+
if (res) {
231+
setSigners([]);
232+
setFolder({ ObjectId: "", Name: "" });
233+
setFormData({
234+
Name: "",
235+
Description: "",
236+
Note: ""
237+
});
238+
setFileUpload("");
239+
setpercentage(0);
240+
navigate(`/${props?.redirectRoute}/${res.id}`);
241+
}
242+
} catch (err) {
243+
console.log("err ", err);
244+
setIsErr(true);
245+
} finally {
246+
setIsAlert(true);
247+
setTimeout(() => {
248+
setIsAlert(false);
249+
}, 1000);
250+
setIsSubmit(false);
213251
}
214-
} catch (err) {
215-
console.log("err ", err);
216-
setIsErr(true);
217-
} finally {
218-
setIsAlert(true);
219-
setTimeout(() => {
220-
setIsAlert(false);
221-
}, 1000);
222-
setIsSubmit(false);
252+
} else {
253+
alert("Please wait until the PDF has been uploading.");
223254
}
224255
};
225256

@@ -251,11 +282,11 @@ const Forms = (props) => {
251282
TimeToCompleteDays: 15,
252283
SendinOrder: "true"
253284
});
254-
setFileUpload([]);
285+
setFileUpload("");
255286
setpercentage(0);
256287
setTimeout(() => setIsReset(false), 50);
257288
};
258-
289+
259290
return (
260291
<div className="shadow-md rounded my-2 p-3 bg-[#ffffff] md:border-[1px] md:border-gray-600/50">
261292
<Title title={props?.title} />
@@ -303,7 +334,7 @@ const Forms = (props) => {
303334
file selected : {getFileName(fileupload)}
304335
</div>
305336
<div
306-
onClick={() => setFileUpload([])}
337+
onClick={() => setFileUpload("")}
307338
className="cursor-pointer px-[10px] text-[20px] font-bold bg-white text-red-500"
308339
>
309340
<i className="fa-solid fa-xmark"></i>

0 commit comments

Comments
 (0)