diff --git a/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.js b/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.js index 4ecc4efca..911920c85 100644 --- a/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.js +++ b/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.js @@ -1,7 +1,7 @@ -import React, { Component } from "react"; +import React from "react"; import PropTypes from "prop-types"; -import { observer } from "mobx-react"; +import { useObserver } from "mobx-react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faVolumeMute } from "@fortawesome/free-solid-svg-icons/faVolumeMute"; @@ -17,146 +17,131 @@ import { RenderNonLinkAnnotation, RenderLinkAnnotation } from "../Annotation"; import { AlertMenu } from "./AlertMenu"; import { RenderSilence } from "../Silences"; -const Alert = observer( - class Alert extends Component { - static propTypes = { - group: APIGroup.isRequired, - alert: APIAlert.isRequired, - showAlertmanagers: PropTypes.bool.isRequired, - showReceiver: PropTypes.bool.isRequired, - afterUpdate: PropTypes.func.isRequired, - alertStore: PropTypes.instanceOf(AlertStore).isRequired, - silenceFormStore: PropTypes.instanceOf(SilenceFormStore).isRequired, - setIsMenuOpen: PropTypes.func.isRequired, - }; +const Alert = ({ + group, + alert, + showAlertmanagers, + showReceiver, + afterUpdate, + alertStore, + silenceFormStore, + setIsMenuOpen, +}) => { + const classNames = [ + "components-grid-alertgrid-alertgroup-alert", + "list-group-item bg-transparent", + "pl-1 pr-0 py-0", + "my-1", + "rounded-0", + "border-left-1 border-right-0 border-top-0 border-bottom-0", + BorderClassMap[alert.state] || "border-default", + ]; - render() { - const { - group, - alert, - showAlertmanagers, - showReceiver, - afterUpdate, - alertStore, - silenceFormStore, - setIsMenuOpen, - } = this.props; - - let classNames = [ - "components-grid-alertgrid-alertgroup-alert", - "list-group-item bg-transparent", - "pl-1 pr-0 py-0", - "my-1", - "rounded-0", - "border-left-1 border-right-0 border-top-0 border-bottom-0", - BorderClassMap[alert.state] || "border-default", - ]; - - const silences = {}; - for (const am of alert.alertmanager) { - if (!silences[am.cluster]) { - silences[am.cluster] = { - alertmanager: am, - silences: [ - ...new Set( - am.silencedBy.filter( - (silenceID) => - !( - group.shared.silences[am.cluster] && - group.shared.silences[am.cluster].includes(silenceID) - ) + const silences = {}; + for (const am of alert.alertmanager) { + if (!silences[am.cluster]) { + silences[am.cluster] = { + alertmanager: am, + silences: [ + ...new Set( + am.silencedBy.filter( + (silenceID) => + !( + group.shared.silences[am.cluster] && + group.shared.silences[am.cluster].includes(silenceID) ) - ), - ], - }; - } - } + ) + ), + ], + }; + } + } - return ( -