fix: complete document when all recipients are CC

This commit is contained in:
Catalin Pit
2024-04-23 12:33:40 +03:00
parent 4b90adde6b
commit 0eee570781
3 changed files with 37 additions and 1 deletions

View File

@ -8,6 +8,7 @@ import {
DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
SKIP_QUERY_BATCH_META,
} from '@documenso/lib/constants/trpc';
import { DocumentStatus, RecipientRole } from '@documenso/prisma/client';
import type { DocumentWithDetails } from '@documenso/prisma/types/document';
import { trpc } from '@documenso/trpc/react';
import { cn } from '@documenso/ui/lib/utils';
@ -68,6 +69,10 @@ export const EditDocumentForm = ({
const { Recipient: recipients, Field: fields } = document;
const allRecipientsAreCC = recipients.every((recipient) => recipient.role === RecipientRole.CC);
const { mutateAsync: updateDocumentStatus } = trpc.document.updateDocument.useMutation();
const { mutateAsync: setSettingsForDocument } = trpc.document.setSettingsForDocument.useMutation({
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
onSuccess: (newData) => {
@ -248,8 +253,14 @@ export const EditDocumentForm = ({
const onAddSubjectFormSubmit = async (data: TAddSubjectFormSchema) => {
const { subject, message } = data.meta;
try {
if (allRecipientsAreCC) {
await updateDocumentStatus({
documentId: document.id,
data: { status: DocumentStatus.COMPLETED },
});
}
await sendDocument({
documentId: document.id,
teamId: team?.id,

View File

@ -16,6 +16,7 @@ import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/
import { resendDocument } from '@documenso/lib/server-only/document/resend-document';
import { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/search-documents-with-keyword';
import { sendDocument } from '@documenso/lib/server-only/document/send-document';
import { updateDocument } from '@documenso/lib/server-only/document/update-document';
import { updateDocumentSettings } from '@documenso/lib/server-only/document/update-document-settings';
import { updateTitle } from '@documenso/lib/server-only/document/update-title';
import { symmetricEncrypt } from '@documenso/lib/universal/crypto';
@ -36,6 +37,7 @@ import {
ZSetPasswordForDocumentMutationSchema,
ZSetSettingsForDocumentMutationSchema,
ZSetTitleForDocumentMutationSchema,
ZUpdateDocumentMutationSchema,
} from './schema';
export const documentRouter = router({
@ -132,6 +134,23 @@ export const documentRouter = router({
}
}),
updateDocument: authenticatedProcedure
.input(ZUpdateDocumentMutationSchema)
.mutation(async ({ input, ctx }) => {
try {
const { documentId, data } = input;
await updateDocument({ documentId, data, userId: ctx.user.id });
} catch (err) {
console.error(err);
throw new TRPCError({
code: 'BAD_REQUEST',
message: 'We were unable to delete this document. Please try again later.',
});
}
}),
deleteDocument: authenticatedProcedure
.input(ZDeleteDocumentMutationSchema)
.mutation(async ({ input, ctx }) => {

View File

@ -48,6 +48,12 @@ export const ZCreateDocumentMutationSchema = z.object({
teamId: z.number().optional(),
});
export const ZUpdateDocumentMutationSchema = z.object({
documentId: z.number().min(1),
teamId: z.number().optional(),
data: z.any(),
});
export type TCreateDocumentMutationSchema = z.infer<typeof ZCreateDocumentMutationSchema>;
export const ZSetSettingsForDocumentMutationSchema = z.object({