mirror of https://github.com/wekan/wekan
The Open Source kanban (built with Meteor). Keep variable/table/field names camelCase. For translations, only add Pull Request changes to wekan/i18n/en.i18n.json , other translations are done at https://transifex.com/wekan/wekan only.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.5 KiB
101 lines
2.5 KiB
// We use these when displaying notifications in the notificationsDrawer
|
|
|
|
// gets all activities associated with the current user
|
|
Meteor.publish('notificationActivities', () => {
|
|
return activities();
|
|
});
|
|
|
|
// gets all attachments associated with activities associated with the current user
|
|
Meteor.publish('notificationAttachments', function() {
|
|
return Attachments.find({
|
|
_id: {
|
|
$in: activities()
|
|
.map(v => v.attachmentId)
|
|
.filter(v => !!v),
|
|
}.cursor,
|
|
});
|
|
});
|
|
|
|
// gets all cards associated with activities associated with the current user
|
|
Meteor.publish('notificationCards', function() {
|
|
return Cards.find({
|
|
_id: {
|
|
$in: activities()
|
|
.map(v => v.cardId)
|
|
.filter(v => !!v),
|
|
},
|
|
});
|
|
});
|
|
|
|
// gets all checklistItems associated with activities associated with the current user
|
|
Meteor.publish('notificationChecklistItems', function() {
|
|
return ChecklistItems.find({
|
|
_id: {
|
|
$in: activities()
|
|
.map(v => v.checklistItemId)
|
|
.filter(v => !!v),
|
|
},
|
|
});
|
|
});
|
|
|
|
// gets all checklists associated with activities associated with the current user
|
|
Meteor.publish('notificationChecklists', function() {
|
|
return Checklists.find({
|
|
_id: {
|
|
$in: activities()
|
|
.map(v => v.checklistId)
|
|
.filter(v => !!v),
|
|
},
|
|
});
|
|
});
|
|
|
|
// gets all comments associated with activities associated with the current user
|
|
Meteor.publish('notificationComments', function() {
|
|
return CardComments.find({
|
|
_id: {
|
|
$in: activities()
|
|
.map(v => v.commentId)
|
|
.filter(v => !!v),
|
|
},
|
|
});
|
|
});
|
|
|
|
// gets all lists associated with activities associated with the current user
|
|
Meteor.publish('notificationLists', function() {
|
|
return Lists.find({
|
|
_id: {
|
|
$in: activities()
|
|
.map(v => v.listId)
|
|
.filter(v => !!v),
|
|
},
|
|
});
|
|
});
|
|
|
|
// gets all swimlanes associated with activities associated with the current user
|
|
Meteor.publish('notificationSwimlanes', function() {
|
|
return Swimlanes.find({
|
|
_id: {
|
|
$in: activities()
|
|
.map(v => v.swimlaneId)
|
|
.filter(v => !!v),
|
|
},
|
|
});
|
|
});
|
|
|
|
// gets all users associated with activities associated with the current user
|
|
Meteor.publish('notificationUsers', function() {
|
|
return Users.find({
|
|
_id: {
|
|
$in: activities()
|
|
.map(v => v.userId)
|
|
.filter(v => !!v),
|
|
},
|
|
});
|
|
});
|
|
|
|
function activities() {
|
|
const notifications = Meteor.user().profile.notifications || [];
|
|
return Activities.find({
|
|
_id: { $in: notifications.map(v => v.activity) },
|
|
});
|
|
}
|
|
|