From ef67908451f45a91bf89ce9a85994c2d465ea4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Fri, 6 Oct 2023 15:20:32 +0300 Subject: [PATCH] feat(invoice-ninja): add new projects trigger --- .../src/apps/invoice-ninja/triggers/index.ts | 3 +- .../triggers/new-projects/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-projects/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 9824f44d..07056c08 100644 --- a/packages/backend/src/apps/invoice-ninja/triggers/index.ts +++ b/packages/backend/src/apps/invoice-ninja/triggers/index.ts @@ -2,5 +2,6 @@ import newClients from './new-clients'; import newCredits from './new-credits'; import newInvoices from './new-invoices'; import newPayments from './new-payments'; +import newProjects from './new-projects'; -export default [newClients, newCredits, newInvoices, newPayments]; +export default [newClients, newCredits, newInvoices, newPayments, newProjects]; diff --git a/packages/backend/src/apps/invoice-ninja/triggers/new-projects/index.ts b/packages/backend/src/apps/invoice-ninja/triggers/new-projects/index.ts new file mode 100644 index 00000000..1130ff3f --- /dev/null +++ b/packages/backend/src/apps/invoice-ninja/triggers/new-projects/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 projects', + key: 'newProjects', + type: 'webhook', + description: 'Triggers when a new project 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_PROJECT_EVENT_ID = '25'; + + const payload = { + target_url: $.webhookUrl, + event_id: CREATE_PROJECT_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 cc46e562..3ab3861d 100644 --- a/packages/docs/pages/apps/invoice-ninja/triggers.md +++ b/packages/docs/pages/apps/invoice-ninja/triggers.md @@ -9,6 +9,8 @@ items: desc: Triggers when a new invoice is added. - name: New payments desc: Triggers when a new payment is added. + - name: New projects + desc: Triggers when a new project is added. ---