import {LinkButton} from 'sentry/components/button'; import {t} from 'sentry/locale'; import type {Group} from 'sentry/types/group'; import type {Organization} from 'sentry/types/organization'; import type {Project} from 'sentry/types/project'; import {useLocation} from 'sentry/utils/useLocation'; import RelatedIssues from 'sentry/views/alerts/rules/metric/details/relatedIssues'; import RelatedTransactions from 'sentry/views/alerts/rules/metric/details/relatedTransactions'; import {Dataset} from 'sentry/views/alerts/rules/metric/types'; import {extractEventTypeFilterFromRule} from 'sentry/views/alerts/rules/metric/utils/getEventTypeFilter'; import {isCrashFreeAlert} from 'sentry/views/alerts/rules/metric/utils/isCrashFreeAlert'; import {useMetricRule} from 'sentry/views/alerts/rules/metric/utils/useMetricRule'; import { useMetricIssueAlertId, useMetricTimePeriod, } from 'sentry/views/issueDetails/metricIssues/utils'; import {SectionKey} from 'sentry/views/issueDetails/streamline/context'; import {InterimSection} from 'sentry/views/issueDetails/streamline/interimSection'; interface MetricIssuesSectionProps { group: Group; organization: Organization; project: Project; } export function MetricIssuesSection({ organization, group, project, }: MetricIssuesSectionProps) { const location = useLocation(); const ruleId = useMetricIssueAlertId({groupId: group.id}); const {data: rule} = useMetricRule( { orgSlug: organization.slug, ruleId: ruleId ?? '', query: { expand: 'latestIncident', }, }, { staleTime: Infinity, retry: false, enabled: !!ruleId, } ); const timePeriod = useMetricTimePeriod({openPeriod: group.openPeriods?.[0]}); if (!rule || !timePeriod) { return null; } const {dataset, query} = rule; if ([Dataset.METRICS, Dataset.SESSIONS, Dataset.ERRORS].includes(dataset)) { const queryParams = { start: timePeriod.start, end: timePeriod.end, groupStatsPeriod: 'auto', ...(rule.environment ? {environment: rule.environment} : {}), sort: rule.aggregate === 'count_unique(user)' ? 'user' : 'freq', query, project: [project.id], }; const issueSearch = { pathname: `/organizations/${organization.slug}/issues/`, query: queryParams, }; const actions = ( {t('Open in Issues')} ); return ( ); } if ([Dataset.TRANSACTIONS, Dataset.GENERIC_METRICS].includes(dataset)) { return ( ); } return null; }