mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 16:23:06 +10:00
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:
@ -185,6 +185,7 @@ export const DocumentEditForm = ({
|
|||||||
visibility: data.visibility,
|
visibility: data.visibility,
|
||||||
globalAccessAuth: data.globalAccessAuth ?? null,
|
globalAccessAuth: data.globalAccessAuth ?? null,
|
||||||
globalActionAuth: data.globalActionAuth ?? null,
|
globalActionAuth: data.globalActionAuth ?? null,
|
||||||
|
attachments: data.attachments ?? [],
|
||||||
},
|
},
|
||||||
meta: {
|
meta: {
|
||||||
timezone,
|
timezone,
|
||||||
|
|||||||
@ -27,6 +27,7 @@ export const getDocumentWithDetailsById = async ({
|
|||||||
documentMeta: true,
|
documentMeta: true,
|
||||||
recipients: true,
|
recipients: true,
|
||||||
fields: true,
|
fields: true,
|
||||||
|
attachments: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import type { z } from 'zod';
|
import type { z } from 'zod';
|
||||||
|
|
||||||
|
import { AttachmentSchema } from '@documenso/prisma/generated/zod/modelSchema/AttachmentSchema';
|
||||||
import { DocumentDataSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentDataSchema';
|
import { DocumentDataSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentDataSchema';
|
||||||
import { DocumentMetaSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentMetaSchema';
|
import { DocumentMetaSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentMetaSchema';
|
||||||
import { DocumentSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentSchema';
|
import { DocumentSchema } from '@documenso/prisma/generated/zod/modelSchema/DocumentSchema';
|
||||||
@ -59,6 +60,7 @@ export const ZDocumentSchema = DocumentSchema.pick({
|
|||||||
}).nullable(),
|
}).nullable(),
|
||||||
recipients: ZRecipientLiteSchema.array(),
|
recipients: ZRecipientLiteSchema.array(),
|
||||||
fields: ZFieldSchema.array(),
|
fields: ZFieldSchema.array(),
|
||||||
|
attachments: AttachmentSchema.array(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export type TDocument = z.infer<typeof ZDocumentSchema>;
|
export type TDocument = z.infer<typeof ZDocumentSchema>;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect, useId } from 'react';
|
||||||
|
|
||||||
import { zodResolver } from '@hookform/resolvers/zod';
|
import { zodResolver } from '@hookform/resolvers/zod';
|
||||||
import { Trans } from '@lingui/react/macro';
|
import { Trans } from '@lingui/react/macro';
|
||||||
@ -89,11 +89,20 @@ export const AddSettingsFormPartial = ({
|
|||||||
onSubmit,
|
onSubmit,
|
||||||
}: AddSettingsFormProps) => {
|
}: AddSettingsFormProps) => {
|
||||||
const { t } = useLingui();
|
const { t } = useLingui();
|
||||||
|
const initialId = useId();
|
||||||
|
|
||||||
const { documentAuthOption } = extractDocumentAuthMethods({
|
const { documentAuthOption } = extractDocumentAuthMethods({
|
||||||
documentAuth: document.authOptions,
|
documentAuth: document.authOptions,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const defaultAttachments = [
|
||||||
|
{
|
||||||
|
formId: initialId,
|
||||||
|
label: '',
|
||||||
|
url: '',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
const form = useForm<TAddSettingsFormSchema>({
|
const form = useForm<TAddSettingsFormSchema>({
|
||||||
resolver: zodResolver(ZAddSettingsFormSchema),
|
resolver: zodResolver(ZAddSettingsFormSchema),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
@ -114,6 +123,7 @@ export const AddSettingsFormPartial = ({
|
|||||||
language: document.documentMeta?.language ?? 'en',
|
language: document.documentMeta?.language ?? 'en',
|
||||||
signatureTypes: extractTeamSignatureSettings(document.documentMeta),
|
signatureTypes: extractTeamSignatureSettings(document.documentMeta),
|
||||||
},
|
},
|
||||||
|
attachments: document.attachments ?? defaultAttachments,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -136,7 +146,7 @@ export const AddSettingsFormPartial = ({
|
|||||||
appendAttachment({
|
appendAttachment({
|
||||||
formId: nanoid(12),
|
formId: nanoid(12),
|
||||||
label: '',
|
label: '',
|
||||||
link: '',
|
url: '',
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -502,7 +512,7 @@ export const AddSettingsFormPartial = ({
|
|||||||
<div className="flex-1">
|
<div className="flex-1">
|
||||||
<FormField
|
<FormField
|
||||||
control={form.control}
|
control={form.control}
|
||||||
name={`attachments.${index}.link`}
|
name={`attachments.${index}.url`}
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel className="flex flex-row items-center">
|
<FormLabel className="flex flex-row items-center">
|
||||||
|
|||||||
Reference in New Issue
Block a user