summaryrefslogtreecommitdiffstats
path: root/webapp/components/integrations/components/add_incoming_webhook.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/integrations/components/add_incoming_webhook.jsx')
-rw-r--r--webapp/components/integrations/components/add_incoming_webhook.jsx223
1 files changed, 9 insertions, 214 deletions
diff --git a/webapp/components/integrations/components/add_incoming_webhook.jsx b/webapp/components/integrations/components/add_incoming_webhook.jsx
index 0372fbbcb..d7b7fb51b 100644
--- a/webapp/components/integrations/components/add_incoming_webhook.jsx
+++ b/webapp/components/integrations/components/add_incoming_webhook.jsx
@@ -1,80 +1,17 @@
// 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/es6';
-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 {browserHistory, Link} from 'react-router/es6';
-import SpinnerButton from 'components/spinner_button.jsx';
-
-export default class AddIncomingWebhook 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
- };
- }
-
- handleSubmit(e) {
- e.preventDefault();
-
- if (this.state.saving) {
- return;
- }
-
- this.setState({
- saving: true,
- serverError: '',
- clientError: ''
- });
-
- if (!this.state.channelId) {
- this.setState({
- saving: false,
- clientError: (
- <FormattedMessage
- id='add_incoming_webhook.channelRequired'
- defaultMessage='A valid channel is required'
- />
- )
- });
-
- return;
- }
-
- const hook = {
- channel_id: this.state.channelId,
- display_name: this.state.displayName,
- description: this.state.description
- };
+import AbstractIncomingWebhook from './abstract_incoming_webhook.jsx';
+export default class AddIncomingWebhook extends AbstractIncomingWebhook {
+ performAction(hook) {
AsyncClient.addIncomingHook(
hook,
(data) => {
- browserHistory.push('/' + this.props.team.name + '/integrations/confirm?type=incoming_webhooks&id=' + data.id);
+ browserHistory.push(`/${this.props.team.name}/integrations/confirm?type=incoming_webhooks&id=${data.id}`);
},
(err) => {
this.setState({
@@ -85,153 +22,11 @@ export default class AddIncomingWebhook extends React.Component {
);
}
- updateDisplayName(e) {
- this.setState({
- displayName: e.target.value
- });
+ header() {
+ return {id: 'integrations.add', defaultMessage: 'Add'};
}
- updateDescription(e) {
- this.setState({
- description: e.target.value
- });
- }
-
- updateChannelId(e) {
- this.setState({
- channelId: e.target.value
- });
- }
-
- render() {
- return (
- <div className='backstage-content'>
- <BackstageHeader>
- <Link to={'/' + this.props.team.name + '/integrations/incoming_webhooks'}>
- <FormattedMessage
- id='installed_incoming_webhooks.header'
- defaultMessage='Incoming Webhooks'
- />
- </Link>
- <FormattedMessage
- id='integrations.add'
- defaultMessage='Add'
- />
- </BackstageHeader>
- <div className='backstage-form'>
- <form
- className='form-horizontal'
- onSubmit={this.handleSubmit}
- >
- <div className='form-group'>
- <label
- className='control-label col-sm-4'
- htmlFor='displayName'
- >
- <FormattedMessage
- id='add_incoming_webhook.displayName'
- defaultMessage='Display Name'
- />
- </label>
- <div className='col-md-5 col-sm-8'>
- <input
- id='displayName'
- type='text'
- maxLength='64'
- className='form-control'
- value={this.state.displayName}
- onChange={this.updateDisplayName}
- />
- <div className='form__help'>
- <FormattedMessage
- id='add_incoming_webhook.displayName.help'
- defaultMessage='Display name for your incoming webhook made of up to 64 characters.'
- />
- </div>
- </div>
- </div>
- <div className='form-group'>
- <label
- className='control-label col-sm-4'
- htmlFor='description'
- >
- <FormattedMessage
- id='add_incoming_webhook.description'
- defaultMessage='Description'
- />
- </label>
- <div className='col-md-5 col-sm-8'>
- <input
- id='description'
- type='text'
- maxLength='128'
- className='form-control'
- value={this.state.description}
- onChange={this.updateDescription}
- />
- <div className='form__help'>
- <FormattedMessage
- id='add_incoming_webhook.description.help'
- defaultMessage='Description for your incoming webhook.'
- />
- </div>
- </div>
- </div>
- <div className='form-group'>
- <label
- className='control-label col-sm-4'
- htmlFor='channelId'
- >
- <FormattedMessage
- id='add_incoming_webhook.channel'
- defaultMessage='Channel'
- />
- </label>
- <div className='col-md-5 col-sm-8'>
- <ChannelSelect
- id='channelId'
- value={this.state.channelId}
- onChange={this.updateChannelId}
- selectOpen={true}
- selectPrivate={true}
- />
- <div className='form__help'>
- <FormattedMessage
- id='add_incoming_webhook.channel.help'
- defaultMessage='Public channel or private group that receives the webhook payloads. You must belong to the private group when setting up the webhook.'
- />
- </div>
- </div>
- </div>
- <div className='backstage-form__footer'>
- <FormError
- type='backstage'
- errors={[this.state.serverError, this.state.clientError]}
- />
- <Link
- className='btn btn-sm'
- to={'/' + this.props.team.name + '/integrations/incoming_webhooks'}
- >
- <FormattedMessage
- id='add_incoming_webhook.cancel'
- defaultMessage='Cancel'
- />
- </Link>
- <SpinnerButton
- className='btn btn-primary'
- type='submit'
- spinning={this.state.saving}
- onClick={this.handleSubmit}
- >
- <FormattedMessage
- id='add_incoming_webhook.save'
- defaultMessage='Save'
- />
- </SpinnerButton>
- </div>
- </form>
- </div>
- </div>
- );
+ footer() {
+ return {id: 'add_incoming_webhook.save', defaultMessage: 'Save'};
}
}