From 9741959d09848ca4d2cca9a58abae0323e7a0d8e Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Tue, 28 Feb 2023 19:53:22 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20sig=20document=20to=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/components/editor/pdf-signer.tsx | 41 ++++++++--------------- packages/lib/api/index.ts | 1 + packages/lib/api/signDocument.ts | 25 ++++++++++++++ 3 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 packages/lib/api/signDocument.ts diff --git a/apps/web/components/editor/pdf-signer.tsx b/apps/web/components/editor/pdf-signer.tsx index 3f2d32c5f..3b2a63d67 100644 --- a/apps/web/components/editor/pdf-signer.tsx +++ b/apps/web/components/editor/pdf-signer.tsx @@ -8,7 +8,11 @@ import { Button } from "@documenso/ui"; import { CheckBadgeIcon } from "@heroicons/react/24/outline"; import toast from "react-hot-toast"; 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"; const PDFViewer = dynamic(() => import("./pdf-viewer"), { @@ -64,31 +68,6 @@ export default function PDFSigner(props: any) { 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 ( <> @@ -108,7 +87,15 @@ export default function PDFSigner(props: any) { icon={CheckBadgeIcon} className="float-right" onClick={() => { - sign(); + signDocument( + props.document, + localSignatures, + `${router.query.token}` + ).then(() => { + router.push( + `/documents/${props.document.id}/signed?token=${router.query.token}` + ); + }); }} > Done diff --git a/packages/lib/api/index.ts b/packages/lib/api/index.ts index 4fdc836c4..c60ca09da 100644 --- a/packages/lib/api/index.ts +++ b/packages/lib/api/index.ts @@ -1,2 +1,3 @@ export { createOrUpdateField } from "./createOrUpdateField"; export { deleteField } from "./deleteField"; +export { signDocument } from "./signDocument"; diff --git a/packages/lib/api/signDocument.ts b/packages/lib/api/signDocument.ts new file mode 100644 index 000000000..94dbfb679 --- /dev/null +++ b/packages/lib/api/signDocument.ts @@ -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 => { + 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 :/", + } + ); +};