From 991250c73f0f92d5aabe7871d3a44bfa2a75434d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Fri, 22 Sep 2023 13:35:15 +0300 Subject: [PATCH] feat(pipedrive): add new activities trigger --- .../src/apps/pipedrive/triggers/index.ts | 3 +- .../triggers/new-activities/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-activities/index.ts diff --git a/packages/backend/src/apps/pipedrive/triggers/index.ts b/packages/backend/src/apps/pipedrive/triggers/index.ts index 4710bd8a..dd62499d 100644 --- a/packages/backend/src/apps/pipedrive/triggers/index.ts +++ b/packages/backend/src/apps/pipedrive/triggers/index.ts @@ -1,4 +1,5 @@ +import newActivities from './new-activities'; import newDeals from './new-deals'; import newNotes from './new-notes'; -export default [newDeals, newNotes]; +export default [newActivities, newDeals, newNotes]; diff --git a/packages/backend/src/apps/pipedrive/triggers/new-activities/index.ts b/packages/backend/src/apps/pipedrive/triggers/new-activities/index.ts new file mode 100644 index 00000000..00547572 --- /dev/null +++ b/packages/backend/src/apps/pipedrive/triggers/new-activities/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 activities', + key: 'newActivities', + pollInterval: 15, + description: 'Triggers when a new activity 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/activities`, + { params } + ); + + if (!data?.data?.length) { + return; + } + + params.start = data.additional_data?.pagination?.next_start; + + for (const activity of data.data) { + $.pushTriggerItem({ + raw: activity, + meta: { + internalId: activity.id.toString(), + }, + }); + } + } while (params.start); + }, +}); diff --git a/packages/docs/pages/apps/pipedrive/triggers.md b/packages/docs/pages/apps/pipedrive/triggers.md index 1c78532d..83bb4d61 100644 --- a/packages/docs/pages/apps/pipedrive/triggers.md +++ b/packages/docs/pages/apps/pipedrive/triggers.md @@ -1,6 +1,8 @@ --- favicon: /favicons/pipedrive.svg items: + - name: New activities + desc: Triggers when a new activity is created. - name: New deals desc: Triggers when a new deal is created. - name: New notes