diff --git a/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx b/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx index 73f8cf7e5..ea60d1819 100644 --- a/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx +++ b/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -9,7 +9,7 @@ import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants import { DO_NOT_INVALIDATE_QUERY_ON_MUTATION } from '@documenso/lib/constants/trpc'; import { AppError } from '@documenso/lib/errors/app-error'; import { ZDocumentAccessAuthTypesSchema, ZDocumentActionAuthTypesSchema } from '@documenso/lib/types/document-auth'; -import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email'; +import { DocumentEmailEvents, ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email'; import { type TDocumentMetaDateFormat, ZDocumentMetaDateFormatSchema, @@ -39,6 +39,7 @@ import { ExpirationPeriodPicker } from '@documenso/ui/components/document/expira import { ReminderSettingsPicker } from '@documenso/ui/components/document/reminder-settings-picker'; import { TemplateTypeSelect, TemplateTypeTooltip } from '@documenso/ui/components/template/template-type-select'; import { cn } from '@documenso/ui/lib/utils'; +import { Alert, AlertDescription } from '@documenso/ui/primitives/alert'; import { Button } from '@documenso/ui/primitives/button'; import { CardDescription, CardHeader, CardTitle } from '@documenso/ui/primitives/card'; import { Combobox } from '@documenso/ui/primitives/combobox'; @@ -114,7 +115,7 @@ export const ZAddSettingsFormSchema = z.object({ }), }); -type EnvelopeEditorSettingsTabType = 'general' | 'reminders' | 'email' | 'security'; +type EnvelopeEditorSettingsTabType = 'general' | 'reminders' | 'notifications' | 'security'; const tabs = [ { @@ -130,10 +131,10 @@ const tabs = [ description: msg`Configure signing reminder settings for the document.`, }, { - id: 'email', - title: msg`Email`, + id: 'notifications', + title: msg`Notifications`, icon: MailIcon, - description: msg`Configure email settings for the document.`, + description: msg`Configure notification settings for the document.`, }, { id: 'security', @@ -143,6 +144,18 @@ const tabs = [ }, ] as const; +// Recipient-facing notification events. These are suppressed at send time +// when distributionMethod is not EMAIL (see extractDerivedDocumentEmailSettings), +// so the UI mirrors that by disabling the matching checkboxes. +const RECIPIENT_EMAIL_EVENTS = [ + DocumentEmailEvents.RecipientSigningRequest, + DocumentEmailEvents.RecipientRemoved, + DocumentEmailEvents.RecipientSigned, + DocumentEmailEvents.DocumentPending, + DocumentEmailEvents.DocumentCompleted, + DocumentEmailEvents.DocumentDeleted, +] as const; + type TAddSettingsFormSchema = z.infer; type EnvelopeEditorSettingsDialogProps = { @@ -205,6 +218,8 @@ export const EnvelopeEditorSettingsDialog = ({ trigger, ...props }: EnvelopeEdit ); const emailSettings = form.watch('meta.emailSettings'); + const distributionMethod = form.watch('meta.distributionMethod'); + const isEmailDistribution = distributionMethod === DocumentDistributionMethod.EMAIL; const { data: emailData, isLoading: isLoadingEmails } = trpc.enterprise.organisation.email.find.useQuery( { @@ -334,7 +349,7 @@ export const EnvelopeEditorSettingsDialog = ({ trigger, ...props }: EnvelopeEdit