// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import ReactDOM from 'react-dom'; import AppDispatcher from '../dispatcher/app_dispatcher.jsx'; import Client from 'utils/web_client.jsx'; import Constants from 'utils/constants.jsx'; import * as Utils from 'utils/utils.jsx'; import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl'; import {Modal} from 'react-bootstrap'; const holders = defineMessages({ error: { id: 'edit_channel_header_modal.error', defaultMessage: 'This channel header is too long, please enter a shorter one' } }); import React from 'react'; class EditChannelHeaderModal extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); this.onShow = this.onShow.bind(this); this.onHide = this.onHide.bind(this); this.state = { header: props.channel.header, serverError: '' }; } componentDidMount() { if (this.props.show) { this.onShow(); } } componentWillReceiveProps(nextProps) { if (this.props.channel.header !== nextProps.channel.header) { this.setState({ header: nextProps.channel.header }); } } componentDidUpdate(prevProps) { if (this.props.show && !prevProps.show) { this.onShow(); } } handleChange(e) { this.setState({ header: e.target.value }); } handleSubmit() { Client.updateChannelHeader( this.props.channel.id, this.state.header, (channel) => { this.setState({serverError: ''}); this.onHide(); AppDispatcher.handleServerAction({ type: Constants.ActionTypes.RECEIVED_CHANNEL, channel }); }, (err) => { if (err.id === 'api.context.invalid_param.app_error') { this.setState({serverError: this.props.intl.formatMessage(holders.error)}); } else { this.setState({serverError: err.message}); } } ); } onShow() { const textarea = ReactDOM.findDOMNode(this.refs.textarea); Utils.placeCaretAtEnd(textarea); } onHide() { this.setState({ serverError: '', header: this.props.channel.header }); this.props.onHide(); } render() { var serverError = null; if (this.state.serverError) { serverError =