[BUG] Refactor actor composite type (#10232)

fixes #10200 

The FieldActor Zod schema was updated to correctly handle null context.

---------

Co-authored-by: prastoin <paul@twenty.com>
This commit is contained in:
Mohammed Abdul Razak Wahab
2025-02-20 15:35:26 +05:30
committed by GitHub
parent 927b8c717e
commit 94c0d0f8d2
19 changed files with 454 additions and 169 deletions

View File

@ -1,13 +1,12 @@
import { ConnectedAccountProvider } from 'twenty-shared';
import { ThemeColor } from 'twenty-ui';
import { RATING_VALUES } from '@/object-record/record-field/meta-types/constants/RatingValues';
import { ZodHelperLiteral } from '@/object-record/record-field/types/ZodHelperLiteral';
import { RecordForSelect } from '@/object-record/relation-picker/types/RecordForSelect';
import { ConnectedAccountProvider } from 'twenty-shared';
import * as z from 'zod';
import { RelationDefinitionType } from '~/generated-metadata/graphql';
import { CurrencyCode } from './CurrencyCode';
export type FieldUuidMetadata = {
objectMetadataNameSingular?: string;
fieldName: string;
@ -279,23 +278,25 @@ export type FieldRichTextV2Value = {
export type FieldRichTextValue = null | string;
type FieldActorSource =
| 'API'
| 'IMPORT'
| 'EMAIL'
| 'CALENDAR'
| 'MANUAL'
| 'SYSTEM'
| 'WORKFLOW';
const FieldActorSourceSchema = z.union([
z.literal('API'),
z.literal('IMPORT'),
z.literal('EMAIL'),
z.literal('CALENDAR'),
z.literal('MANUAL'),
z.literal('SYSTEM'),
z.literal('WORKFLOW'),
]);
export type FieldActorValue = {
source: FieldActorSource;
workspaceMemberId: string | null;
name: string;
context: {
provider?: ConnectedAccountProvider;
} | null;
};
export const FieldActorValueSchema = z.object({
source: FieldActorSourceSchema,
workspaceMemberId: z.string().nullable(),
name: z.string(),
context: z.object({
provider: z.nativeEnum(ConnectedAccountProvider).optional(),
}),
});
export type FieldActorValue = z.infer<typeof FieldActorValueSchema>;
export type FieldActorForInputValue = Pick<
FieldActorValue,

View File

@ -1,20 +1,9 @@
import { ConnectedAccountProvider } from 'twenty-shared';
import { z } from 'zod';
import { FieldActorValue } from '../FieldMetadata';
const actorSchema = z.object({
source: z.string(),
workspaceMemberId: z.optional(z.string().nullable()),
name: z.string(),
context: z.optional(
z.object({
provider: z.optional(z.nativeEnum(ConnectedAccountProvider)),
}),
),
});
import {
FieldActorValue,
FieldActorValueSchema,
} from '@/object-record/record-field/types/FieldMetadata';
export const isFieldActorValue = (
fieldValue: unknown,
): fieldValue is FieldActorValue => actorSchema.safeParse(fieldValue).success;
): fieldValue is FieldActorValue =>
FieldActorValueSchema.safeParse(fieldValue).success;