From c193f9334fdd8b96701d2e1f6f1067b79a2498fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Fri, 15 Sep 2023 18:29:50 +0300 Subject: [PATCH] feat(wordpress): add new comment trigger --- .../src/apps/wordpress/triggers/index.ts | 3 +- .../wordpress/triggers/new-comment/index.ts | 58 +++++++++++++++++++ .../docs/pages/apps/wordpress/triggers.md | 2 + 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/wordpress/triggers/new-comment/index.ts diff --git a/packages/backend/src/apps/wordpress/triggers/index.ts b/packages/backend/src/apps/wordpress/triggers/index.ts index 21674aad..3abd95e0 100644 --- a/packages/backend/src/apps/wordpress/triggers/index.ts +++ b/packages/backend/src/apps/wordpress/triggers/index.ts @@ -1,4 +1,5 @@ +import newComment from './new-comment'; import newPage from './new-page'; import newPost from './new-post'; -export default [newPage, newPost]; +export default [newComment, newPage, newPost]; diff --git a/packages/backend/src/apps/wordpress/triggers/new-comment/index.ts b/packages/backend/src/apps/wordpress/triggers/new-comment/index.ts new file mode 100644 index 00000000..694453b2 --- /dev/null +++ b/packages/backend/src/apps/wordpress/triggers/new-comment/index.ts @@ -0,0 +1,58 @@ +import defineTrigger from '../../../../helpers/define-trigger'; + +export default defineTrigger({ + name: 'New comment', + key: 'newComment', + description: 'Triggers when a new comment is created.', + arguments: [ + { + label: 'Status', + key: 'status', + type: 'dropdown' as const, + required: true, + variables: true, + options: [ + { label: 'Approve', value: 'approve' }, + { label: 'Unapprove', value: 'hold' }, + { label: 'Spam', value: 'spam' }, + { label: 'Trash', value: 'trash' }, + ], + }, + ], + + async run($) { + const params = { + per_page: 100, + page: 1, + order: 'desc', + orderby: 'date', + status: $.step.parameters.status || '', + }; + + let totalPages = 1; + do { + const { data, headers } = await $.http.get( + '?rest_route=/wp/v2/comments', + { + params, + } + ); + + params.page = params.page + 1; + totalPages = Number(headers['x-wp-totalpages']); + + if (data.length) { + for (const page of data) { + const dataItem = { + raw: page, + meta: { + internalId: page.id.toString(), + }, + }; + + $.pushTriggerItem(dataItem); + } + } + } while (params.page <= totalPages); + }, +}); diff --git a/packages/docs/pages/apps/wordpress/triggers.md b/packages/docs/pages/apps/wordpress/triggers.md index 4815bd74..cee4ebf4 100644 --- a/packages/docs/pages/apps/wordpress/triggers.md +++ b/packages/docs/pages/apps/wordpress/triggers.md @@ -1,6 +1,8 @@ --- favicon: /favicons/wordpress.svg items: + - name: New comment + desc: Triggers when a new comment is created. - name: New page desc: Triggers when a new page is created. - name: New post