diff --git a/webapp/channels/src/components/admin_console/remove_file_setting.tsx b/webapp/channels/src/components/admin_console/remove_file_setting.tsx index 4115ff2878..a06ed13023 100644 --- a/webapp/channels/src/components/admin_console/remove_file_setting.tsx +++ b/webapp/channels/src/components/admin_console/remove_file_setting.tsx @@ -1,8 +1,8 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import React, {PureComponent} from 'react'; -import type {MouseEvent} from 'react'; +import React, {memo, useCallback, useState} from 'react'; +import type {FC, MouseEvent} from 'react'; import Setting from './setting'; import type {Props as SettingsProps} from './setting'; @@ -10,7 +10,7 @@ import type {Props as SettingsProps} from './setting'; type Props = SettingsProps & { id: string; label: React.ReactNode; - helptext?: React.ReactNode; + helpText?: React.ReactNode; removeButtonText: React.ReactNode; removingText?: React.ReactNode; fileName: string; @@ -18,54 +18,53 @@ type Props = SettingsProps & { disabled?: boolean; } -type State = { - removing: boolean; -} +const RemoveFileSetting: FC = ({ + id, + label, + helpText, + removeButtonText, + removingText, + fileName, + onSubmit, + disabled, +}) => { + const [removing, setRemoving] = useState(false); -export default class RemoveFileSetting extends PureComponent { - constructor(props: Props) { - super(props); - - this.state = { - removing: false, - }; - } - - handleRemove = (e: MouseEvent) => { + const handleRemove = useCallback((e: MouseEvent) => { e.preventDefault(); - this.setState({removing: true}); - this.props.onSubmit(this.props.id, () => { - this.setState({removing: false}); + setRemoving(true); + onSubmit(id, () => { + setRemoving(false); }); - }; + }, [id, onSubmit]); - render() { - return ( - -
-
- {this.props.fileName} -
- + return ( + +
+
+ {fileName}
- - ); - } -} + +
+
+ ); +}; + +export default memo(RemoveFileSetting);