diff --git a/public/app/features/alerting/unified/api/notificationPoliciesApi.ts b/public/app/features/alerting/unified/api/notificationPoliciesApi.ts deleted file mode 100644 index 9fdc57356e1..00000000000 --- a/public/app/features/alerting/unified/api/notificationPoliciesApi.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { generatedRoutesApi } from 'app/features/alerting/unified/openapi/routesApi.gen'; - -export const routingTreeApi = generatedRoutesApi.enhanceEndpoints({ - endpoints: { - replaceNamespacedRoutingTree: { - // Stop a failed mutation from invalidating the cache, as otherwise the notification policies - // components will re-attach IDs to the routes, and then the user can't update the route anyway - invalidatesTags: (_, error) => (error ? [] : ['RoutingTree']), - }, - }, -}); diff --git a/public/app/features/alerting/unified/components/notification-policies/Modals.tsx b/public/app/features/alerting/unified/components/notification-policies/Modals.tsx index ff961b83ffb..fb76f6cadb2 100644 --- a/public/app/features/alerting/unified/components/notification-policies/Modals.tsx +++ b/public/app/features/alerting/unified/components/notification-policies/Modals.tsx @@ -7,7 +7,6 @@ import { AlertState, AlertmanagerGroup, ObjectMatcher, RouteWithID } from 'app/p import { FormAmRoute } from '../../types/amroutes'; import { MatcherFormatter } from '../../utils/matchers'; -import { stringifyErrorLike } from '../../utils/misc'; import { InsertPosition } from '../../utils/routeTree'; import { AlertGroup } from '../alert-groups/AlertGroup'; @@ -20,9 +19,8 @@ import { NotificationPoliciesErrorAlert } from './PolicyUpdateErrorAlert'; type ModalHook = [JSX.Element, (item: T) => void, () => void]; type AddModalHook = [JSX.Element, (item: T, position: InsertPosition) => void, () => void]; type EditModalHook = [JSX.Element, (item: RouteWithID, isDefaultRoute?: boolean) => void, () => void]; - const useAddPolicyModal = ( - handleAdd: (route: Partial, referenceRoute: RouteWithID, position: InsertPosition) => void, + handleAdd: (route: Partial, referenceRoute: RouteWithID, position: InsertPosition) => Promise, loading: boolean ): AddModalHook => { const [showModal, setShowModal] = useState(false); @@ -32,6 +30,7 @@ const useAddPolicyModal = ( const handleDismiss = useCallback(() => { setReferenceRoute(undefined); setInsertPosition(undefined); + setError(undefined); setShowModal(false); }, []); @@ -41,6 +40,8 @@ const useAddPolicyModal = ( setShowModal(true); }, []); + const [error, setError] = useState(undefined); + const modalElement = useMemo( () => loading ? ( @@ -53,13 +54,14 @@ const useAddPolicyModal = ( closeOnEscape={true} title="Add notification policy" > + {error && } { if (referenceRoute && insertPosition) { - handleAdd(newRoute, referenceRoute, insertPosition); + handleAdd(newRoute, referenceRoute, insertPosition).catch(setError); } }} actionButtons={ @@ -75,7 +77,7 @@ const useAddPolicyModal = ( /> ), - [handleAdd, handleDismiss, insertPosition, loading, referenceRoute, showModal] + [error, handleAdd, handleDismiss, insertPosition, loading, referenceRoute, showModal, setError] ); return [modalElement, handleShow, handleDismiss]; @@ -83,17 +85,19 @@ const useAddPolicyModal = ( const useEditPolicyModal = ( alertManagerSourceName: string, - handleSave: (route: Partial) => void, - loading: boolean, - error?: Error + handleUpdate: (route: Partial) => Promise, + loading: boolean ): EditModalHook => { const [showModal, setShowModal] = useState(false); const [isDefaultPolicy, setIsDefaultPolicy] = useState(false); const [route, setRoute] = useState(); + const [error, setError] = useState(undefined); + const handleDismiss = useCallback(() => { setRoute(undefined); setShowModal(false); + setError(undefined); }, []); const handleShow = useCallback((route: RouteWithID, isDefaultPolicy?: boolean) => { @@ -114,13 +118,13 @@ const useEditPolicyModal = ( closeOnEscape={true} title="Edit notification policy" > - {error && } + {error && } {isDefaultPolicy && route && ( handleUpdate(values).catch(setError)} route={route} actionButtons={ @@ -137,7 +141,7 @@ const useEditPolicyModal = ( {!isDefaultPolicy && ( handleUpdate(values).catch(setError)} actionButtons={