mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 16:23:06 +10:00
♻️ sig document to api
This commit is contained in:
@ -8,7 +8,11 @@ import { Button } from "@documenso/ui";
|
|||||||
import { CheckBadgeIcon } from "@heroicons/react/24/outline";
|
import { CheckBadgeIcon } from "@heroicons/react/24/outline";
|
||||||
import toast from "react-hot-toast";
|
import toast from "react-hot-toast";
|
||||||
import { FieldType } from "@prisma/client";
|
import { FieldType } from "@prisma/client";
|
||||||
import { createOrUpdateField, deleteField } from "@documenso/lib/api";
|
import {
|
||||||
|
createOrUpdateField,
|
||||||
|
deleteField,
|
||||||
|
signDocument,
|
||||||
|
} from "@documenso/lib/api";
|
||||||
import { createField } from "@documenso/features/editor";
|
import { createField } from "@documenso/features/editor";
|
||||||
|
|
||||||
const PDFViewer = dynamic(() => import("./pdf-viewer"), {
|
const PDFViewer = dynamic(() => import("./pdf-viewer"), {
|
||||||
@ -64,31 +68,6 @@ export default function PDFSigner(props: any) {
|
|||||||
setDialogField(null);
|
setDialogField(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
function sign() {
|
|
||||||
const body = { documentId: props.document.id, signatures: localSignatures };
|
|
||||||
toast.promise(
|
|
||||||
fetch(
|
|
||||||
`/api/documents/${props.document.id}/sign?token=${router.query.token}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(body),
|
|
||||||
}
|
|
||||||
).then(() => {
|
|
||||||
router.push(
|
|
||||||
`/documents/${props.document.id}/signed?token=${router.query.token}`
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
loading: "Signing...",
|
|
||||||
success: `"${props.document.title}" signed successfully.`,
|
|
||||||
error: "Could not sign :/",
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<SignatureDialog open={open} setOpen={setOpen} onClose={onDialogClose} />
|
<SignatureDialog open={open} setOpen={setOpen} onClose={onDialogClose} />
|
||||||
@ -108,7 +87,15 @@ export default function PDFSigner(props: any) {
|
|||||||
icon={CheckBadgeIcon}
|
icon={CheckBadgeIcon}
|
||||||
className="float-right"
|
className="float-right"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
sign();
|
signDocument(
|
||||||
|
props.document,
|
||||||
|
localSignatures,
|
||||||
|
`${router.query.token}`
|
||||||
|
).then(() => {
|
||||||
|
router.push(
|
||||||
|
`/documents/${props.document.id}/signed?token=${router.query.token}`
|
||||||
|
);
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Done
|
Done
|
||||||
|
|||||||
@ -1,2 +1,3 @@
|
|||||||
export { createOrUpdateField } from "./createOrUpdateField";
|
export { createOrUpdateField } from "./createOrUpdateField";
|
||||||
export { deleteField } from "./deleteField";
|
export { deleteField } from "./deleteField";
|
||||||
|
export { signDocument } from "./signDocument";
|
||||||
|
|||||||
25
packages/lib/api/signDocument.ts
Normal file
25
packages/lib/api/signDocument.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { useRouter } from "next/router";
|
||||||
|
import toast from "react-hot-toast";
|
||||||
|
|
||||||
|
export const signDocument = (
|
||||||
|
document: any,
|
||||||
|
signatures: any[],
|
||||||
|
token: string
|
||||||
|
): Promise<any> => {
|
||||||
|
const body = { documentId: document.id, signatures };
|
||||||
|
|
||||||
|
return toast.promise(
|
||||||
|
fetch(`/api/documents/${document.id}/sign?token=${token}`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify(body),
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
loading: "Signing...",
|
||||||
|
success: `"${document.title}" signed successfully.`,
|
||||||
|
error: "Could not sign :/",
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user