From 149c72cf8c136781864863bf71ae3bf0d516728d Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Tue, 29 Mar 2016 10:04:53 -0400 Subject: [PATCH] Added ability to regenerate outgoing webhook tokens on InstalledIntegrations page --- .../backstage/installed_integrations.jsx | 11 ++++++- .../backstage/installed_outgoing_webhook.jsx | 30 +++++++++++++++---- webapp/stores/integration_store.jsx | 13 ++++++++ webapp/utils/async_client.jsx | 15 ++++++++++ webapp/utils/constants.jsx | 1 + 5 files changed, 64 insertions(+), 6 deletions(-) diff --git a/webapp/components/backstage/installed_integrations.jsx b/webapp/components/backstage/installed_integrations.jsx index 4f79509d90..0b6701b214 100644 --- a/webapp/components/backstage/installed_integrations.jsx +++ b/webapp/components/backstage/installed_integrations.jsx @@ -21,6 +21,10 @@ export default class InstalledIntegrations extends React.Component { this.updateFilter = this.updateFilter.bind(this); this.updateTypeFilter = this.updateTypeFilter.bind(this); + this.deleteIncomingWebhook = this.deleteIncomingWebhook.bind(this); + this.regenOutgoingWebhookToken = this.regenOutgoingWebhookToken.bind(this); + this.deleteOutgoingWebhook = this.deleteOutgoingWebhook.bind(this); + this.state = { incomingWebhooks: [], outgoingWebhooks: [], @@ -82,6 +86,10 @@ export default class InstalledIntegrations extends React.Component { AsyncClient.deleteIncomingHook(incomingWebhook.id); } + regenOutgoingWebhookToken(outgoingWebhook) { + AsyncClient.regenOutgoingHookToken(outgoingWebhook.id); + } + deleteOutgoingWebhook(outgoingWebhook) { AsyncClient.deleteOutgoingHook(outgoingWebhook.id); } @@ -227,7 +235,8 @@ export default class InstalledIntegrations extends React.Component { ); } diff --git a/webapp/components/backstage/installed_outgoing_webhook.jsx b/webapp/components/backstage/installed_outgoing_webhook.jsx index 3c0e206345..12e1a5c81d 100644 --- a/webapp/components/backstage/installed_outgoing_webhook.jsx +++ b/webapp/components/backstage/installed_outgoing_webhook.jsx @@ -12,20 +12,28 @@ export default class InstalledOutgoingWebhook extends React.Component { static get propTypes() { return { outgoingWebhook: React.PropTypes.object.isRequired, - onDeleteClick: React.PropTypes.func.isRequired + onRegenToken: React.PropTypes.func.isRequired, + onDelete: React.PropTypes.func.isRequired }; } constructor(props) { super(props); - this.handleDeleteClick = this.handleDeleteClick.bind(this); + this.handleRegenToken = this.handleRegenToken.bind(this); + this.handleDelete = this.handleDelete.bind(this); } - handleDeleteClick(e) { + handleRegenToken(e) { e.preventDefault(); - this.props.onDeleteClick(this.props.outgoingWebhook); + this.props.onRegenToken(this.props.outgoingWebhook); + } + + handleDelete(e) { + e.preventDefault(); + + this.props.onDelete(this.props.outgoingWebhook); } render() { @@ -51,13 +59,25 @@ export default class InstalledOutgoingWebhook extends React.Component {
{Utils.getWindowLocationOrigin() + '/hooks/' + outgoingWebhook.id} + {' - '} + {outgoingWebhook.token}
+ + + {' - '} + { + AppDispatcher.handleServerAction({ + type: ActionTypes.UPDATED_OUTGOING_WEBHOOK, + outgoingWebhook: data + }); + }, + (err) => { + dispatchError(err, 'regenOutgoingHookToken'); + } + ); +} diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx index 89bf4e8657..c7f61e9df6 100644 --- a/webapp/utils/constants.jsx +++ b/webapp/utils/constants.jsx @@ -74,6 +74,7 @@ export default { REMOVED_INCOMING_WEBHOOK: null, RECEIVED_OUTGOING_WEBHOOKS: null, RECEIVED_OUTGOING_WEBHOOK: null, + UPDATED_OUTGOING_WEBHOOK: null, REMOVED_OUTGOING_WEBHOOK: null, RECEIVED_MSG: null,