Reverting broken filter from (#12352)

# Introdution
Reverting introduced bug by
https://github.com/twentyhq/twenty/pull/12082

We need to address the bug that was "fixed" by this in order to refresh
the recordFilters state, will have a look with @lucasbordeau 🙏
This commit is contained in:
Paul Rastoin
2025-05-28 14:20:51 +02:00
committed by GitHub
parent 0a0fb976bf
commit 689e4ccfee
2 changed files with 35 additions and 12 deletions

View File

@ -3,13 +3,14 @@ import { useFilterableFieldMetadataItems } from '@/object-record/record-filter/h
import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState'; import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState';
import { useRecordIndexContextOrThrow } from '@/object-record/record-index/contexts/RecordIndexContext'; import { useRecordIndexContextOrThrow } from '@/object-record/record-index/contexts/RecordIndexContext';
import { prefetchViewFromViewIdFamilySelector } from '@/prefetch/states/selector/prefetchViewFromViewIdFamilySelector'; import { prefetchViewFromViewIdFamilySelector } from '@/prefetch/states/selector/prefetchViewFromViewIdFamilySelector';
import { useRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentStateV2'; import { useRecoilComponentFamilyStateV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyStateV2';
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2';
import { hasInitializedCurrentRecordFiltersComponentFamilyState } from '@/views/states/hasInitializedCurrentRecordFiltersComponentFamilyState';
import { mapViewFiltersToFilters } from '@/views/utils/mapViewFiltersToFilters'; import { mapViewFiltersToFilters } from '@/views/utils/mapViewFiltersToFilters';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { isDefined } from 'twenty-shared/utils'; import { isDefined } from 'twenty-shared/utils';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
export const ViewBarRecordFilterEffect = () => { export const ViewBarRecordFilterEffect = () => {
const currentViewId = useRecoilComponentValueV2( const currentViewId = useRecoilComponentValueV2(
@ -24,32 +25,45 @@ export const ViewBarRecordFilterEffect = () => {
}), }),
); );
const [currentRecordFilters, setCurrentRecordFilters] = const [
useRecoilComponentStateV2(currentRecordFiltersComponentState); hasInitializedCurrentRecordFilters,
setHasInitializedCurrentRecordFilters,
] = useRecoilComponentFamilyStateV2(
hasInitializedCurrentRecordFiltersComponentFamilyState,
{
viewId: currentViewId ?? undefined,
},
);
const setCurrentRecordFilters = useSetRecoilComponentStateV2(
currentRecordFiltersComponentState,
);
const { filterableFieldMetadataItems } = useFilterableFieldMetadataItems( const { filterableFieldMetadataItems } = useFilterableFieldMetadataItems(
objectMetadataItem.id, objectMetadataItem.id,
); );
useEffect(() => { useEffect(() => {
if (isDefined(currentView)) { if (!hasInitializedCurrentRecordFilters && isDefined(currentView)) {
if (currentView.objectMetadataId !== objectMetadataItem.id) { if (currentView.objectMetadataId !== objectMetadataItem.id) {
return; return;
} }
const newRecordFilters = mapViewFiltersToFilters( setCurrentRecordFilters(
currentView.viewFilters, mapViewFiltersToFilters(
filterableFieldMetadataItems, currentView.viewFilters,
filterableFieldMetadataItems,
),
); );
if (!isDeeplyEqual(currentRecordFilters, newRecordFilters)) {
setCurrentRecordFilters(newRecordFilters); setHasInitializedCurrentRecordFilters(true);
}
} }
}, [ }, [
currentViewId, currentViewId,
currentRecordFilters,
setCurrentRecordFilters, setCurrentRecordFilters,
filterableFieldMetadataItems, filterableFieldMetadataItems,
hasInitializedCurrentRecordFilters,
setHasInitializedCurrentRecordFilters,
currentView, currentView,
objectMetadataItem, objectMetadataItem,
]); ]);

View File

@ -0,0 +1,9 @@
import { RecordFiltersComponentInstanceContext } from '@/object-record/record-filter/states/context/RecordFiltersComponentInstanceContext';
import { createComponentFamilyStateV2 } from '@/ui/utilities/state/component-state/utils/createComponentFamilyStateV2';
export const hasInitializedCurrentRecordFiltersComponentFamilyState =
createComponentFamilyStateV2<boolean, { viewId?: string }>({
key: 'hasInitializedCurrentRecordFiltersComponentFamilyState',
defaultValue: false,
componentInstanceContext: RecordFiltersComponentInstanceContext,
});