From bd1a79f69adbd0e34d19deffef0c4c4c0b6ce8ac Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Thu, 13 Feb 2020 18:33:26 -0800 Subject: [PATCH] :zap: Make sure that TrelloTrigger-Node reuse existing webhooks --- .../nodes/Trello/TrelloTrigger.node.ts | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/packages/nodes-base/nodes/Trello/TrelloTrigger.node.ts b/packages/nodes-base/nodes/Trello/TrelloTrigger.node.ts index 3812a882ad..df16d49fd3 100644 --- a/packages/nodes-base/nodes/Trello/TrelloTrigger.node.ts +++ b/packages/nodes-base/nodes/Trello/TrelloTrigger.node.ts @@ -75,31 +75,26 @@ export class TrelloTrigger implements INodeType { return true; } - const webhookData = this.getWorkflowStaticData('node'); - - if (webhookData.webhookId === undefined) { - // No webhook id is set so no webhook can exist - return false; - } - const credentials = this.getCredentials('trelloApi'); if (credentials === undefined) { throw new Error('No credentials got returned!'); } - // Webhook got created before so check if it still exists - const endpoint = `tokens/${credentials.apiToken}/webhooks/${webhookData.webhookId}`; + // Check all the webhooks which exist already if it is identical to the + // one that is supposed to get created. + const endpoint = `tokens/${credentials.apiToken}/webhooks`; const responseData = await apiRequest.call(this, 'GET', endpoint, {}); - if (responseData.data === undefined) { - return false; - } + const idModel = this.getNodeParameter('id') as string; + const webhookUrl = this.getNodeWebhookUrl('default'); - for (const existingData of responseData.data) { - if (existingData.id === webhookData.webhookId) { - // The webhook exists already + for (const webhook of responseData) { + if (webhook.idModel === idModel && webhook.callbackURL === webhookUrl) { + // Set webhook-id to be sure that it can be deleted + const webhookData = this.getWorkflowStaticData('node'); + webhookData.webhookId = webhook.id as string; return true; } }