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);