From fbd62d8635bcfe35f5d103d8bdc13a7f40cd19dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Mon, 29 Apr 2024 17:25:30 +0200 Subject: [PATCH] feat(gitea): add new watchers trigger --- packages/backend/src/apps/gitea/index.js | 6 -- .../backend/src/apps/gitea/triggers/index.js | 3 +- .../apps/gitea/triggers/new-watchers/index.js | 61 +++++++++++++++++++ packages/docs/pages/.vitepress/config.js | 4 -- packages/docs/pages/apps/gitea/triggers.md | 2 + 5 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 packages/backend/src/apps/gitea/triggers/new-watchers/index.js diff --git a/packages/backend/src/apps/gitea/index.js b/packages/backend/src/apps/gitea/index.js index d4e0a20b..2e53a1c8 100644 --- a/packages/backend/src/apps/gitea/index.js +++ b/packages/backend/src/apps/gitea/index.js @@ -2,11 +2,8 @@ import defineApp from '../../helpers/define-app.js'; import addAuthHeader from './common/add-auth-header.js'; import auth from './auth/index.js'; import setBaseUrl from './common/set-base-url.js'; -<<<<<<< HEAD import triggers from './triggers/index.js'; import dynamicData from './dynamic-data/index.js'; -======= ->>>>>>> 589d3447 (feat(gitea): add gitea integration) export default defineApp({ name: 'Gitea', @@ -19,9 +16,6 @@ export default defineApp({ primaryColor: '609926', beforeRequest: [setBaseUrl, addAuthHeader], auth, -<<<<<<< HEAD triggers, dynamicData, -======= ->>>>>>> 589d3447 (feat(gitea): add gitea integration) }); diff --git a/packages/backend/src/apps/gitea/triggers/index.js b/packages/backend/src/apps/gitea/triggers/index.js index 8589a6de..0bda049e 100644 --- a/packages/backend/src/apps/gitea/triggers/index.js +++ b/packages/backend/src/apps/gitea/triggers/index.js @@ -1,3 +1,4 @@ import newStargazers from './new-stargazers/index.js'; +import newWatchers from './new-watchers/index.js'; -export default [newStargazers]; +export default [newStargazers, newWatchers]; diff --git a/packages/backend/src/apps/gitea/triggers/new-watchers/index.js b/packages/backend/src/apps/gitea/triggers/new-watchers/index.js new file mode 100644 index 00000000..a192a58f --- /dev/null +++ b/packages/backend/src/apps/gitea/triggers/new-watchers/index.js @@ -0,0 +1,61 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'New watchers', + key: 'newWatchers', + pollInterval: 15, + description: 'Triggers when a user watches a repository.', + arguments: [ + { + label: 'Repo', + key: 'repo', + type: 'dropdown', + required: true, + variables: true, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listRepos', + }, + ], + }, + }, + ], + + async run($) { + const repo = $.step.parameters.repo; + const repoOwner = $.auth.data.repoOwner; + const params = { + page: 1, + limit: 100, + }; + + let totalCount; + let totalRequestedCount; + do { + const { data, headers } = await $.http.get( + `/repos/${repoOwner}/${repo}/subscribers`, + { + params, + } + ); + params.page = params.page + 1; + totalCount = Number(headers['x-total-count']); + totalRequestedCount = params.page * params.limit; + + if (data?.length) { + for (const subscriber of data) { + $.pushTriggerItem({ + raw: subscriber, + meta: { + internalId: subscriber.id.toString(), + }, + }); + } + } + } while (totalRequestedCount <= totalCount); + }, +}); diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 9bc40584..713e5522 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -126,14 +126,10 @@ export default defineConfig({ text: 'Gitea', collapsible: true, collapsed: true, -<<<<<<< HEAD items: [ { text: 'Triggers', link: '/apps/gitea/triggers' }, { text: 'Connection', link: '/apps/gitea/connection' }, ], -======= - items: [{ text: 'Connection', link: '/apps/gitea/connection' }], ->>>>>>> 589d3447 (feat(gitea): add gitea integration) }, { text: 'GitHub', diff --git a/packages/docs/pages/apps/gitea/triggers.md b/packages/docs/pages/apps/gitea/triggers.md index 8b6a2ba4..9f651286 100644 --- a/packages/docs/pages/apps/gitea/triggers.md +++ b/packages/docs/pages/apps/gitea/triggers.md @@ -3,6 +3,8 @@ favicon: /favicons/gitea.svg items: - name: New stargazers desc: Triggers when a user stars a repository. + - name: New watchers + desc: Triggers when a user watches a repository. ---