1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-18 20:59:44 +02:00

fix: Include previous data state in webhook

Closes #809
This commit is contained in:
Maksim Eltyshev 2024-10-31 00:48:49 +01:00
parent 036cdc058a
commit 369bee63b1
12 changed files with 38 additions and 2 deletions

View file

@ -59,6 +59,9 @@ module.exports = {
cards: [inputs.card], cards: [inputs.card],
}, },
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -59,6 +59,9 @@ module.exports = {
cards: [inputs.card], cards: [inputs.card],
}, },
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -62,6 +62,9 @@ module.exports = {
boards: [inputs.board], boards: [inputs.board],
}, },
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -100,6 +100,9 @@ module.exports = {
projects: [inputs.project], projects: [inputs.project],
}, },
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -264,6 +264,9 @@ module.exports = {
lists: [list], lists: [list],
}, },
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });

View file

@ -91,6 +91,9 @@ module.exports = {
boards: [inputs.board], boards: [inputs.board],
}, },
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -91,6 +91,9 @@ module.exports = {
boards: [inputs.board], boards: [inputs.board],
}, },
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -48,6 +48,7 @@ module.exports = {
inputs.request, inputs.request,
); );
// TODO: with prevData?
sails.helpers.utils.sendWebhooks.with({ sails.helpers.utils.sendWebhooks.with({
event: 'notificationUpdate', event: 'notificationUpdate',
data: { data: {

View file

@ -118,6 +118,9 @@ module.exports = {
data: { data: {
item: project, item: project,
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -101,6 +101,9 @@ module.exports = {
cards: [inputs.card], cards: [inputs.card],
}, },
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -159,6 +159,9 @@ module.exports = {
data: { data: {
item: user, item: user,
}, },
prevData: {
item: inputs.record,
},
user: inputs.actorUser, user: inputs.actorUser,
}); });
} }

View file

@ -97,10 +97,11 @@ const jsonifyData = (data) => {
* @param {*} webhook - Webhook configuration. * @param {*} webhook - Webhook configuration.
* @param {string} event - The event (see {@link EVENT_TYPES}). * @param {string} event - The event (see {@link EVENT_TYPES}).
* @param {Data} data - The data object containing event data and optionally included data. * @param {Data} data - The data object containing event data and optionally included data.
* @param {Data} [prevData] - The data object containing previous state of data (optional).
* @param {ref} user - User object associated with the event. * @param {ref} user - User object associated with the event.
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async function sendWebhook(webhook, event, data, user) { async function sendWebhook(webhook, event, data, prevData, user) {
const headers = { const headers = {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'User-Agent': `planka (+${sails.config.custom.baseUrl})`, 'User-Agent': `planka (+${sails.config.custom.baseUrl})`,
@ -113,6 +114,7 @@ async function sendWebhook(webhook, event, data, user) {
const body = JSON.stringify({ const body = JSON.stringify({
event, event,
data: jsonifyData(data), data: jsonifyData(data),
prevData: prevData && jsonifyData(prevData),
user: sails.helpers.utils.jsonifyRecord(user), user: sails.helpers.utils.jsonifyRecord(user),
}); });
@ -148,6 +150,9 @@ module.exports = {
type: 'ref', type: 'ref',
required: true, required: true,
}, },
prevData: {
type: 'ref',
},
user: { user: {
type: 'ref', type: 'ref',
required: true, required: true,
@ -172,7 +177,7 @@ module.exports = {
return; return;
} }
sendWebhook(webhook, inputs.event, inputs.data, inputs.user); sendWebhook(webhook, inputs.event, inputs.data, inputs.prevData, inputs.user);
}); });
}, },
}; };