From 3cae9ee5d26986a32aac5d7eb25bb460a2174a26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Fri, 22 Sep 2023 14:15:30 +0300 Subject: [PATCH] feat(pipedrive): add new leads trigger --- .../src/apps/pipedrive/triggers/index.ts | 3 +- .../pipedrive/triggers/new-leads/index.ts | 56 +++++++++++++++++++ .../docs/pages/apps/pipedrive/triggers.md | 2 + 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/pipedrive/triggers/new-leads/index.ts diff --git a/packages/backend/src/apps/pipedrive/triggers/index.ts b/packages/backend/src/apps/pipedrive/triggers/index.ts index dd62499d..40668868 100644 --- a/packages/backend/src/apps/pipedrive/triggers/index.ts +++ b/packages/backend/src/apps/pipedrive/triggers/index.ts @@ -1,5 +1,6 @@ import newActivities from './new-activities'; import newDeals from './new-deals'; +import newLeads from './new-leads'; import newNotes from './new-notes'; -export default [newActivities, newDeals, newNotes]; +export default [newActivities, newDeals, newLeads, newNotes]; diff --git a/packages/backend/src/apps/pipedrive/triggers/new-leads/index.ts b/packages/backend/src/apps/pipedrive/triggers/new-leads/index.ts new file mode 100644 index 00000000..76f2c063 --- /dev/null +++ b/packages/backend/src/apps/pipedrive/triggers/new-leads/index.ts @@ -0,0 +1,56 @@ +import defineTrigger from '../../../../helpers/define-trigger'; + +type Payload = { + start: number; + limit: number; + sort: string; +}; + +type ResponseData = { + data: { + id: number; + }[]; + additional_data: { + pagination: { + next_start: number; + }; + }; +}; + +export default defineTrigger({ + name: 'New leads', + key: 'newLeads', + pollInterval: 15, + description: 'Triggers when a new lead is created.', + arguments: [], + + async run($) { + const params: Payload = { + start: 0, + limit: 100, + sort: 'add_time DESC', + }; + + do { + const { data } = await $.http.get( + `${$.auth.data.apiDomain}/api/v1/leads`, + { params } + ); + + if (!data?.data?.length) { + return; + } + + params.start = data.additional_data?.pagination?.next_start; + + for (const lead of data.data) { + $.pushTriggerItem({ + raw: lead, + meta: { + internalId: lead.id.toString(), + }, + }); + } + } while (params.start); + }, +}); diff --git a/packages/docs/pages/apps/pipedrive/triggers.md b/packages/docs/pages/apps/pipedrive/triggers.md index 83bb4d61..55ac5370 100644 --- a/packages/docs/pages/apps/pipedrive/triggers.md +++ b/packages/docs/pages/apps/pipedrive/triggers.md @@ -5,6 +5,8 @@ items: desc: Triggers when a new activity is created. - name: New deals desc: Triggers when a new deal is created. + - name: New leads + desc: Triggers when a new lead is created. - name: New notes desc: Triggers when a new note is created. ---