summaryrefslogtreecommitdiffstats
path: root/server/publications/notifications.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/publications/notifications.js')
-rw-r--r--server/publications/notifications.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/server/publications/notifications.js b/server/publications/notifications.js
new file mode 100644
index 00000000..bc55a37c
--- /dev/null
+++ b/server/publications/notifications.js
@@ -0,0 +1,101 @@
+// 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),
+ },
+ });
+});
+
+// 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) },
+ });
+}