Refactor SingleRecordPicker to handle morphs (#14956)

## Scope

- Refactor SingleRecordPicker to handle morphItem and match Multiple one
- fix query generation to take morph into account


Left: 
- double check SingleRecordPicker in Workflows / Form
- Fix tests / stories
This commit is contained in:
Charles Bochet
2025-10-07 20:07:27 +02:00
committed by GitHub
parent 8829eb5a4a
commit 84f1559832
28 changed files with 460 additions and 585 deletions
@@ -9,6 +9,7 @@ import { useRecoilValue } from 'recoil';
import { isDefined } from 'twenty-shared/utils';
import {
type ObjectRecordFilterInput,
type SearchQuery,
useSearchQuery,
} from '~/generated/graphql';
import { logError } from '~/utils/logError';
@@ -18,6 +19,7 @@ export type UseSearchRecordsParams = {
objectNameSingulars: string[];
limit?: number;
onError?: (error?: Error) => void;
onCompleted?: (data: SearchQuery) => void;
skip?: boolean;
fetchPolicy?: WatchQueryFetchPolicy;
searchInput?: string;
@@ -28,6 +30,7 @@ export const useObjectRecordSearchRecords = ({
objectNameSingulars,
searchInput,
limit,
onCompleted,
skip,
filter,
fetchPolicy,
@@ -49,6 +52,7 @@ export const useObjectRecordSearchRecords = ({
},
fetchPolicy: fetchPolicy,
client: apolloCoreClient,
onCompleted: onCompleted,
onError: (error) => {
logError(
`useSearchRecords for "${objectNameSingulars.join(', ')}" error : ` +
@@ -7,6 +7,7 @@ import { getObjectTypename } from '@/object-record/cache/utils/getObjectTypename
import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache';
import { getRecordNodeFromRecord } from '@/object-record/cache/utils/getRecordNodeFromRecord';
import { updateRecordFromCache } from '@/object-record/cache/utils/updateRecordFromCache';
import { type RecordGqlFields } from '@/object-record/graphql/types/RecordGqlFields';
import { computeDepthOneRecordGqlFieldsFromRecord } from '@/object-record/graphql/utils/computeDepthOneRecordGqlFieldsFromRecord';
import { generateDepthOneRecordGqlFields } from '@/object-record/graphql/utils/generateDepthOneRecordGqlFields';
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
@@ -24,7 +25,7 @@ type UpdateOneRecordArgs<UpdatedObjectRecord> = {
updateOneRecordInput: Partial<Omit<UpdatedObjectRecord, 'id'>>;
optimisticRecord?: Partial<ObjectRecord>;
objectNameSingular: string;
recordGqlFields?: Record<string, any>;
recordGqlFields?: RecordGqlFields;
};
export const useUpdateOneRecordV2 = () => {
const apolloCoreClient = useApolloCoreClient();