From d6c11bd1956208ba16749cace2364de7b75162f1 Mon Sep 17 00:00:00 2001 From: Catalin Pit Date: Thu, 10 Jul 2025 09:47:36 +0300 Subject: [PATCH] fix: sign-able readonly fields (#1885) --- .../document-signing-auto-sign.tsx | 8 +----- .../document-signing-checkbox-field.tsx | 3 ++- .../document-signing-radio-field.tsx | 3 +++ packages/lib/constants/autosign.ts | 8 ++++++ .../field/sign-field-with-token.ts | 25 +++++++++++++++++++ 5 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 packages/lib/constants/autosign.ts diff --git a/apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx b/apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx index 4a900a230..178aabf32 100644 --- a/apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx +++ b/apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx @@ -10,6 +10,7 @@ import { useRevalidator } from 'react-router'; import { P, match } from 'ts-pattern'; import { unsafe_useEffectOnce } from '@documenso/lib/client-only/hooks/use-effect-once'; +import { AUTO_SIGNABLE_FIELD_TYPES } from '@documenso/lib/constants/autosign'; import { DocumentAuth } from '@documenso/lib/types/document-auth'; import { extractInitials } from '@documenso/lib/utils/recipient-formatter'; import { trpc } from '@documenso/trpc/react'; @@ -30,13 +31,6 @@ import { DocumentSigningDisclosure } from '~/components/general/document-signing import { useRequiredDocumentSigningAuthContext } from './document-signing-auth-provider'; import { useRequiredDocumentSigningContext } from './document-signing-provider'; -const AUTO_SIGNABLE_FIELD_TYPES: string[] = [ - FieldType.NAME, - FieldType.INITIALS, - FieldType.EMAIL, - FieldType.DATE, -]; - // The action auth types that are not allowed to be auto signed // // Reasoning: If the action auth is a passkey or 2FA, it's likely that the owner of the document diff --git a/apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx b/apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx index fa2be505d..ab15d21f7 100644 --- a/apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx +++ b/apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx @@ -286,6 +286,7 @@ export const DocumentSigningCheckboxField = ({ className="h-3 w-3" id={`checkbox-${field.id}-${item.id}`} checked={checkedValues.includes(itemValue)} + disabled={isReadOnly} onCheckedChange={() => handleCheckboxChange(item.value, item.id)} /> {!item.value.includes('empty-value-') && item.value && ( @@ -314,7 +315,7 @@ export const DocumentSigningCheckboxField = ({ className="h-3 w-3" id={`checkbox-${field.id}-${item.id}`} checked={parsedCheckedValues.includes(itemValue)} - disabled={isLoading} + disabled={isLoading || isReadOnly} onCheckedChange={() => void handleCheckboxOptionClick(item)} /> {!item.value.includes('empty-value-') && item.value && ( diff --git a/apps/remix/app/components/general/document-signing/document-signing-radio-field.tsx b/apps/remix/app/components/general/document-signing/document-signing-radio-field.tsx index 934f91c8a..c0c60af79 100644 --- a/apps/remix/app/components/general/document-signing/document-signing-radio-field.tsx +++ b/apps/remix/app/components/general/document-signing/document-signing-radio-field.tsx @@ -41,6 +41,7 @@ export const DocumentSigningRadioField = ({ const { recipient, targetSigner, isAssistantMode } = useDocumentSigningRecipientContext(); const parsedFieldMeta = ZRadioFieldMeta.parse(field.fieldMeta); + const isReadOnly = parsedFieldMeta.readOnly; const values = parsedFieldMeta.values?.map((item) => ({ ...item, value: item.value.length > 0 ? item.value : `empty-value-${item.id}`, @@ -164,6 +165,7 @@ export const DocumentSigningRadioField = ({ value={item.value} id={`option-${field.id}-${item.id}`} checked={item.checked} + disabled={isReadOnly} /> {!item.value.includes('empty-value-') && item.value && (