diff --git a/packages/backend/src/apps/eventbrite/actions/index.js b/packages/backend/src/apps/eventbrite/actions/index.js index b183087b..8b34e985 100644 --- a/packages/backend/src/apps/eventbrite/actions/index.js +++ b/packages/backend/src/apps/eventbrite/actions/index.js @@ -1,3 +1,4 @@ import createEvent from './create-event/index.js'; +import publishEvent from './publish-event/index.js'; -export default [createEvent]; +export default [createEvent, publishEvent]; diff --git a/packages/backend/src/apps/eventbrite/actions/publish-event/index.js b/packages/backend/src/apps/eventbrite/actions/publish-event/index.js new file mode 100644 index 00000000..dd65d58c --- /dev/null +++ b/packages/backend/src/apps/eventbrite/actions/publish-event/index.js @@ -0,0 +1,63 @@ +import defineAction from '../../../../helpers/define-action.js'; + +export default defineAction({ + name: 'Publish event', + key: 'publishEvent', + description: 'Publishes a draft event.', + arguments: [ + { + label: 'Organization', + key: 'organizationId', + type: 'dropdown', + required: false, + description: '', + variables: true, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listOrganizations', + }, + ], + }, + }, + { + label: 'Event', + key: 'eventId', + type: 'dropdown', + required: true, + description: '', + variables: true, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listEvents', + }, + { + name: 'parameters.organizationId', + value: '{parameters.organizationId}', + }, + { + name: 'parameters.unpublished', + value: 'true', + }, + ], + }, + }, + ], + + async run($) { + const { eventId } = $.step.parameters; + + const { data } = await $.http.post(`/v3/events/${eventId}/publish/`); + + $.setActionItem({ + raw: data, + }); + }, +}); diff --git a/packages/backend/src/apps/eventbrite/dynamic-data/list-events/index.js b/packages/backend/src/apps/eventbrite/dynamic-data/list-events/index.js index 4f1436c1..c6f68843 100644 --- a/packages/backend/src/apps/eventbrite/dynamic-data/list-events/index.js +++ b/packages/backend/src/apps/eventbrite/dynamic-data/list-events/index.js @@ -7,6 +7,7 @@ export default { data: [], }; const organizationId = $.step.parameters.organizationId; + const unpublished = $.step.parameters.unpublished === 'true'; if (!organizationId) { return events; @@ -17,6 +18,10 @@ export default { order_by: 'created_desc', }; + if (unpublished) { + params.status = 'draft'; + } + do { const { data } = await $.http.get( `/v3/organizations/${organizationId}/events/`, diff --git a/packages/docs/pages/apps/eventbrite/actions.md b/packages/docs/pages/apps/eventbrite/actions.md index bfeb1184..d823d9e8 100644 --- a/packages/docs/pages/apps/eventbrite/actions.md +++ b/packages/docs/pages/apps/eventbrite/actions.md @@ -3,6 +3,8 @@ favicon: /favicons/eventbrite.svg items: - name: Create event desc: Creates a new event. + - name: Publish event + desc: Publishes a draft event. ---