From bfe8c674f2236d94b0b82ce44079fb78fb7afd7c Mon Sep 17 00:00:00 2001 From: Catalin Pit Date: Mon, 23 Jun 2025 03:10:57 +0300 Subject: [PATCH] fix: globalAccessAuth error (#1851) --- .../components/general/document/document-edit-form.tsx | 8 +++++++- .../components/general/template/template-edit-form.tsx | 8 +++++++- .../ui/primitives/document-flow/add-settings.types.ts | 6 +++++- .../template-flow/add-template-settings.types.tsx | 6 +++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/apps/remix/app/components/general/document/document-edit-form.tsx b/apps/remix/app/components/general/document/document-edit-form.tsx index 5975a59d2..014310226 100644 --- a/apps/remix/app/components/general/document/document-edit-form.tsx +++ b/apps/remix/app/components/general/document/document-edit-form.tsx @@ -4,6 +4,7 @@ import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { DocumentDistributionMethod, DocumentStatus } from '@prisma/client'; import { useNavigate, useSearchParams } from 'react-router'; +import { z } from 'zod'; import { DocumentSignatureType } from '@documenso/lib/constants/document'; import { isValidLanguageCode } from '@documenso/lib/constants/i18n'; @@ -12,6 +13,7 @@ import { SKIP_QUERY_BATCH_META, } from '@documenso/lib/constants/trpc'; import type { TDocument } from '@documenso/lib/types/document'; +import { ZDocumentAccessAuthTypesSchema } from '@documenso/lib/types/document-auth'; import { trpc } from '@documenso/trpc/react'; import { cn } from '@documenso/ui/lib/utils'; import { Card, CardContent } from '@documenso/ui/primitives/card'; @@ -175,13 +177,17 @@ export const DocumentEditForm = ({ try { const { timezone, dateFormat, redirectUrl, language, signatureTypes } = data.meta; + const parsedGlobalAccessAuth = z + .array(ZDocumentAccessAuthTypesSchema) + .safeParse(data.globalAccessAuth); + await updateDocument({ documentId: document.id, data: { title: data.title, externalId: data.externalId || null, visibility: data.visibility, - globalAccessAuth: data.globalAccessAuth ?? [], + globalAccessAuth: parsedGlobalAccessAuth.success ? parsedGlobalAccessAuth.data : [], globalActionAuth: data.globalActionAuth ?? [], }, meta: { diff --git a/apps/remix/app/components/general/template/template-edit-form.tsx b/apps/remix/app/components/general/template/template-edit-form.tsx index 4cd0f0f8a..ec1f234db 100644 --- a/apps/remix/app/components/general/template/template-edit-form.tsx +++ b/apps/remix/app/components/general/template/template-edit-form.tsx @@ -3,6 +3,7 @@ import { useEffect, useState } from 'react'; import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { useNavigate } from 'react-router'; +import { z } from 'zod'; import { DocumentSignatureType } from '@documenso/lib/constants/document'; import { isValidLanguageCode } from '@documenso/lib/constants/i18n'; @@ -10,6 +11,7 @@ import { DO_NOT_INVALIDATE_QUERY_ON_MUTATION, SKIP_QUERY_BATCH_META, } from '@documenso/lib/constants/trpc'; +import { ZDocumentAccessAuthTypesSchema } from '@documenso/lib/types/document-auth'; import type { TTemplate } from '@documenso/lib/types/template'; import { trpc } from '@documenso/trpc/react'; import { cn } from '@documenso/ui/lib/utils'; @@ -125,6 +127,10 @@ export const TemplateEditForm = ({ const onAddSettingsFormSubmit = async (data: TAddTemplateSettingsFormSchema) => { const { signatureTypes } = data.meta; + const parsedGlobalAccessAuth = z + .array(ZDocumentAccessAuthTypesSchema) + .safeParse(data.globalAccessAuth); + try { await updateTemplateSettings({ templateId: template.id, @@ -132,7 +138,7 @@ export const TemplateEditForm = ({ title: data.title, externalId: data.externalId || null, visibility: data.visibility, - globalAccessAuth: data.globalAccessAuth ?? [], + globalAccessAuth: parsedGlobalAccessAuth.success ? parsedGlobalAccessAuth.data : [], globalActionAuth: data.globalActionAuth ?? [], }, meta: { diff --git a/packages/ui/primitives/document-flow/add-settings.types.ts b/packages/ui/primitives/document-flow/add-settings.types.ts index b4c4ef2bc..ea70556f0 100644 --- a/packages/ui/primitives/document-flow/add-settings.types.ts +++ b/packages/ui/primitives/document-flow/add-settings.types.ts @@ -23,7 +23,11 @@ export const ZAddSettingsFormSchema = z.object({ .min(1, { message: msg`Title cannot be empty`.id }), externalId: z.string().optional(), visibility: z.nativeEnum(DocumentVisibility).optional(), - globalAccessAuth: z.array(ZDocumentAccessAuthTypesSchema), + globalAccessAuth: z + .array(z.union([ZDocumentAccessAuthTypesSchema, z.literal('-1')])) + .transform((val) => (val.length === 1 && val[0] === '-1' ? [] : val)) + .optional() + .default([]), globalActionAuth: z.array(ZDocumentActionAuthTypesSchema), meta: z.object({ timezone: ZDocumentMetaTimezoneSchema.optional().default(DEFAULT_DOCUMENT_TIME_ZONE), diff --git a/packages/ui/primitives/template-flow/add-template-settings.types.tsx b/packages/ui/primitives/template-flow/add-template-settings.types.tsx index 91ddc431f..440b0b40d 100644 --- a/packages/ui/primitives/template-flow/add-template-settings.types.tsx +++ b/packages/ui/primitives/template-flow/add-template-settings.types.tsx @@ -22,7 +22,11 @@ export const ZAddTemplateSettingsFormSchema = z.object({ title: z.string().trim().min(1, { message: "Title can't be empty" }), externalId: z.string().optional(), visibility: z.nativeEnum(DocumentVisibility).optional(), - globalAccessAuth: z.array(ZDocumentAccessAuthTypesSchema).optional().default([]), + globalAccessAuth: z + .array(z.union([ZDocumentAccessAuthTypesSchema, z.literal('-1')])) + .transform((val) => (val.length === 1 && val[0] === '-1' ? [] : val)) + .optional() + .default([]), globalActionAuth: z.array(ZDocumentActionAuthTypesSchema).optional().default([]), meta: z.object({ subject: z.string(),