From e2c5d843dfacf9e86d10a3244f7d9812788661ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Fri, 26 Jan 2024 18:47:24 +0300 Subject: [PATCH] feat(mailerlite): add campaign sent trigger --- .../triggers/campaign-sent/index.js | 55 +++++++++++++++++++ .../src/apps/mailerlite/triggers/index.js | 8 ++- .../docs/pages/apps/mailerlite/triggers.md | 2 + 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/mailerlite/triggers/campaign-sent/index.js diff --git a/packages/backend/src/apps/mailerlite/triggers/campaign-sent/index.js b/packages/backend/src/apps/mailerlite/triggers/campaign-sent/index.js new file mode 100644 index 00000000..db4404d5 --- /dev/null +++ b/packages/backend/src/apps/mailerlite/triggers/campaign-sent/index.js @@ -0,0 +1,55 @@ +import Crypto from 'crypto'; +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'Campaign sent', + key: 'campaignSent', + type: 'webhook', + description: 'Triggers when a campaign has been activated.', + + async run($) { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + + async testRun($) { + const computedWebhookEvent = { + id: Crypto.randomUUID(), + date: new Date().toISOString(), + name: 'Name', + preview_url: '', + total_recipients: 1, + }; + + const dataItem = { + raw: computedWebhookEvent, + meta: { + internalId: computedWebhookEvent.id, + }, + }; + + $.pushTriggerItem(dataItem); + }, + + async registerHook($) { + const payload = { + name: $.flow.id, + events: ['campaign.sent'], + url: $.webhookUrl, + }; + + const { data } = await $.http.post('/webhooks', payload); + + await $.flow.setRemoteWebhookId(data.data.id); + }, + + async unregisterHook($) { + await $.http.delete(`/webhooks/${$.flow.remoteWebhookId}`); + }, +}); diff --git a/packages/backend/src/apps/mailerlite/triggers/index.js b/packages/backend/src/apps/mailerlite/triggers/index.js index 87f9efe7..77ddbce7 100644 --- a/packages/backend/src/apps/mailerlite/triggers/index.js +++ b/packages/backend/src/apps/mailerlite/triggers/index.js @@ -1,5 +1,11 @@ +import campaignSent from './campaign-sent/index.js'; import spamComplaint from './spam-complaint/index.js'; import subscriberCreated from './subscriber-created/index.js'; import subscriberUnsubscribed from './subscriber-unsubscribed/index.js'; -export default [spamComplaint, subscriberCreated, subscriberUnsubscribed]; +export default [ + campaignSent, + spamComplaint, + subscriberCreated, + subscriberUnsubscribed, +]; diff --git a/packages/docs/pages/apps/mailerlite/triggers.md b/packages/docs/pages/apps/mailerlite/triggers.md index 6a08f643..aff3407a 100644 --- a/packages/docs/pages/apps/mailerlite/triggers.md +++ b/packages/docs/pages/apps/mailerlite/triggers.md @@ -1,6 +1,8 @@ --- favicon: /favicons/mailerlite.svg items: + - name: Campaign Sent + desc: Triggers when a campaign has been activated. - name: Spam Complaint desc: Triggers when a subscriber reports an email as spam. - name: Subscriber created