// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import {FormattedMessage} from 'react-intl'; export default class NewMessageIndicator extends React.Component { constructor(props) { super(props); this.state = { visible: false, rendered: false }; } componentWillReceiveProps(nextProps) { if (nextProps.newMessages > 0) { this.setState({rendered: true}, () => { this.setState({visible: true}); }); } else { this.setState({visible: false}); } } render() { let className = 'new-messages__button'; if (this.state.visible > 0) { className += ' visible'; } if (!this.state.rendered) { className += ' disabled'; } return (
); } // Sync 'rendered' state with visibility param, only after transitions // have ended setRendered() { this.setState({rendered: this.state.visible}); } } NewMessageIndicator.defaultProps = { newMessages: 0 }; NewMessageIndicator.propTypes = { onClick: React.PropTypes.func.isRequired, newMessages: React.PropTypes.number };