/* eslint-disable unused-imports/no-unused-imports */ /* eslint-disable @typescript-eslint/consistent-type-imports */ /* eslint-disable unused-imports/no-unused-vars */ 'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { DO_NOT_INVALIDATE_QUERY_ON_MUTATION } from '@documenso/lib/constants/trpc'; import type { DocumentData, Field, Recipient, Template, User } from '@documenso/prisma/client'; import { trpc } from '@documenso/trpc/react'; import { cn } from '@documenso/ui/lib/utils'; import { Card, CardContent } from '@documenso/ui/primitives/card'; import { DocumentFlowFormContainer, DocumentFlowFormContainerHeader, } from '@documenso/ui/primitives/document-flow/document-flow-root'; import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types'; import { LazyPDFViewer } from '@documenso/ui/primitives/lazy-pdf-viewer'; import { Stepper } from '@documenso/ui/primitives/stepper'; import { AddTemplateFieldsFormPartial } from '@documenso/ui/primitives/template-flow/add-template-fields'; import type { TAddTemplateFieldsFormSchema } from '@documenso/ui/primitives/template-flow/add-template-fields.types'; import { AddTemplatePlaceholderRecipientsFormPartial } from '@documenso/ui/primitives/template-flow/add-template-placeholder-recipients'; import type { TAddTemplatePlacholderRecipientsFormSchema } from '@documenso/ui/primitives/template-flow/add-template-placeholder-recipients.types'; import { AddTemplateSettingsFormPartial } from '@documenso/ui/primitives/template-flow/add-template-settings'; import { TTemplateSettingsFormSchema } from '@documenso/ui/primitives/template-flow/add-template-settings.types'; import { useToast } from '@documenso/ui/primitives/use-toast'; /* eslint-disable unused-imports/no-unused-imports */ /* eslint-disable @typescript-eslint/consistent-type-imports */ /* eslint-disable unused-imports/no-unused-vars */ export type EditTemplateFormProps = { className?: string; user: User; template: Template; recipients: Recipient[]; fields: Field[]; documentData: DocumentData; templateRootPath: string; }; type EditTemplateStep = 'settings' | 'signers' | 'fields'; const EditTemplateSteps: EditTemplateStep[] = ['settings', 'signers', 'fields']; export const EditTemplateForm = ({ className, template, recipients, fields, user: _user, documentData, templateRootPath, }: EditTemplateFormProps) => { const { toast } = useToast(); const router = useRouter(); const [step, setStep] = useState('signers'); const documentFlow: Record = { settings: { title: 'General', description: 'Configure general settings for the document.', stepIndex: 1, }, signers: { title: 'Add Placeholders', description: 'Add all relevant placeholders for each recipient.', stepIndex: 2, }, fields: { title: 'Add Fields', description: 'Add all relevant fields for each recipient.', stepIndex: 3, }, }; const currentDocumentFlow = documentFlow[step]; const { mutateAsync: addTemplateFields } = trpc.field.addTemplateFields.useMutation(); const { mutateAsync: addTemplateSigners } = trpc.recipient.addTemplateSigners.useMutation(); const onAddTemplatePlaceholderFormSubmit = async ( data: TAddTemplatePlacholderRecipientsFormSchema, ) => { try { await addTemplateSigners({ templateId: template.id, signers: data.signers, }); router.refresh(); setStep('fields'); } catch (err) { toast({ title: 'Error', description: 'An error occurred while adding signers.', variant: 'destructive', }); } }; const onAddTemplateSettingsFormSubmit = async (data: TTemplateSettingsFormSchema) => { // try { // const { timezone, dateFormat, redirectUrl } = data.meta; // await setSettingsForDocument({ // documentId: document.id, // data: { // title: data.title, // globalAccessAuth: data.globalAccessAuth ?? null, // globalActionAuth: data.globalActionAuth ?? null, // }, // meta: { // timezone, // dateFormat, // redirectUrl, // }, // }); // // Router refresh is here to clear the router cache for when navigating to /documents. // router.refresh(); // setStep('signers'); // } catch (err) { // console.error(err); // toast({ // title: 'Error', // description: 'An error occurred while updating the document settings.', // variant: 'destructive', // }); // } }; const onAddFieldsFormSubmit = async (data: TAddTemplateFieldsFormSchema) => { try { await addTemplateFields({ templateId: template.id, fields: data.fields, }); toast({ title: 'Template saved', description: 'Your templates has been saved successfully.', duration: 5000, }); router.push(templateRootPath); } catch (err) { toast({ title: 'Error', description: 'An error occurred while adding signers.', variant: 'destructive', }); } }; return (
e.preventDefault()} > setStep(EditTemplateSteps[step - 1])} >
); };