Files
2024-02-15 17:01:50 +00:00

35 lines
1.2 KiB
TypeScript

import {buildStacktraceLinkQuery} from 'sentry/components/events/interfaces/frame/useStacktraceLink';
import type {CodecovResponse, Event, Frame} from 'sentry/types';
import type {ApiQueryKey, UseApiQueryOptions} from 'sentry/utils/queryClient';
import {useApiQuery} from 'sentry/utils/queryClient';
interface UseStacktraceCoverageProps {
event: Partial<Pick<Event, 'platform' | 'release' | 'sdk' | 'groupID'>>;
frame: Partial<
Pick<Frame, 'absPath' | 'filename' | 'function' | 'module' | 'package' | 'lineNo'>
>;
orgSlug: string;
projectSlug: string | undefined;
}
const stacktraceCoverageQueryKey = (
orgSlug: string,
projectSlug: string | undefined,
query: ReturnType<typeof buildStacktraceLinkQuery>
): ApiQueryKey => [`/projects/${orgSlug}/${projectSlug}/stacktrace-coverage/`, {query}];
export function useStacktraceCoverage(
{event, frame, orgSlug, projectSlug}: UseStacktraceCoverageProps,
options: Partial<UseApiQueryOptions<CodecovResponse>> = {}
) {
const query = buildStacktraceLinkQuery(event, frame);
return useApiQuery<CodecovResponse>(
stacktraceCoverageQueryKey(orgSlug, projectSlug, query),
{
staleTime: Infinity,
retry: false,
...options,
}
);
}