1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-19 05:09:43 +02:00

feat: Webhooks configuration, all events support, refactoring

This commit is contained in:
Maksim Eltyshev 2024-06-12 00:51:36 +02:00
parent 193daf6cfb
commit 87683fe523
96 changed files with 1280 additions and 509 deletions

View file

@ -21,10 +21,18 @@ module.exports = {
custom: valuesValidator,
required: true,
},
project: {
type: 'ref',
required: true,
},
board: {
type: 'ref',
required: true,
},
list: {
type: 'ref',
required: true,
},
requestId: {
type: 'string',
isNotEmptyString: true,
@ -35,7 +43,7 @@ module.exports = {
},
async fn(inputs) {
const { values, board } = inputs;
const { values } = inputs;
const attachment = await Attachment.create({
...values,
@ -53,26 +61,33 @@ module.exports = {
inputs.request,
);
sails.helpers.utils.sendWebhooks.with({
event: 'attachmentCreate',
data: {
item: attachment,
included: {
projects: [inputs.project],
boards: [inputs.board],
lists: [inputs.list],
cards: [values.card],
},
},
user: values.creatorUser,
});
if (!values.card.coverAttachmentId && attachment.image) {
await sails.helpers.cards.updateOne.with({
record: values.card,
values: {
coverAttachmentId: attachment.id,
},
board,
request: inputs.request,
project: inputs.project,
board: inputs.board,
list: inputs.list,
actorUser: values.creatorUser,
});
}
await sails.helpers.utils.sendWebhook.with({
event: 'ATTACHMENT_CREATE',
data: attachment,
projectId: board.projectId,
user: inputs.request.currentUser,
card: values.card,
board,
});
return attachment;
},
};

View file

@ -7,14 +7,26 @@ module.exports = {
type: 'ref',
required: true,
},
project: {
type: 'ref',
required: true,
},
board: {
type: 'ref',
required: true,
},
list: {
type: 'ref',
required: true,
},
card: {
type: 'ref',
required: true,
},
actorUser: {
type: 'ref',
required: true,
},
request: {
type: 'ref',
},
@ -27,6 +39,10 @@ module.exports = {
values: {
coverAttachmentId: null,
},
project: inputs.project,
board: inputs.board,
list: inputs.list,
actorUser: inputs.actorUser,
request: inputs.request,
});
}
@ -49,13 +65,18 @@ module.exports = {
inputs.request,
);
await sails.helpers.utils.sendWebhook.with({
event: 'ATTACHMENT_DELETE',
data: attachment,
projectId: inputs.board.projectId,
user: inputs.request.currentUser,
card: inputs.card,
board: inputs.board,
sails.helpers.utils.sendWebhooks.with({
event: 'attachmentDelete',
data: {
item: attachment,
included: {
projects: [inputs.project],
boards: [inputs.board],
lists: [inputs.list],
cards: [inputs.card],
},
},
user: inputs.actorUser,
});
}

View file

@ -8,10 +8,26 @@ module.exports = {
type: 'json',
required: true,
},
project: {
type: 'ref',
required: true,
},
board: {
type: 'ref',
required: true,
},
list: {
type: 'ref',
required: true,
},
card: {
type: 'ref',
required: true,
},
actorUser: {
type: 'ref',
required: true,
},
request: {
type: 'ref',
},
@ -32,12 +48,18 @@ module.exports = {
inputs.request,
);
await sails.helpers.utils.sendWebhook.with({
event: 'ATTACHMENT_UPDATE',
data: attachment,
projectId: inputs.board.projectId,
user: inputs.request.currentUser,
board: inputs.board,
sails.helpers.utils.sendWebhooks.with({
event: 'attachmentUpdate',
data: {
item: attachment,
included: {
projects: [inputs.project],
boards: [inputs.board],
lists: [inputs.list],
cards: [inputs.card],
},
},
user: inputs.actorUser,
});
}