## Summary Fixes #20225 Dashboard graph widgets only passed `timeZone` in `filterValueDependencies` when computing the GraphQL operation filter. As a result, `isCurrentWorkspaceMemberSelected` ("me") filters were silently ignored — the current workspace member ID was `undefined`. Regular view filters already use `useFilterValueDependencies` which provides both `timeZone` and `currentWorkspaceMemberId`. This PR replaces the manual `{ timeZone: userTimezone }` object in `useGraphWidgetQueryCommon` with `useFilterValueDependencies()`, giving dashboard widgets full feature parity with view filters. **Changed file:** `packages/twenty-front/src/modules/page-layout/widgets/graph/hooks/useGraphWidgetQueryCommon.ts` --------- Co-authored-by: martmull <martmull@hotmail.fr> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById';
|
|
import { useFilterValueDependencies } from '@/object-record/record-filter/hooks/useFilterValueDependencies';
|
|
import {
|
|
computeRecordGqlOperationFilter,
|
|
isDefined,
|
|
} from 'twenty-shared/utils';
|
|
import {
|
|
type AggregateChartConfiguration,
|
|
type BarChartConfiguration,
|
|
type LineChartConfiguration,
|
|
type PieChartConfiguration,
|
|
} from '~/generated-metadata/graphql';
|
|
|
|
export const useGraphWidgetQueryCommon = ({
|
|
objectMetadataItemId,
|
|
configuration,
|
|
}: {
|
|
objectMetadataItemId: string;
|
|
configuration:
|
|
| BarChartConfiguration
|
|
| AggregateChartConfiguration
|
|
| LineChartConfiguration
|
|
| PieChartConfiguration;
|
|
}) => {
|
|
const { objectMetadataItem } = useObjectMetadataItemById({
|
|
objectId: objectMetadataItemId,
|
|
});
|
|
|
|
const aggregateFieldId = configuration.aggregateFieldMetadataId;
|
|
|
|
const aggregateField = objectMetadataItem.readableFields.find(
|
|
(field: { id: string }) => field.id === aggregateFieldId,
|
|
);
|
|
|
|
if (!isDefined(aggregateField)) {
|
|
throw new Error('Aggregate field not found');
|
|
}
|
|
|
|
const { filterValueDependencies } = useFilterValueDependencies();
|
|
|
|
const gqlOperationFilter = computeRecordGqlOperationFilter({
|
|
fields: objectMetadataItem.fields,
|
|
filterValueDependencies,
|
|
recordFilters: configuration.filter?.recordFilters ?? [],
|
|
recordFilterGroups: configuration.filter?.recordFilterGroups ?? [],
|
|
});
|
|
|
|
return {
|
|
objectMetadataItem,
|
|
gqlOperationFilter,
|
|
aggregateField,
|
|
};
|
|
};
|