diff --git a/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts b/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts index 343374a000..38cf7b059b 100644 --- a/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts +++ b/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts @@ -35,15 +35,49 @@ describe('computeContextStoreFilters', () => { }); expect(filters).toEqual({ - and: [ - {}, - { - id: { - in: ['1', '2', '3'], - }, - }, - {}, - ], + id: { + in: ['1', '2', '3'], + }, + }); + }); + + it('should target only the selected records and ignore view filters in selection mode', () => { + const contextStoreTargetedRecordsRule: ContextStoreTargetedRecordsRule = { + mode: 'selection', + selectedRecordIds: ['1', '2', '3'], + }; + + const contextStoreFilters: RecordFilter[] = [ + { + id: 'name-filter', + fieldMetadataId: personObjectMetadataItem.fields.find( + (field) => field.name === 'name', + )!.id, + value: 'John', + displayValue: 'John', + displayAvatarUrl: undefined, + operand: ViewFilterOperand.CONTAINS, + type: 'TEXT', + label: 'Name', + }, + ]; + + const filters = computeContextStoreFilters({ + contextStoreTargetedRecordsRule, + contextStoreFilters, + contextStoreFilterGroups: [], + objectMetadataItem: personObjectMetadataItem, + fieldMetadataItems: personObjectMetadataItem.fields, + filterValueDependencies: mockFilterValueDependencies, + contextStoreAnyFieldFilterValue: 'any field search', + }); + + // Explicitly selected records must be targeted as-is, even if they would + // not match the active view filters or any-field search. + expect(filters).toEqual({ + id: { + in: ['1', '2', '3'], + }, }); }); diff --git a/packages/twenty-front/src/modules/context-store/utils/computeContextStoreFilters.ts b/packages/twenty-front/src/modules/context-store/utils/computeContextStoreFilters.ts index bfcaf77f4c..ab6212c092 100644 --- a/packages/twenty-front/src/modules/context-store/utils/computeContextStoreFilters.ts +++ b/packages/twenty-front/src/modules/context-store/utils/computeContextStoreFilters.ts @@ -61,24 +61,11 @@ export const computeContextStoreFilters = ({ ]); } if (contextStoreTargetedRecordsRule.mode === 'selection') { - if (contextStoreTargetedRecordsRule.selectedRecordIds.length === 0) { - return { id: { in: [] } }; - } - - queryFilter = makeAndFilterVariables([ - recordGqlFilterForAnyFieldFilter, - { - id: { - in: contextStoreTargetedRecordsRule.selectedRecordIds, - }, + return { + id: { + in: contextStoreTargetedRecordsRule.selectedRecordIds, }, - computeRecordGqlOperationFilter({ - filterValueDependencies, - fieldMetadataItems, - recordFilters: contextStoreFilters, - recordFilterGroups: contextStoreFilterGroups, - }), - ]); + }; } return queryFilter;