feat: enhance document management by adding attachments support

- Updated DocumentEditForm to include attachments in the document data.
- Modified getDocumentWithDetailsById to fetch attachments.
- Updated ZDocumentSchema to validate attachments.
- Enhanced AddSettingsFormPartial to handle attachments with default values and updated field names.
This commit is contained in:
Catalin Documenso
2025-04-29 14:11:11 +03:00
parent 7ac48cb3f5
commit 396a7db587
4 changed files with 17 additions and 3 deletions

View File

@ -27,6 +27,7 @@ export const getDocumentWithDetailsById = async ({
documentMeta: true,
recipients: true,
fields: true,
attachments: true,
},
});

View File

@ -1,5 +1,6 @@
import type { z } from 'zod';
import { AttachmentSchema } from '@documenso/prisma/generated/zod/modelSchema/AttachmentSchema';
import { DocumentDataSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentDataSchema';
import { DocumentMetaSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentMetaSchema';
import { DocumentSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentSchema';
@ -59,6 +60,7 @@ export const ZDocumentSchema = DocumentSchema.pick({
}).nullable(),
recipients: ZRecipientLiteSchema.array(),
fields: ZFieldSchema.array(),
attachments: AttachmentSchema.array(),
});
export type TDocument = z.infer<typeof ZDocumentSchema>;

View File

@ -1,4 +1,4 @@
import { useEffect } from 'react';
import { useEffect, useId } from 'react';
import { zodResolver } from '@hookform/resolvers/zod';
import { Trans } from '@lingui/react/macro';
@ -89,11 +89,20 @@ export const AddSettingsFormPartial = ({
onSubmit,
}: AddSettingsFormProps) => {
const { t } = useLingui();
const initialId = useId();
const { documentAuthOption } = extractDocumentAuthMethods({
documentAuth: document.authOptions,
});
const defaultAttachments = [
{
formId: initialId,
label: '',
url: '',
},
];
const form = useForm<TAddSettingsFormSchema>({
resolver: zodResolver(ZAddSettingsFormSchema),
defaultValues: {
@ -114,6 +123,7 @@ export const AddSettingsFormPartial = ({
language: document.documentMeta?.language ?? 'en',
signatureTypes: extractTeamSignatureSettings(document.documentMeta),
},
attachments: document.attachments ?? defaultAttachments,
},
});
@ -136,7 +146,7 @@ export const AddSettingsFormPartial = ({
appendAttachment({
formId: nanoid(12),
label: '',
link: '',
url: '',
});
};
@ -502,7 +512,7 @@ export const AddSettingsFormPartial = ({
<div className="flex-1">
<FormField
control={form.control}
name={`attachments.${index}.link`}
name={`attachments.${index}.url`}
render={({ field }) => (
<FormItem>
<FormLabel className="flex flex-row items-center">