// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import ErrorStore from '../stores/error_store.jsx'; var intlShape = ReactIntl.intlShape; var injectIntl = ReactIntl.injectIntl; var defineMessages = ReactIntl.defineMessages; const messages = defineMessages({ previewMode: { id: 'error_bar.preview_mode', defaultMessage: 'Preview Mode: Email notifications have not been configured' } }); export default class ErrorBar extends React.Component { constructor() { super(); this.onErrorChange = this.onErrorChange.bind(this); this.handleClose = this.handleClose.bind(this); this.state = ErrorStore.getLastError(); } static propTypes() { return { intl: intlShape.isRequired }; } isValidError(s) { if (!s) { return false; } if (!s.message) { return false; } if (s.connErrorCount && s.connErrorCount >= 1 && s.connErrorCount < 7) { return false; } return true; } isConnectionError(s) { if (!s.connErrorCount || s.connErrorCount === 0) { return false; } if (s.connErrorCount > 7) { return true; } return false; } componentWillMount() { const {formatMessage} = this.props.intl; if (global.window.mm_config.SendEmailNotifications === 'false') { ErrorStore.storeLastError({message: formatMessage(messages.previewMode)}); this.onErrorChange(); } } componentDidMount() { ErrorStore.addChangeListener(this.onErrorChange); } componentWillUnmount() { ErrorStore.removeChangeListener(this.onErrorChange); } onErrorChange() { var newState = ErrorStore.getLastError(); if (newState) { this.setState(newState); } else { this.setState({message: null}); } } handleClose(e) { if (e) { e.preventDefault(); } this.setState({message: null}); } render() { if (!this.isValidError(this.state)) { return
; } return (