replace search resolvers by global search in front (#11086)

Done
- Replace global search in multi record picker and single record picker

To do
- refactor SingleRecordPicker to match MultipleRecordPicker - next 1:1
- items in this issue
https://github.com/twentyhq/core-team-issues/issues/643



closes https://github.com/twentyhq/core-team-issues/issues/535
This commit is contained in:
Etienne
2025-03-21 17:25:00 +01:00
committed by GitHub
parent da527f1780
commit e624e8deee
26 changed files with 481 additions and 651 deletions

View File

@ -1,9 +1,7 @@
import { useMapToObjectRecordIdentifier } from '@/object-metadata/hooks/useMapToObjectRecordIdentifier';
import { formatGlobalSearchRecordAsSingleRecordPickerRecord } from '@/object-metadata/utils/formatGlobalSearchRecordAsSingleRecordPickerRecord';
import { DEFAULT_SEARCH_REQUEST_LIMIT } from '@/object-record/constants/DefaultSearchRequestLimit';
import { useSearchRecords } from '@/object-record/hooks/useSearchRecords';
import { MultipleRecordPickerRecords } from '@/object-record/record-picker/multiple-record-picker/types/MultipleRecordPickerRecords';
import { useObjectRecordSearchRecords } from '@/object-record/hooks/useObjectRecordSearchRecords';
import { SingleRecordPickerRecord } from '@/object-record/record-picker/single-record-picker/types/SingleRecordPickerRecord';
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { isDefined } from 'twenty-shared';
export const useFilteredSearchRecordQuery = ({
@ -18,19 +16,16 @@ export const useFilteredSearchRecordQuery = ({
excludedRecordIds?: string[];
objectNameSingular: string;
searchFilter?: string;
}): MultipleRecordPickerRecords<SingleRecordPickerRecord> => {
const { mapToObjectRecordIdentifier } = useMapToObjectRecordIdentifier({
objectNameSingular,
});
const mappingFunction = (record: ObjectRecord) => ({
...mapToObjectRecordIdentifier(record),
record,
});
}): {
selectedRecords: SingleRecordPickerRecord[];
filteredSelectedRecords: SingleRecordPickerRecord[];
recordsToSelect: SingleRecordPickerRecord[];
loading: boolean;
} => {
const selectedIdsFilter = { id: { in: selectedIds } };
const { loading: selectedRecordsLoading, records: selectedRecords } =
useSearchRecords({
const { loading: selectedRecordsLoading, searchRecords: selectedRecords } =
useObjectRecordSearchRecords({
objectNameSingular,
filter: selectedIdsFilter,
skip: !selectedIds.length,
@ -39,8 +34,8 @@ export const useFilteredSearchRecordQuery = ({
const {
loading: filteredSelectedRecordsLoading,
records: filteredSelectedRecords,
} = useSearchRecords({
searchRecords: filteredSelectedRecords,
} = useObjectRecordSearchRecords({
objectNameSingular,
filter: selectedIdsFilter,
skip: !selectedIds.length,
@ -51,8 +46,8 @@ export const useFilteredSearchRecordQuery = ({
const notFilter = notFilterIds.length
? { not: { id: { in: notFilterIds } } }
: undefined;
const { loading: recordsToSelectLoading, records: recordsToSelect } =
useSearchRecords({
const { loading: recordsToSelectLoading, searchRecords: recordsToSelect } =
useObjectRecordSearchRecords({
objectNameSingular,
filter: notFilter,
limit: limit ?? DEFAULT_SEARCH_REQUEST_LIMIT,
@ -61,11 +56,15 @@ export const useFilteredSearchRecordQuery = ({
});
return {
selectedRecords: selectedRecords.map(mappingFunction).filter(isDefined),
filteredSelectedRecords: filteredSelectedRecords
.map(mappingFunction)
selectedRecords: selectedRecords
.map(formatGlobalSearchRecordAsSingleRecordPickerRecord)
.filter(isDefined),
filteredSelectedRecords: filteredSelectedRecords
.map(formatGlobalSearchRecordAsSingleRecordPickerRecord)
.filter(isDefined),
recordsToSelect: recordsToSelect
.map(formatGlobalSearchRecordAsSingleRecordPickerRecord)
.filter(isDefined),
recordsToSelect: recordsToSelect.map(mappingFunction).filter(isDefined),
loading:
recordsToSelectLoading ||
filteredSelectedRecordsLoading ||