1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import omit from 'lodash/omit';
- import pick from 'lodash/pick';
- import {escapeDoubleQuotes} from 'sentry/utils';
- import GenericDiscoverQuery, {
- DiscoverQueryProps,
- GenericChildrenProps,
- } from 'sentry/utils/discover/genericDiscoverQuery';
- import {escapeFilterValue} from 'sentry/utils/tokenizeSearch';
- type HasMeasurementsProps = {
- transaction: string;
- type: 'web' | 'mobile';
- };
- type RequestProps = DiscoverQueryProps & HasMeasurementsProps;
- type HasMeasurements = {measurements: boolean};
- type ChildrenProps = Omit<GenericChildrenProps<HasMeasurementsProps>, 'tableData'> & {
- hasMeasurements: boolean | null;
- };
- type Props = RequestProps & {
- children: (props: ChildrenProps) => React.ReactNode;
- };
- function getHasMeasurementsRequestPayload(props: RequestProps) {
- const {eventView, location, transaction, type} = props;
- const escaped = escapeDoubleQuotes(escapeFilterValue(transaction));
- const baseApiPayload = {
- transaction: `"${escaped}"`,
- type,
- };
- const additionalApiPayload = pick(eventView.getEventsAPIPayload(location), [
- 'project',
- 'environment',
- ]);
- return Object.assign(baseApiPayload, additionalApiPayload);
- }
- function HasMeasurementsQuery(props: Props) {
- return (
- <GenericDiscoverQuery<HasMeasurements, HasMeasurementsProps>
- route="events-has-measurements"
- getRequestPayload={getHasMeasurementsRequestPayload}
- {...omit(props, 'children')}
- >
- {({tableData, ...rest}) => {
- return props.children({
- hasMeasurements: tableData?.measurements ?? null,
- ...rest,
- });
- }}
- </GenericDiscoverQuery>
- );
- }
- export default HasMeasurementsQuery;
|