Files
twenty/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/assertPieChartWidget.ts
T
Raphaël Bosi b0e256221a Create typeguards for widget configurations (#16627)
We checked for widget types by doing `configuration?.__typename ===
'LineChartConfiguration'` which made the code difficult to read.

In this PR, I introduce type guards for each widget type.

Note: the configuration type is `WidgetConfiguration |
FieldsConfiguration` for now but should be changed to
`WidgetConfiguration` when @Devessier adds FieldsConfiguration to the
backend type `WidgetConfiguration`.
2025-12-17 17:48:34 +01:00

27 lines
893 B
TypeScript

import { isPieChartConfiguration } from '@/command-menu/pages/page-layout/utils/isPieChartConfiguration';
import { type PageLayoutWidget } from '@/page-layout/types/PageLayoutWidget';
import { assertIsDefinedOrThrow } from 'twenty-shared/utils';
import { type PieChartConfiguration } from '~/generated/graphql';
type AssertPieChartWidgetOrThrow = (
widget: PageLayoutWidget,
) => asserts widget is PageLayoutWidget & {
objectMetadataId: string;
configuration: PieChartConfiguration;
};
export const assertPieChartWidgetOrThrow: AssertPieChartWidgetOrThrow = (
widget: PageLayoutWidget,
) => {
assertIsDefinedOrThrow(
widget.objectMetadataId,
new Error('Widget objectMetadataId is required'),
);
if (!isPieChartConfiguration(widget.configuration)) {
throw new Error(
`Expected PieChartConfiguration but got ${widget.configuration?.__typename}`,
);
}
};