Small improvement on PostmarkTrigger-Node

This commit is contained in:
Jan Oberhauser 2020-07-07 20:35:58 +02:00
parent 4ec9952524
commit 97c8af661c
2 changed files with 52 additions and 39 deletions

View file

@ -66,13 +66,15 @@ export function convertTriggerObjectToStringArray (webhookObject : any) : string
webhookEvents.push('bounce'); webhookEvents.push('bounce');
} }
if (triggers.Bounce.IncludeContent) { if (triggers.Bounce.IncludeContent) {
webhookEvents.push('bounceContent'); webhookEvents.push('includeContent');
} }
if (triggers.SpamComplaint.Enabled) { if (triggers.SpamComplaint.Enabled) {
webhookEvents.push('spamComplaint'); webhookEvents.push('spamComplaint');
} }
if (triggers.SpamComplaint.IncludeContent) { if (triggers.SpamComplaint.IncludeContent) {
webhookEvents.push('spamComplaintContent'); if (!webhookEvents.includes('IncludeContent')) {
webhookEvents.push('includeContent');
}
} }
if (triggers.SubscriptionChange.Enabled) { if (triggers.SubscriptionChange.Enabled) {
webhookEvents.push('subscriptionChange'); webhookEvents.push('subscriptionChange');
@ -89,5 +91,3 @@ export function eventExists (currentEvents : string[], webhookEvents: string[])
} }
return true; return true;
} }

View file

@ -50,55 +50,69 @@ export class PostmarkTrigger implements INodeType {
type: 'multiOptions', type: 'multiOptions',
options: [ options: [
{ {
name: 'Open', name: 'Bounce',
value: 'open', value: 'bounce',
description: 'Trigger webhook on open.' description: 'Trigger on bounce.',
},
{
name: 'First Open',
value: 'firstOpen',
description: 'Trigger on first open only.'
}, },
{ {
name: 'Click', name: 'Click',
value: 'click', value: 'click',
description: 'Trigger on click.' description: 'Trigger on click.',
}, },
{ {
name: 'Delivery', name: 'Delivery',
value: 'delivery', value: 'delivery',
description: 'Trigger on delivery.' description: 'Trigger on delivery.',
}, },
{ {
name: 'Bounce', name: 'Open',
value: 'bounce', value: 'open',
description: 'Trigger on bounce.' description: 'Trigger webhook on open.',
},
{
name: 'Bounce Content',
value: 'bounceContent',
description: 'Webhook will send full bounce content.'
}, },
{ {
name: 'Spam Complaint', name: 'Spam Complaint',
value: 'spamComplaint', value: 'spamComplaint',
description: 'Trigger on spam complaint.' description: 'Trigger on spam complaint.',
},
{
name: 'Spam Complaint Content',
value: 'spamComplaintContent',
description: 'Webhook will send full spam complaint content.'
}, },
{ {
name: 'Subscription Change', name: 'Subscription Change',
value: 'subscriptionChange', value: 'subscriptionChange',
description: 'Trigger on subscription change.' description: 'Trigger on subscription change.',
}, },
], ],
default: [], default: [],
required: true, required: true,
description: 'Webhook events that will be enabled for that endpoint.', description: 'Webhook events that will be enabled for that endpoint.',
}, },
{
displayName: 'First Open',
name: 'firstOpen',
description: 'Only fires on first open for event "Open".',
type: 'boolean',
default: false,
displayOptions: {
show: {
events: [
'open',
],
},
},
},
{
displayName: 'Include Content',
name: 'includeContent',
description: 'Includes message content for events "Bounce" and "Spam Complaint".',
type: 'boolean',
default: false,
displayOptions: {
show: {
events: [
'bounce',
'spamComplaint',
],
},
},
},
], ],
}; };
@ -110,6 +124,12 @@ export class PostmarkTrigger implements INodeType {
const webhookData = this.getWorkflowStaticData('node'); const webhookData = this.getWorkflowStaticData('node');
const webhookUrl = this.getNodeWebhookUrl('default'); const webhookUrl = this.getNodeWebhookUrl('default');
const events = this.getNodeParameter('events') as string[]; const events = this.getNodeParameter('events') as string[];
if (this.getNodeParameter('includeContent') as boolean) {
events.push('includeContent');
}
if (this.getNodeParameter('firstOpen') as boolean) {
events.push('firstOpen');
}
// Get all webhooks // Get all webhooks
const endpoint = `/webhooks`; const endpoint = `/webhooks`;
@ -169,10 +189,7 @@ export class PostmarkTrigger implements INodeType {
if (events.includes('open')) { if (events.includes('open')) {
body.Triggers.Open.Enabled = true; body.Triggers.Open.Enabled = true;
} body.Triggers.Open.PostFirstOpenOnly = this.getNodeParameter('firstOpen') as boolean;
if (events.includes('firstOpen')) {
body.Triggers.Open.Enabled = true;
body.Triggers.Open.PostFirstOpenOnly = true;
} }
if (events.includes('click')) { if (events.includes('click')) {
body.Triggers.Click.Enabled = true; body.Triggers.Click.Enabled = true;
@ -182,15 +199,11 @@ export class PostmarkTrigger implements INodeType {
} }
if (events.includes('bounce')) { if (events.includes('bounce')) {
body.Triggers.Bounce.Enabled = true; body.Triggers.Bounce.Enabled = true;
} body.Triggers.Bounce.IncludeContent = this.getNodeParameter('includeContent') as boolean;
if (events.includes('bounceContent')) {
body.Triggers.Bounce.IncludeContent = true;
} }
if (events.includes('spamComplaint')) { if (events.includes('spamComplaint')) {
body.Triggers.SpamComplaint.Enabled = true; body.Triggers.SpamComplaint.Enabled = true;
} body.Triggers.SpamComplaint.IncludeContent = this.getNodeParameter('includeContent') as boolean;
if (events.includes('spamComplaintContent')) {
body.Triggers.SpamComplaint.IncludeContent = true;
} }
if (events.includes('subscriptionChange')) { if (events.includes('subscriptionChange')) {
body.Triggers.SubscriptionChange.Enabled = true; body.Triggers.SubscriptionChange.Enabled = true;