123456789101112131415161718192021222324252627282930313233343536 |
- import {validateWidgetRequest} from 'sentry/actionCreators/dashboards';
- import type {Client} from 'sentry/api';
- import PageFiltersStore from 'sentry/stores/pageFiltersStore';
- import {hasOnDemandMetricWidgetFeature} from 'sentry/utils/onDemandMetrics/features';
- import {useApiQuery} from 'sentry/utils/queryClient';
- import useOrganization from 'sentry/utils/useOrganization';
- import usePageFilters from 'sentry/utils/usePageFilters';
- import type {ValidateWidgetResponse, Widget} from '../types';
- import {cleanWidgetForRequest} from '../widgetCard/genericWidgetQueries';
- export function validateWidget(
- api: Client,
- orgId: string,
- widget: Widget
- ): Promise<undefined> {
- const {selection} = PageFiltersStore.getState();
- const widgetQuery = validateWidgetRequest(orgId, widget, selection);
- const promise: Promise<undefined> = api.requestPromise(widgetQuery[0], widgetQuery[1]);
- return promise;
- }
- export function useValidateWidgetQuery(_widget: Widget) {
- const organization = useOrganization();
- const {selection} = usePageFilters();
- const data = useApiQuery<ValidateWidgetResponse>(
- validateWidgetRequest(organization.slug, cleanWidgetForRequest(_widget), selection),
- {
- staleTime: 10000,
- enabled: hasOnDemandMetricWidgetFeature(organization),
- }
- );
- return data;
- }
|