mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 16:23:06 +10:00
fix: complete document when all recipients are CC
This commit is contained in:
@ -8,7 +8,6 @@ import {
|
|||||||
DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
|
DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
|
||||||
SKIP_QUERY_BATCH_META,
|
SKIP_QUERY_BATCH_META,
|
||||||
} from '@documenso/lib/constants/trpc';
|
} from '@documenso/lib/constants/trpc';
|
||||||
import { DocumentStatus, RecipientRole } from '@documenso/prisma/client';
|
|
||||||
import type { DocumentWithDetails } from '@documenso/prisma/types/document';
|
import type { DocumentWithDetails } from '@documenso/prisma/types/document';
|
||||||
import { trpc } from '@documenso/trpc/react';
|
import { trpc } from '@documenso/trpc/react';
|
||||||
import { cn } from '@documenso/ui/lib/utils';
|
import { cn } from '@documenso/ui/lib/utils';
|
||||||
@ -69,10 +68,6 @@ export const EditDocumentForm = ({
|
|||||||
|
|
||||||
const { Recipient: recipients, Field: fields } = document;
|
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({
|
const { mutateAsync: setSettingsForDocument } = trpc.document.setSettingsForDocument.useMutation({
|
||||||
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
|
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
|
||||||
onSuccess: (newData) => {
|
onSuccess: (newData) => {
|
||||||
@ -254,13 +249,6 @@ export const EditDocumentForm = ({
|
|||||||
const onAddSubjectFormSubmit = async (data: TAddSubjectFormSchema) => {
|
const onAddSubjectFormSubmit = async (data: TAddSubjectFormSchema) => {
|
||||||
const { subject, message } = data.meta;
|
const { subject, message } = data.meta;
|
||||||
try {
|
try {
|
||||||
if (allRecipientsAreCC) {
|
|
||||||
await updateDocumentStatus({
|
|
||||||
documentId: document.id,
|
|
||||||
data: { status: DocumentStatus.COMPLETED },
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
await sendDocument({
|
await sendDocument({
|
||||||
documentId: document.id,
|
documentId: document.id,
|
||||||
teamId: team?.id,
|
teamId: team?.id,
|
||||||
|
|||||||
@ -211,6 +211,10 @@ export const sendDocument = async ({
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const allRecipientsAreCC = document.Recipient.every(
|
||||||
|
(recipient) => recipient.role === RecipientRole.CC,
|
||||||
|
);
|
||||||
|
|
||||||
const updatedDocument = await prisma.$transaction(async (tx) => {
|
const updatedDocument = await prisma.$transaction(async (tx) => {
|
||||||
if (document.status === DocumentStatus.DRAFT) {
|
if (document.status === DocumentStatus.DRAFT) {
|
||||||
await tx.documentAuditLog.create({
|
await tx.documentAuditLog.create({
|
||||||
@ -229,7 +233,7 @@ export const sendDocument = async ({
|
|||||||
id: documentId,
|
id: documentId,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
status: DocumentStatus.PENDING,
|
status: allRecipientsAreCC ? DocumentStatus.COMPLETED : DocumentStatus.PENDING,
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
Recipient: true,
|
Recipient: true,
|
||||||
|
|||||||
@ -16,7 +16,6 @@ import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/
|
|||||||
import { resendDocument } from '@documenso/lib/server-only/document/resend-document';
|
import { resendDocument } from '@documenso/lib/server-only/document/resend-document';
|
||||||
import { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/search-documents-with-keyword';
|
import { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/search-documents-with-keyword';
|
||||||
import { sendDocument } from '@documenso/lib/server-only/document/send-document';
|
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 { updateDocumentSettings } from '@documenso/lib/server-only/document/update-document-settings';
|
||||||
import { updateTitle } from '@documenso/lib/server-only/document/update-title';
|
import { updateTitle } from '@documenso/lib/server-only/document/update-title';
|
||||||
import { symmetricEncrypt } from '@documenso/lib/universal/crypto';
|
import { symmetricEncrypt } from '@documenso/lib/universal/crypto';
|
||||||
@ -37,7 +36,6 @@ import {
|
|||||||
ZSetPasswordForDocumentMutationSchema,
|
ZSetPasswordForDocumentMutationSchema,
|
||||||
ZSetSettingsForDocumentMutationSchema,
|
ZSetSettingsForDocumentMutationSchema,
|
||||||
ZSetTitleForDocumentMutationSchema,
|
ZSetTitleForDocumentMutationSchema,
|
||||||
ZUpdateDocumentMutationSchema,
|
|
||||||
} from './schema';
|
} from './schema';
|
||||||
|
|
||||||
export const documentRouter = router({
|
export const documentRouter = router({
|
||||||
@ -134,23 +132,6 @@ 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
|
deleteDocument: authenticatedProcedure
|
||||||
.input(ZDeleteDocumentMutationSchema)
|
.input(ZDeleteDocumentMutationSchema)
|
||||||
.mutation(async ({ input, ctx }) => {
|
.mutation(async ({ input, ctx }) => {
|
||||||
|
|||||||
@ -48,12 +48,6 @@ export const ZCreateDocumentMutationSchema = z.object({
|
|||||||
teamId: z.number().optional(),
|
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 type TCreateDocumentMutationSchema = z.infer<typeof ZCreateDocumentMutationSchema>;
|
||||||
|
|
||||||
export const ZSetSettingsForDocumentMutationSchema = z.object({
|
export const ZSetSettingsForDocumentMutationSchema = z.object({
|
||||||
|
|||||||
Reference in New Issue
Block a user