From 027b11c3fb0d6c2b5bcc6b85348add94ff35f504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Fri, 6 Oct 2023 13:48:10 +0300 Subject: [PATCH] feat(invoice-ninja): add new credits trigger --- .../src/apps/invoice-ninja/triggers/index.ts | 3 +- .../triggers/new-credits/index.ts | 65 +++++++++++++++++++ .../docs/pages/apps/invoice-ninja/triggers.md | 2 + 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/invoice-ninja/triggers/new-credits/index.ts diff --git a/packages/backend/src/apps/invoice-ninja/triggers/index.ts b/packages/backend/src/apps/invoice-ninja/triggers/index.ts index 485e3929..c9476db4 100644 --- a/packages/backend/src/apps/invoice-ninja/triggers/index.ts +++ b/packages/backend/src/apps/invoice-ninja/triggers/index.ts @@ -1,3 +1,4 @@ import newClients from './new-clients'; +import newCredits from './new-credits'; -export default [newClients]; +export default [newClients, newCredits]; diff --git a/packages/backend/src/apps/invoice-ninja/triggers/new-credits/index.ts b/packages/backend/src/apps/invoice-ninja/triggers/new-credits/index.ts new file mode 100644 index 00000000..ee8891f1 --- /dev/null +++ b/packages/backend/src/apps/invoice-ninja/triggers/new-credits/index.ts @@ -0,0 +1,65 @@ +import Crypto from 'crypto'; +import isEmpty from 'lodash/isEmpty'; +import defineTrigger from '../../../../helpers/define-trigger'; + +type Response = { + data: { + data: { + id: string; + event_id: string; + target_url: string; + format: string; + }; + }; +}; + +export default defineTrigger({ + name: 'New credits', + key: 'newCredits', + type: 'webhook', + description: 'Triggers when a new credit is added.', + arguments: [], + + async run($) { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + + async testRun($) { + const lastExecutionStep = await $.getLastExecutionStep(); + + if (!isEmpty(lastExecutionStep?.dataOut)) { + $.pushTriggerItem({ + raw: lastExecutionStep.dataOut, + meta: { + internalId: '', + }, + }); + } + }, + + async registerHook($) { + const CREATE_CREDIT_EVENT_ID = '27'; + + const payload = { + target_url: $.webhookUrl, + event_id: CREATE_CREDIT_EVENT_ID, + format: 'JSON', + rest_method: 'post', + }; + + const response: Response = await $.http.post('/v1/webhooks', payload); + + await $.flow.setRemoteWebhookId(response.data.data.id); + }, + + async unregisterHook($) { + await $.http.delete(`/v1/webhooks/${$.flow.remoteWebhookId}`); + }, +}); diff --git a/packages/docs/pages/apps/invoice-ninja/triggers.md b/packages/docs/pages/apps/invoice-ninja/triggers.md index e4f346d0..d223e826 100644 --- a/packages/docs/pages/apps/invoice-ninja/triggers.md +++ b/packages/docs/pages/apps/invoice-ninja/triggers.md @@ -3,6 +3,8 @@ favicon: /favicons/invoice-ninja.svg items: - name: New clients desc: Triggers when a new client is added. + - name: New credits + desc: Triggers when a new credit is added. ---