1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-18 12:49:43 +02:00
planka/server/api/helpers/notifications/update-many.js

62 lines
1.3 KiB
JavaScript

const recordsOrIdsValidator = (value) =>
_.every(value, _.isPlainObject) || _.every(value, _.isString);
module.exports = {
inputs: {
recordsOrIds: {
type: 'json',
custom: recordsOrIdsValidator,
required: true,
},
values: {
type: 'json',
required: true,
},
actorUser: {
type: 'ref',
required: true,
},
request: {
type: 'ref',
},
},
async fn(inputs) {
const { values } = inputs;
const criteria = {
userId: inputs.actorUser.id,
};
if (_.every(inputs.recordsOrIds, _.isPlainObject)) {
criteria.id = sails.helpers.utils.mapRecords(inputs.recordsOrIds);
} else if (_.every(inputs.recordsOrIds, _.isString)) {
criteria.id = inputs.recordsOrIds;
}
const notifications = await Notification.update(criteria)
.set({ ...values })
.fetch();
notifications.forEach((notification) => {
sails.sockets.broadcast(
`user:${notification.userId}`,
'notificationUpdate',
{
item: notification,
},
inputs.request,
);
sails.helpers.utils.sendWebhooks.with({
event: 'notificationUpdate',
data: {
item: notification,
},
user: inputs.actorUser,
});
});
return notifications;
},
};