mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
61 lines
1.7 KiB
TypeScript
61 lines
1.7 KiB
TypeScript
import omit from 'lodash/omit';
|
|
import pick from 'lodash/pick';
|
|
|
|
import {escapeDoubleQuotes} from 'sentry/utils';
|
|
import type {
|
|
DiscoverQueryProps,
|
|
GenericChildrenProps,
|
|
} from 'sentry/utils/discover/genericDiscoverQuery';
|
|
import GenericDiscoverQuery 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;
|