import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { LinkButton, useStyles2 } from '@grafana/ui'; import { contextSrv } from 'app/core/services/context_srv'; import { AlertState, AlertmanagerAlert } from 'app/plugins/datasource/alertmanager/types'; import { AccessControlAction } from 'app/types'; import { AlertmanagerAction } from '../../hooks/useAbilities'; import { isGrafanaRulesSource } from '../../utils/datasource'; import { makeAMLink, makeLabelBasedSilenceLink } from '../../utils/misc'; import { AnnotationDetailsField } from '../AnnotationDetailsField'; import { Authorize } from '../Authorize'; interface AmNotificationsAlertDetailsProps { alertManagerSourceName: string; alert: AlertmanagerAlert; } export const AlertDetails = ({ alert, alertManagerSourceName }: AmNotificationsAlertDetailsProps) => { const styles = useStyles2(getStyles); // For Grafana Managed alerts the Generator URL redirects to the alert rule edit page, so update permission is required // For external alert manager the Generator URL redirects to an external service which we don't control const isGrafanaSource = isGrafanaRulesSource(alertManagerSourceName); const isSeeSourceButtonEnabled = isGrafanaSource ? contextSrv.hasPermission(AccessControlAction.AlertingRuleRead) : true; return ( <>