refactor(core): Delete some duplicate code between ActiveWebhooks and ActiveWorkflowRunner (no-changelog) (#6951)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™ 2023-08-17 17:18:14 +02:00 committed by GitHub
parent 9b27878d8f
commit 41c3cc89ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 42 deletions

View file

@ -63,25 +63,13 @@ export class ActiveWebhooks {
this.webhookUrls[webhookKey].push(webhookData);
try {
const webhookExists = await workflow.runWebhookMethod(
'checkExists',
await workflow.createWebhookIfNotExists(
webhookData,
NodeExecuteFunctions,
mode,
activation,
this.testWebhooks,
);
if (webhookExists !== true) {
// If webhook does not exist yet create it
await workflow.runWebhookMethod(
'create',
webhookData,
NodeExecuteFunctions,
mode,
activation,
this.testWebhooks,
);
}
} catch (error) {
// If there was a problem unregister the webhook again
if (this.webhookUrls[webhookKey].length <= 1) {
@ -183,8 +171,7 @@ export class ActiveWebhooks {
// Go through all the registered webhooks of the workflow and remove them
for (const webhookData of webhooks) {
await workflow.runWebhookMethod(
'delete',
await workflow.deleteWebhook(
webhookData,
NodeExecuteFunctions,
mode,

View file

@ -392,25 +392,13 @@ export class ActiveWorkflowRunner implements IWebhookManager {
try {
// TODO: this should happen in a transaction, that way we don't need to manually remove this in `catch`
await this.webhookService.storeWebhook(webhook);
const webhookExists = await workflow.runWebhookMethod(
'checkExists',
await workflow.createWebhookIfNotExists(
webhookData,
NodeExecuteFunctions,
mode,
activation,
false,
);
if (webhookExists !== true) {
// If webhook does not exist yet create it
await workflow.runWebhookMethod(
'create',
webhookData,
NodeExecuteFunctions,
mode,
activation,
false,
);
}
} catch (error) {
if (
activation === 'init' &&
@ -489,14 +477,7 @@ export class ActiveWorkflowRunner implements IWebhookManager {
const webhooks = WebhookHelpers.getWorkflowWebhooks(workflow, additionalData, undefined, true);
for (const webhookData of webhooks) {
await workflow.runWebhookMethod(
'delete',
webhookData,
NodeExecuteFunctions,
mode,
'update',
false,
);
await workflow.deleteWebhook(webhookData, NodeExecuteFunctions, mode, 'update', false);
}
await WorkflowHelpers.saveStaticData(workflow);

View file

@ -972,12 +972,52 @@ export class Workflow {
return this.__getStartNode(Object.keys(this.nodes));
}
/**
* Executes the Webhooks method of the node
*
* @param {WebhookSetupMethodNames} method The name of the method to execute
*/
async runWebhookMethod(
async createWebhookIfNotExists(
webhookData: IWebhookData,
nodeExecuteFunctions: INodeExecuteFunctions,
mode: WorkflowExecuteMode,
activation: WorkflowActivateMode,
isTest?: boolean,
): Promise<void> {
const webhookExists = await this.runWebhookMethod(
'checkExists',
webhookData,
nodeExecuteFunctions,
mode,
activation,
isTest,
);
if (!webhookExists) {
// If webhook does not exist yet create it
await this.runWebhookMethod(
'create',
webhookData,
nodeExecuteFunctions,
mode,
activation,
isTest,
);
}
}
async deleteWebhook(
webhookData: IWebhookData,
nodeExecuteFunctions: INodeExecuteFunctions,
mode: WorkflowExecuteMode,
activation: WorkflowActivateMode,
isTest?: boolean,
) {
await this.runWebhookMethod(
'delete',
webhookData,
nodeExecuteFunctions,
mode,
activation,
isTest,
);
}
private async runWebhookMethod(
method: WebhookSetupMethodNames,
webhookData: IWebhookData,
nodeExecuteFunctions: INodeExecuteFunctions,