import { useState } from 'react'; import { Badge, ConfirmModal, LinkButton, Stack } from '@grafana/ui'; import { Trans, t } from 'app/core/internationalization'; import { useExportMuteTimingsDrawer } from 'app/features/alerting/unified/components/mute-timings/useExportMuteTimingsDrawer'; import { Authorize } from '../../components/Authorize'; import { AlertmanagerAction, useAlertmanagerAbility } from '../../hooks/useAbilities'; import { isLoading } from '../../hooks/useAsync'; import { GRAFANA_RULES_SOURCE_NAME } from '../../utils/datasource'; import { makeAMLink } from '../../utils/misc'; import { isDisabled } from '../../utils/mute-timings'; import { MuteTiming, useDeleteMuteTiming } from './useMuteTimings'; interface MuteTimingActionsButtonsProps { muteTiming: MuteTiming; alertManagerSourceName: string; } export const MuteTimingActionsButtons = ({ muteTiming, alertManagerSourceName }: MuteTimingActionsButtonsProps) => { const [deleteMuteTiming, deleteMuteTimingRequestState] = useDeleteMuteTiming({ alertmanager: alertManagerSourceName!, }); const [showDeleteDrawer, setShowDeleteDrawer] = useState(false); const [ExportDrawer, showExportDrawer] = useExportMuteTimingsDrawer(); const [exportSupported, exportAllowed] = useAlertmanagerAbility(AlertmanagerAction.ExportMuteTimings); const closeDeleteModal = () => setShowDeleteDrawer(false); const isGrafanaDataSource = alertManagerSourceName === GRAFANA_RULES_SOURCE_NAME; const viewOrEditHref = makeAMLink(`/alerting/routes/mute-timing/edit`, alertManagerSourceName, { muteName: muteTiming.id, }); const viewOrEditButton = ( {muteTiming.provisioned ? ( View ) : ( Edit )} ); return ( <> {!isGrafanaDataSource && isDisabled(muteTiming) && } {viewOrEditButton} {exportSupported && ( showExportDrawer(muteTiming.name)} > Export )} {!muteTiming.provisioned && ( setShowDeleteDrawer(true)} disabled={isLoading(deleteMuteTimingRequestState)} > Delete )} { await deleteMuteTiming.execute({ name: muteTiming?.metadata?.name ?? muteTiming.name, }); closeDeleteModal(); }} onDismiss={closeDeleteModal} /> {ExportDrawer} ); };