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) => {
0}
+ hidden={filteredDocuments.length > 0}
className="mx-auto w-fit mt-12 p-3"
>
Nothing
diff --git a/apps/web/pages/documents/[id]/recipients.tsx b/apps/web/pages/documents/[id]/recipients.tsx
index 5e079e326..7a0893427 100644
--- a/apps/web/pages/documents/[id]/recipients.tsx
+++ b/apps/web/pages/documents/[id]/recipients.tsx
@@ -10,8 +10,8 @@ import {
EnvelopeIcon,
PaperAirplaneIcon,
PencilSquareIcon,
+ TrashIcon,
UserPlusIcon,
- XMarkIcon,
} from "@heroicons/react/24/outline";
import { getUserFromToken } from "@documenso/lib/server";
import { getDocument } from "@documenso/lib/query";
@@ -236,9 +236,30 @@ const RecipientsPage: 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({