From dc3900663ced9de581dd85962006888057213ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Fri, 1 May 2020 16:21:04 +0100 Subject: [PATCH] fix(ui): rewrite DeleteSilence component with hooks --- .../ManagedSilence/DeleteSilence.js | 122 ++++++++---------- 1 file changed, 56 insertions(+), 66 deletions(-) diff --git a/ui/src/Components/ManagedSilence/DeleteSilence.js b/ui/src/Components/ManagedSilence/DeleteSilence.js index 93027530a..85c4b5b07 100644 --- a/ui/src/Components/ManagedSilence/DeleteSilence.js +++ b/ui/src/Components/ManagedSilence/DeleteSilence.js @@ -2,7 +2,7 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import { observable, action } from "mobx"; -import { observer } from "mobx-react"; +import { observer, useObserver, useLocalStore } from "mobx-react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faTrash } from "@fortawesome/free-solid-svg-icons/faTrash"; @@ -241,72 +241,62 @@ const DeleteSilenceModalContent = observer( } ); -const DeleteSilence = observer( - class DeleteSilence extends Component { - static propTypes = { - alertStore: PropTypes.instanceOf(AlertStore).isRequired, - silenceFormStore: PropTypes.instanceOf(SilenceFormStore).isRequired, - cluster: PropTypes.string.isRequired, - silence: APISilence.isRequired, - onModalExit: PropTypes.func, - }; +const DeleteSilence = ({ + alertStore, + silenceFormStore, + cluster, + silence, + onModalExit, +}) => { + const toggle = useLocalStore(() => ({ + visible: false, + toggle() { + this.visible = !this.visible; + }, + })); - toggle = observable( - { - visible: false, - toggle() { - this.visible = !this.visible; - }, - }, - { toggle: action.bound } - ); + const members = alertStore.data.getClusterAlertmanagersWithoutReadOnly( + cluster + ); - render() { - const { - alertStore, - silenceFormStore, - cluster, - silence, - onModalExit, - } = this.props; - - const members = alertStore.data.getClusterAlertmanagersWithoutReadOnly( - cluster - ); - - return ( - - - - - - - ); - } - } -); + return useObserver(() => ( + + + + + + + )); +}; +DeleteSilence.propTypes = { + alertStore: PropTypes.instanceOf(AlertStore).isRequired, + silenceFormStore: PropTypes.instanceOf(SilenceFormStore).isRequired, + cluster: PropTypes.string.isRequired, + silence: APISilence.isRequired, + onModalExit: PropTypes.func, +}; export { DeleteSilence, DeleteSilenceModalContent };