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}
>
);
};