Implements record filter group upsert and remove (#10514)

This PR implements a parallel code path to upsert and remove record
filter groups.

Those record filter groups aren't keeping track of the view id but since
they are in a view context, it's implicit that the advanced filter
feature can keep track of view for record filter groups.

We'll need record filter group for an upcoming feature without views, so
we need to abstract record filter group from view.

We have viewFilterGroup.id === recordFilterGroup.id, so it's easy to map
each other.
This commit is contained in:
Lucas Bordeau
2025-02-26 16:24:11 +01:00
committed by GitHub
parent dd12bc31ca
commit 694553608b
11 changed files with 391 additions and 27 deletions

View File

@ -4,6 +4,7 @@ import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
import { AdvancedFilterRootLevelViewFilterGroup } from '@/object-record/advanced-filter/components/AdvancedFilterRootLevelViewFilterGroup';
import { useDeleteCombinedViewFilterGroup } from '@/object-record/advanced-filter/hooks/useDeleteCombinedViewFilterGroup';
import { useRemoveRecordFilterGroup } from '@/object-record/record-filter-group/hooks/useRemoveRecordFilterGroup';
import { useRemoveRecordFilter } from '@/object-record/record-filter/hooks/useRemoveRecordFilter';
import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState';
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
@ -14,6 +15,7 @@ import { isDefined } from 'twenty-shared';
export const AdvancedFilterDropdownButton = () => {
const { deleteCombinedViewFilterGroup } = useDeleteCombinedViewFilterGroup();
const { removeRecordFilterGroup } = useRemoveRecordFilterGroup();
const { currentViewWithCombinedFiltersAndSorts } = useGetCurrentView();
@ -43,6 +45,7 @@ export const AdvancedFilterDropdownButton = () => {
for (const viewFilterGroupId of viewFilterGroupIds) {
await deleteCombinedViewFilterGroup(viewFilterGroupId);
removeRecordFilterGroup(viewFilterGroupId);
}
for (const recordFilterId of advancedRecordFilterIds) {
@ -50,6 +53,7 @@ export const AdvancedFilterDropdownButton = () => {
}
}, [
advancedRecordFilterIds,
removeRecordFilterGroup,
removeRecordFilter,
deleteCombinedViewFilterGroup,
currentViewWithCombinedFiltersAndSorts?.viewFilterGroups,