Files
automatisch/packages/backend/src/apps/trello/triggers/new-cards/index.ts
2023-10-26 15:13:10 +03:00

124 lines
2.6 KiB
TypeScript

import defineTrigger from '../../../../helpers/define-trigger';
export default defineTrigger({
name: 'New cards',
key: 'newCards',
pollInterval: 15,
description: 'Triggers upon the addition of a new card.',
arguments: [
{
label: 'Board',
key: 'boardId',
type: 'dropdown' as const,
required: false,
description:
'Selecting a board initiates the trigger for newly added cards on that board.',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listBoards',
},
],
},
},
{
label: 'List',
key: 'listId',
type: 'dropdown' as const,
required: false,
dependsOn: ['parameters.boardId'],
description: 'Requires to opt for a board.',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listBoardLists',
},
{
name: 'parameters.boardId',
value: '{parameters.boardId}',
},
],
},
},
{
label: 'Filter',
key: 'filter',
type: 'dropdown' as const,
required: false,
description: 'Default is open.',
variables: true,
options: [
{
label: 'open',
value: 'open',
},
{
label: 'closed',
value: 'closed',
},
{
label: 'all',
value: 'all',
},
],
},
],
async run($) {
const { boardId, listId, filter } = $.step.parameters;
if (boardId && !listId) {
const cardFilter = filter || 'open';
const { data } = await $.http.get(
`/1/boards/${boardId}/cards/${cardFilter}`
);
if (data) {
for (const card of data) {
$.pushTriggerItem({
raw: card,
meta: {
internalId: card.id,
},
});
}
}
} else if (listId) {
const { data } = await $.http.get(`1/lists/${listId}/cards`);
if (data) {
for (const card of data) {
$.pushTriggerItem({
raw: card,
meta: {
internalId: card.id,
},
});
}
}
} else {
const { data } = await $.http.get(`/1/members/me/cards`);
if (data) {
for (const card of data) {
$.pushTriggerItem({
raw: card,
meta: {
internalId: card.id,
},
});
}
}
}
},
});