diff --git a/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts b/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts index 94683c5322..0d29a7ac3a 100644 --- a/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts +++ b/packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts @@ -17,6 +17,7 @@ import { ITypeformAnswerField, ITypeformDefinition, } from './GenericFunctions'; +import { Webhook } from '../Webhook.node'; export class TypeformTrigger implements INodeType { @@ -89,24 +90,23 @@ export class TypeformTrigger implements INodeType { default: { async checkExists(this: IHookFunctions): Promise { const webhookData = this.getWorkflowStaticData('node'); - - if (webhookData.webhookId === undefined) { - // No webhook id is set so no webhook can exist - return false; - } + const webhookUrl = this.getNodeWebhookUrl('default'); const formId = this.getNodeParameter('formId') as string; - const endpoint = `forms/${formId}/webhooks/${webhookData.webhookId}`; + const endpoint = `forms/${formId}/webhooks`; - try { - const body = {}; - await apiRequest.call(this, 'POST', endpoint, body); - } catch (e) { - return false; + const { items } = await apiRequest.call(this, 'GET', endpoint, {}); + + for (const item of items) { + if (item.form_id === formId + && item.url === webhookUrl) { + webhookData.webhookId = item.tag; + return true; + } } - return true; + return false; }, async create(this: IHookFunctions): Promise { const webhookUrl = this.getNodeWebhookUrl('default'); @@ -138,14 +138,12 @@ export class TypeformTrigger implements INodeType { if (webhookData.webhookId !== undefined) { const endpoint = `forms/${formId}/webhooks/${webhookData.webhookId}`; - try { const body = {}; await apiRequest.call(this, 'DELETE', endpoint, body); } catch (e) { return false; } - // Remove from the static workflow data so that it is clear // that no webhooks are registred anymore delete webhookData.webhookId;