Added ability to regenerate outgoing webhook tokens on InstalledIntegrations page
Этот коммит содержится в:
@@ -21,6 +21,10 @@ export default class InstalledIntegrations extends React.Component {
|
|||||||
this.updateFilter = this.updateFilter.bind(this);
|
this.updateFilter = this.updateFilter.bind(this);
|
||||||
this.updateTypeFilter = this.updateTypeFilter.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 = {
|
this.state = {
|
||||||
incomingWebhooks: [],
|
incomingWebhooks: [],
|
||||||
outgoingWebhooks: [],
|
outgoingWebhooks: [],
|
||||||
@@ -82,6 +86,10 @@ export default class InstalledIntegrations extends React.Component {
|
|||||||
AsyncClient.deleteIncomingHook(incomingWebhook.id);
|
AsyncClient.deleteIncomingHook(incomingWebhook.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
regenOutgoingWebhookToken(outgoingWebhook) {
|
||||||
|
AsyncClient.regenOutgoingHookToken(outgoingWebhook.id);
|
||||||
|
}
|
||||||
|
|
||||||
deleteOutgoingWebhook(outgoingWebhook) {
|
deleteOutgoingWebhook(outgoingWebhook) {
|
||||||
AsyncClient.deleteOutgoingHook(outgoingWebhook.id);
|
AsyncClient.deleteOutgoingHook(outgoingWebhook.id);
|
||||||
}
|
}
|
||||||
@@ -227,7 +235,8 @@ export default class InstalledIntegrations extends React.Component {
|
|||||||
<InstalledOutgoingWebhook
|
<InstalledOutgoingWebhook
|
||||||
key={outgoingWebhook.id}
|
key={outgoingWebhook.id}
|
||||||
outgoingWebhook={outgoingWebhook}
|
outgoingWebhook={outgoingWebhook}
|
||||||
onDeleteClick={this.deleteOutgoingWebhook}
|
onRegenToken={this.regenOutgoingWebhookToken}
|
||||||
|
onDelete={this.deleteOutgoingWebhook}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,20 +12,28 @@ export default class InstalledOutgoingWebhook extends React.Component {
|
|||||||
static get propTypes() {
|
static get propTypes() {
|
||||||
return {
|
return {
|
||||||
outgoingWebhook: React.PropTypes.object.isRequired,
|
outgoingWebhook: React.PropTypes.object.isRequired,
|
||||||
onDeleteClick: React.PropTypes.func.isRequired
|
onRegenToken: React.PropTypes.func.isRequired,
|
||||||
|
onDelete: React.PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(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();
|
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() {
|
render() {
|
||||||
@@ -51,13 +59,25 @@ export default class InstalledOutgoingWebhook extends React.Component {
|
|||||||
<div className='details-row'>
|
<div className='details-row'>
|
||||||
<span className='description'>
|
<span className='description'>
|
||||||
{Utils.getWindowLocationOrigin() + '/hooks/' + outgoingWebhook.id}
|
{Utils.getWindowLocationOrigin() + '/hooks/' + outgoingWebhook.id}
|
||||||
|
{' - '}
|
||||||
|
{outgoingWebhook.token}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className='actions'>
|
<div className='actions'>
|
||||||
<a
|
<a
|
||||||
href='#'
|
href='#'
|
||||||
onClick={this.handleDeleteClick}
|
onClick={this.handleRegenToken}
|
||||||
|
>
|
||||||
|
<FormattedMessage
|
||||||
|
id='installed_integrations.regenToken'
|
||||||
|
defaultMessage='Regen Token'
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
{' - '}
|
||||||
|
<a
|
||||||
|
href='#'
|
||||||
|
onClick={this.handleDelete}
|
||||||
>
|
>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='installed_integrations.delete'
|
id='installed_integrations.delete'
|
||||||
|
|||||||
@@ -77,6 +77,15 @@ class IntegrationStore extends EventEmitter {
|
|||||||
this.outgoingWebhooks.push(outgoingWebhook);
|
this.outgoingWebhooks.push(outgoingWebhook);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateOutgoingWebhook(outgoingWebhook) {
|
||||||
|
for (let i = 0; i < this.outgoingWebhooks.length; i++) {
|
||||||
|
if (this.outgoingWebhooks[i].id === outgoingWebhook.id) {
|
||||||
|
this.outgoingWebhooks[i] = outgoingWebhook;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
removeOutgoingWebhook(id) {
|
removeOutgoingWebhook(id) {
|
||||||
for (let i = 0; i < this.outgoingWebhooks.length; i++) {
|
for (let i = 0; i < this.outgoingWebhooks.length; i++) {
|
||||||
if (this.outgoingWebhooks[i].id === id) {
|
if (this.outgoingWebhooks[i].id === id) {
|
||||||
@@ -110,6 +119,10 @@ class IntegrationStore extends EventEmitter {
|
|||||||
this.addOutgoingWebhook(action.outgoingWebhook);
|
this.addOutgoingWebhook(action.outgoingWebhook);
|
||||||
this.emitChange();
|
this.emitChange();
|
||||||
break;
|
break;
|
||||||
|
case ActionTypes.UPDATED_OUTGOING_WEBHOOK:
|
||||||
|
this.updateOutgoingWebhook(action.outgoingWebhook);
|
||||||
|
this.emitChange();
|
||||||
|
break;
|
||||||
case ActionTypes.REMOVED_OUTGOING_WEBHOOK:
|
case ActionTypes.REMOVED_OUTGOING_WEBHOOK:
|
||||||
this.removeOutgoingWebhook(action.id);
|
this.removeOutgoingWebhook(action.id);
|
||||||
this.emitChange();
|
this.emitChange();
|
||||||
|
|||||||
@@ -1243,3 +1243,18 @@ export function deleteOutgoingHook(id) {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function regenOutgoingHookToken(id) {
|
||||||
|
client.regenOutgoingHookToken(
|
||||||
|
{id},
|
||||||
|
(data) => {
|
||||||
|
AppDispatcher.handleServerAction({
|
||||||
|
type: ActionTypes.UPDATED_OUTGOING_WEBHOOK,
|
||||||
|
outgoingWebhook: data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
dispatchError(err, 'regenOutgoingHookToken');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ export default {
|
|||||||
REMOVED_INCOMING_WEBHOOK: null,
|
REMOVED_INCOMING_WEBHOOK: null,
|
||||||
RECEIVED_OUTGOING_WEBHOOKS: null,
|
RECEIVED_OUTGOING_WEBHOOKS: null,
|
||||||
RECEIVED_OUTGOING_WEBHOOK: null,
|
RECEIVED_OUTGOING_WEBHOOK: null,
|
||||||
|
UPDATED_OUTGOING_WEBHOOK: null,
|
||||||
REMOVED_OUTGOING_WEBHOOK: null,
|
REMOVED_OUTGOING_WEBHOOK: null,
|
||||||
|
|
||||||
RECEIVED_MSG: null,
|
RECEIVED_MSG: null,
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user