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