From 7babaa39b522a3b57c44a9ab26be05a85c723573 Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Fri, 24 Feb 2023 11:11:06 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=B9=E2=9C=A8=20Resend=20Signing=20Requ?= =?UTF-8?q?est=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/pages/documents.tsx | 18 ++++----- apps/web/pages/documents/[id]/recipients.tsx | 39 ++++++++++++++------ packages/lib/mail/sendSigningRequest.ts | 4 +- 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/apps/web/pages/documents.tsx b/apps/web/pages/documents.tsx index d478cc231..b1282a7f6 100644 --- a/apps/web/pages/documents.tsx +++ b/apps/web/pages/documents.tsx @@ -23,7 +23,7 @@ import { NextPageContext } from "next"; const DocumentsPage: NextPageWithLayout = (props: any) => { const router = useRouter(); const [documents, setDocuments]: any[] = useState([]); - const [filterdDocuments, setFilteredDocuments] = useState([]); + const [filteredDocuments, setFilteredDocuments] = useState([]); const [loading, setLoading] = useState(true); const statusFilters = [ @@ -138,8 +138,8 @@ const DocumentsPage: NextPageWithLayout = (props: any) => {
- {filterdDocuments.length != 1 - ? filterdDocuments.length + " Documents" + {filteredDocuments.length != 1 + ? filteredDocuments.length + " Documents" : "1 Document"}
{ - {filterdDocuments.map((document: any, index: number) => ( + {filteredDocuments.map((document: any, index: number) => ( { event.stopPropagation(); router.push("/documents/" + document.id); }} - > - Edit - + /> { event.stopPropagation(); router.push("/api/documents/" + document.id); }} - > - Download - + /> { @@ -384,7 +380,7 @@ const DocumentsPage: NextPageWithLayout = (props: any) => {
-
+
{ + if (confirm("Resend this signing request?")) { + setLoading(true); + send(props.document, [item.id]).finally(() => { + setLoading(false); + }); + } + }} + > + Resend + + { }); }} className="group-hover:text-neon-dark group-hover:disabled:text-gray-400" - > + />
@@ -445,17 +466,13 @@ export async function getServerSideProps(context: any) { }; } -async function send(document: any) { - // todo toast - // loading +async function send(document: any, resendTo: number[] = []) { if (!document || !document.id) return; try { const sent = await toast.promise( fetch(`/api/documents/${document.id}/send`, { - body: "", - headers: { - "Content-Type": "application/json", - }, + body: JSON.stringify({ resendTo: resendTo }), + headers: { "Content-Type": "application/json" }, method: "POST", }) .then((res: any) => { diff --git a/packages/lib/mail/sendSigningRequest.ts b/packages/lib/mail/sendSigningRequest.ts index ec91f5fce..d042b9a82 100644 --- a/packages/lib/mail/sendSigningRequest.ts +++ b/packages/lib/mail/sendSigningRequest.ts @@ -1,6 +1,6 @@ import prisma from "@documenso/prisma"; import { sendMail } from "./sendMail"; -import { SendStatus, DocumentStatus } from "@prisma/client"; +import { SendStatus, ReadStatus, DocumentStatus } from "@prisma/client"; import { NEXT_PUBLIC_WEBAPP_URL } from "../constants"; import { signingRequestTemplate } from "@documenso/lib/mail"; @@ -27,7 +27,7 @@ export const sendSigningRequest = async ( where: { id: recipient.id, }, - data: { sendStatus: SendStatus.SENT }, + data: { sendStatus: SendStatus.SENT, readStatus: ReadStatus.NOT_OPENED }, }); await prisma.document.update({