// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import * as AsyncClient from 'utils/async_client.jsx'; import {browserHistory} from 'react-router'; import ChannelStore from 'stores/channel_store.jsx'; import TeamStore from 'stores/team_store.jsx'; import {FormattedMessage} from 'react-intl'; import FormError from 'components/form_error.jsx'; import {Link} from 'react-router'; import SpinnerButton from 'components/spinner_button.jsx'; export default class AddIncomingWebhook extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); this.updateName = this.updateName.bind(this); this.updateDescription = this.updateDescription.bind(this); this.updateChannelName = this.updateChannelName.bind(this); this.state = { team: TeamStore.getCurrent(), name: '', description: '', channelName: '', saving: false, serverError: '', clientError: null }; } componentDidMount() { TeamStore.addChangeListener(this.handleChange); } componentWillUnmount() { TeamStore.removeChangeListener(this.handleChange); } handleChange() { this.setState({ team: TeamStore.getCurrent() }); } handleSubmit(e) { e.preventDefault(); if (this.state.saving) { return; } this.setState({ saving: true, serverError: '', clientError: '' }); const channel = ChannelStore.getByName(this.state.channelName); if (!channel) { this.setState({ saving: false, clientError: ( ) }); return; } const hook = { channel_id: channel.id }; AsyncClient.addIncomingHook( hook, () => { browserHistory.push(`/${this.state.team.name}/integrations/installed`); }, (err) => { this.setState({ serverError: err.message }); } ); } updateName(e) { this.setState({ name: e.target.value }); } updateDescription(e) { this.setState({ description: e.target.value }); } updateChannelName(e) { this.setState({ channelName: e.target.value }); } render() { const team = TeamStore.getCurrent(); if (!team) { return null; } return (

); } }