// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import BackstageHeader from 'components/backstage/components/backstage_header.jsx'; import ChannelSelect from 'components/channel_select.jsx'; import {FormattedMessage} from 'react-intl'; import FormError from 'components/form_error.jsx'; import SpinnerButton from 'components/spinner_button.jsx'; import {Link} from 'react-router/es6'; export default class AbstractIncomingWebhook extends React.Component { static get propTypes() { return { team: React.PropTypes.object }; } constructor(props) { super(props); this.handleSubmit = this.handleSubmit.bind(this); this.updateDisplayName = this.updateDisplayName.bind(this); this.updateDescription = this.updateDescription.bind(this); this.updateChannelId = this.updateChannelId.bind(this); this.state = { displayName: '', description: '', channelId: '', saving: false, serverError: '', clientError: null }; if (typeof this.performAction === 'undefined') { throw new TypeError('Subclasses must override performAction'); } if (typeof this.header === 'undefined') { throw new TypeError('Subclasses must override header'); } if (typeof this.footer === 'undefined') { throw new TypeError('Subclasses must override footer'); } this.performAction = this.performAction.bind(this); this.header = this.header.bind(this); this.footer = this.footer.bind(this); } handleSubmit(e) { e.preventDefault(); if (this.state.saving) { return; } this.setState({ saving: true, serverError: '', clientError: '' }); if (!this.state.channelId) { this.setState({ saving: false, clientError: ( ) }); return; } const hook = { channel_id: this.state.channelId, display_name: this.state.displayName, description: this.state.description }; this.performAction(hook); } updateDisplayName(e) { this.setState({ displayName: e.target.value }); } updateDescription(e) { this.setState({ description: e.target.value }); } updateChannelId(e) { this.setState({ channelId: e.target.value }); } render() { var headerToRender = this.header(); var footerToRender = this.footer(); return (
); } }