diff --git a/packages/backend/src/apps/disqus/index.js b/packages/backend/src/apps/disqus/index.js index 43f59cdf..43670ac4 100644 --- a/packages/backend/src/apps/disqus/index.js +++ b/packages/backend/src/apps/disqus/index.js @@ -10,7 +10,7 @@ export default defineApp({ baseUrl: 'https://disqus.com', apiBaseUrl: 'https://disqus.com/api', iconUrl: '{BASE_URL}/apps/disqus/assets/favicon.svg', - authDocUrl: 'https://automatisch.io/docs/apps/disqus/connection', + authDocUrl: '{DOCS_URL}/apps/disqus/connection', primaryColor: '2E9FFF', supportsConnections: true, beforeRequest: [addAuthHeader], diff --git a/packages/backend/src/apps/disqus/triggers/index.js b/packages/backend/src/apps/disqus/triggers/index.js index 533847a1..f5308257 100644 --- a/packages/backend/src/apps/disqus/triggers/index.js +++ b/packages/backend/src/apps/disqus/triggers/index.js @@ -1,3 +1,4 @@ import newComments from './new-comments/index.js'; +import newFlaggedComments from './new-flagged-comments/index.js'; -export default [newComments]; +export default [newComments, newFlaggedComments]; diff --git a/packages/backend/src/apps/disqus/triggers/new-flagged-comments/index.js b/packages/backend/src/apps/disqus/triggers/new-flagged-comments/index.js new file mode 100644 index 00000000..2cd87dde --- /dev/null +++ b/packages/backend/src/apps/disqus/triggers/new-flagged-comments/index.js @@ -0,0 +1,60 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; +import { URLSearchParams } from 'url'; + +export default defineTrigger({ + name: 'New flagged comments', + key: 'newFlaggedComments', + pollInterval: 15, + description: 'Triggers when a Disqus comment is marked with a flag', + arguments: [ + { + label: 'Forum', + key: 'forumId', + type: 'dropdown', + required: true, + description: 'Select the forum where you want comments to be triggered.', + variables: true, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listForums', + }, + ], + }, + }, + ], + + async run($) { + const forumId = $.step.parameters.forumId; + const isFlaggedFilter = 5; + + const params = new URLSearchParams({ + limit: 100, + forum: forumId, + filters: [isFlaggedFilter], + }); + + let more; + do { + const { data } = await $.http.get( + `/3.0/posts/list.json?${params.toString()}` + ); + params.set('cursor', data.cursor.next); + more = data.cursor.hasNext; + + if (data.response?.length) { + for (const comment of data.response) { + $.pushTriggerItem({ + raw: comment, + meta: { + internalId: comment.id, + }, + }); + } + } + } while (more); + }, +}); diff --git a/packages/docs/pages/apps/disqus/triggers.md b/packages/docs/pages/apps/disqus/triggers.md index 6a2723b9..a40273ab 100644 --- a/packages/docs/pages/apps/disqus/triggers.md +++ b/packages/docs/pages/apps/disqus/triggers.md @@ -3,6 +3,8 @@ favicon: /favicons/disqus.svg items: - name: New comments desc: Triggers when a new comment is posted in a forum using Disqus. + - name: New flagged comments + desc: Triggers when a Disqus comment is marked with a flag. ---