From 12ba21c4af74b0b3d0362cec6c7c017232586d13 Mon Sep 17 00:00:00 2001 From: Rita Anene <92169163+Camillarhi@users.noreply.github.com> Date: Mon, 26 Aug 2024 09:35:14 +0100 Subject: [PATCH] [MM-57714] Convert ./components/announcement_bar/version_bar/version_bar.tsx from Class Component to Function Component (#27966) * fix: convert from class to function component * fix: move 'reloadPage' function out of the component --- .../version_bar/version_bar.tsx | 97 ++++++++----------- 1 file changed, 41 insertions(+), 56 deletions(-) diff --git a/webapp/channels/src/components/announcement_bar/version_bar/version_bar.tsx b/webapp/channels/src/components/announcement_bar/version_bar/version_bar.tsx index e18df6f57a..cdb05a7837 100644 --- a/webapp/channels/src/components/announcement_bar/version_bar/version_bar.tsx +++ b/webapp/channels/src/components/announcement_bar/version_bar/version_bar.tsx @@ -1,78 +1,63 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import React from 'react'; +import React, {useEffect, useState} from 'react'; import {FormattedMessage} from 'react-intl'; import {AnnouncementBarTypes} from 'utils/constants'; import AnnouncementBar from '../default_announcement_bar'; -interface Props { +type Props = { buildHash?: string; } -interface State { - buildHashOnAppLoad?: string; -} +const reloadPage = () => { + window.location.reload(); +}; -export default class VersionBar extends React.PureComponent { - constructor(props: Props) { - super(props); +const VersionBar = ({ + buildHash, +}: Props) => { + const [buildHashOnAppLoad, setBuildHashOnAppLoad] = useState(buildHash); - this.state = { - buildHashOnAppLoad: props.buildHash, - }; - } - - static getDerivedStateFromProps(props: Props, state: State) { - if (!state.buildHashOnAppLoad && props.buildHash) { - return { - buildHashOnAppLoad: props.buildHash, - }; + useEffect(() => { + if (!buildHashOnAppLoad && buildHash) { + setBuildHashOnAppLoad(buildHash); } + }, [buildHash, buildHashOnAppLoad]); + if (!buildHashOnAppLoad || buildHashOnAppLoad === buildHash) { return null; } - reloadPage = () => { - window.location.reload(); - }; - - render() { - const {buildHashOnAppLoad} = this.state; - const {buildHash} = this.props; - - if (!buildHashOnAppLoad) { - return null; - } - - if (buildHashOnAppLoad !== buildHash) { - return ( - + if (buildHashOnAppLoad !== buildHash) { + return ( + + + - - - - {'.'} - - } - /> - ); - } - - return null; + + {'.'} + + } + /> + ); } -} + + return null; +}; + +export default React.memo(VersionBar);