PLT-4929: Confirmation Dialog when Deleting Entry on the Integrations pages (#5529)

Этот коммит содержится в:
Ari Autio
2017-03-02 19:34:53 +02:00
коммит произвёл George Goldberg
родитель 4f8abfaeee
Коммит d9a297d629
6 изменённых файлов: 123 добавлений и 48 удалений

Просмотреть файл

@@ -0,0 +1,89 @@
import React from 'react';
import {FormattedMessage} from 'react-intl';
import ConfirmModal from '../../confirm_modal.jsx';
export default class DeleteIntegration extends React.Component {
constructor(props) {
super(props);
this.handleConfirm = this.handleConfirm.bind(this);
this.handleCancel = this.handleCancel.bind(this);
this.handleOpenModal = this.handleOpenModal.bind(this);
this.state = {
showDeleteModal: false
};
}
handleOpenModal(e) {
e.preventDefault();
this.setState({
showDeleteModal: true
});
}
handleConfirm() {
this.props.onDelete();
}
handleCancel() {
this.setState({
showDeleteModal: false
});
}
render() {
const title = (
<FormattedMessage
id='integrations.delete.confirm.title'
defaultMessage='Delete Integration'
/>
);
const message = (
<div className='alert alert-warning'>
<i className='fa fa-warning'/>
<FormattedMessage
id={this.props.messageId}
defaultMessage='This action permanently deletes the integration and breaks any integrations using it. Are you sure you want to delete it?'
/>
</div>
);
const confirmButton = (
<FormattedMessage
id='integrations.delete.confirm.button'
defaultMessage='Delete'
/>
);
return (
<span>
<a
href='#'
onClick={this.handleOpenModal}
>
<FormattedMessage
id='installed_integrations.delete'
defaultMessage='Delete'
/>
</a>
<ConfirmModal
show={this.state.showDeleteModal}
title={title}
message={message}
confirmButton={confirmButton}
onConfirm={this.handleConfirm}
onCancel={this.handleCancel}
/>
</span>
);
}
}
DeleteIntegration.propTypes = {
messageId: React.PropTypes.string.isRequired,
onDelete: React.PropTypes.func.isRequired
};

Просмотреть файл

@@ -5,6 +5,8 @@ import React from 'react';
import {Link} from 'react-router';
import {FormattedMessage} from 'react-intl';
import DeleteIntegration from './delete_integration.jsx';
export default class InstalledCommand extends React.Component {
static get propTypes() {
return {
@@ -33,9 +35,7 @@ export default class InstalledCommand extends React.Component {
this.props.onRegenToken(this.props.command);
}
handleDelete(e) {
e.preventDefault();
handleDelete() {
this.props.onDelete(this.props.command);
}
@@ -106,15 +106,10 @@ export default class InstalledCommand extends React.Component {
/>
</Link>
{' - '}
<a
href='#'
onClick={this.handleDelete}
>
<FormattedMessage
id='installed_integrations.delete'
defaultMessage='Delete'
/>
</a>
<DeleteIntegration
messageId='installed_commands.delete.confirm'
onDelete={this.handleDelete}
/>
</div>
);
}

Просмотреть файл

@@ -3,6 +3,8 @@
import React from 'react';
import DeleteIntegration from './delete_integration.jsx';
import ChannelStore from 'stores/channel_store.jsx';
import {getSiteURL} from 'utils/url.jsx';
@@ -27,9 +29,7 @@ export default class InstalledIncomingWebhook extends React.Component {
this.handleDelete = this.handleDelete.bind(this);
}
handleDelete(e) {
e.preventDefault();
handleDelete() {
this.props.onDelete(this.props.incomingWebhook);
}
@@ -97,15 +97,10 @@ export default class InstalledIncomingWebhook extends React.Component {
/>
</Link>
{' - '}
<a
href='#'
onClick={this.handleDelete}
>
<FormattedMessage
id='installed_integrations.delete'
defaultMessage='Delete'
/>
</a>
<DeleteIntegration
messageId='installed_incoming_webhooks.delete.confirm'
onDelete={this.handleDelete}
/>
</div>
);
}

Просмотреть файл

@@ -10,6 +10,8 @@ import * as Utils from 'utils/utils.jsx';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
import {regenerateOAuthAppSecret} from 'actions/admin_actions.jsx';
import DeleteIntegration from './delete_integration.jsx';
const FAKE_SECRET = '***************';
export default class InstalledOAuthApp extends React.Component {
@@ -61,9 +63,7 @@ export default class InstalledOAuthApp extends React.Component {
);
}
handleDelete(e) {
e.preventDefault();
handleDelete() {
this.props.onDelete(this.props.oauthApp);
}
@@ -246,15 +246,10 @@ export default class InstalledOAuthApp extends React.Component {
{' - '}
{regen}
{' - '}
<a
href='#'
onClick={this.handleDelete}
>
<FormattedMessage
id='installed_integrations.delete'
defaultMessage='Delete'
/>
</a>
<DeleteIntegration
messageId='installed_oauth_apps.delete.confirm'
onDelete={this.handleDelete}
/>
</div>
</div>
);

Просмотреть файл

@@ -8,6 +8,8 @@ import ChannelStore from 'stores/channel_store.jsx';
import {FormattedMessage} from 'react-intl';
import {Link} from 'react-router';
import DeleteIntegration from './delete_integration.jsx';
export default class InstalledOutgoingWebhook extends React.Component {
static get propTypes() {
return {
@@ -34,9 +36,7 @@ export default class InstalledOutgoingWebhook extends React.Component {
this.props.onRegenToken(this.props.outgoingWebhook);
}
handleDelete(e) {
e.preventDefault();
handleDelete() {
this.props.onDelete(this.props.outgoingWebhook);
}
@@ -170,15 +170,10 @@ export default class InstalledOutgoingWebhook extends React.Component {
/>
</Link>
{' - '}
<a
href='#'
onClick={this.handleDelete}
>
<FormattedMessage
id='installed_integrations.delete'
defaultMessage='Delete'
/>
</a>
<DeleteIntegration
messageId='installed_outgoing_webhooks.delete.confirm'
onDelete={this.handleDelete}
/>
</div>
);
}