summaryrefslogtreecommitdiffstats
path: root/models/activities.js
diff options
context:
space:
mode:
Diffstat (limited to 'models/activities.js')
-rw-r--r--models/activities.js80
1 files changed, 64 insertions, 16 deletions
diff --git a/models/activities.js b/models/activities.js
index 3f1d28ae..1e97895d 100644
--- a/models/activities.js
+++ b/models/activities.js
@@ -14,6 +14,9 @@ Activities.helpers({
board() {
return Boards.findOne(this.boardId);
},
+ oldBoard() {
+ return Boards.findOne(this.oldBoardId);
+ },
user() {
return Users.findOne(this.userId);
},
@@ -26,6 +29,9 @@ Activities.helpers({
swimlane() {
return Swimlanes.findOne(this.swimlaneId);
},
+ oldSwimlane() {
+ return Swimlanes.findOne(this.oldSwimlaneId);
+ },
oldList() {
return Lists.findOne(this.oldListId);
},
@@ -44,12 +50,28 @@ Activities.helpers({
checklistItem() {
return ChecklistItems.findOne(this.checklistItemId);
},
+ subtasks() {
+ return Cards.findOne(this.subtaskId);
+ },
+ customField() {
+ return CustomFields.findOne(this.customFieldId);
+ },
+ // Label activity did not work yet, unable to edit labels when tried this.
+ //label() {
+ // return Cards.findOne(this.labelId);
+ //},
});
Activities.before.insert((userId, doc) => {
doc.createdAt = new Date();
});
+Activities.after.insert((userId, doc) => {
+ const activity = Activities._transform(doc);
+ RulesHelper.executeRules(activity);
+
+});
+
if (Meteor.isServer) {
// For efficiency create indexes on the date of creation, and on the date of
// creation in conjunction with the card or board id, as corresponding views
@@ -60,6 +82,10 @@ if (Meteor.isServer) {
Activities._collection._ensureIndex({ boardId: 1, createdAt: -1 });
Activities._collection._ensureIndex({ commentId: 1 }, { partialFilterExpression: { commentId: { $exists: true } } });
Activities._collection._ensureIndex({ attachmentId: 1 }, { partialFilterExpression: { attachmentId: { $exists: true } } });
+ Activities._collection._ensureIndex({ customFieldId: 1 }, { partialFilterExpression: { customFieldId: { $exists: true } } });
+ // Label activity did not work yet, unable to edit labels when tried this.
+ //Activities._collection._dropIndex({ labelId: 1 }, { "indexKey": -1 });
+ //Activities._collection._dropIndex({ labelId: 1 }, { partialFilterExpression: { labelId: { $exists: true } } });
});
Activities.after.insert((userId, doc) => {
@@ -85,6 +111,14 @@ if (Meteor.isServer) {
params.url = board.absoluteUrl();
params.boardId = activity.boardId;
}
+ if (activity.oldBoardId) {
+ const oldBoard = activity.oldBoard();
+ if (oldBoard) {
+ watchers = _.union(watchers, oldBoard.watchers || []);
+ params.oldBoard = oldBoard.title;
+ params.oldBoardId = activity.oldBoardId;
+ }
+ }
if (activity.memberId) {
participants = _.union(participants, [activity.memberId]);
params.member = activity.member().getName();
@@ -97,9 +131,19 @@ if (Meteor.isServer) {
}
if (activity.oldListId) {
const oldList = activity.oldList();
- watchers = _.union(watchers, oldList.watchers || []);
- params.oldList = oldList.title;
- params.oldListId = activity.oldListId;
+ if (oldList) {
+ watchers = _.union(watchers, oldList.watchers || []);
+ params.oldList = oldList.title;
+ params.oldListId = activity.oldListId;
+ }
+ }
+ if (activity.oldSwimlaneId) {
+ const oldSwimlane = activity.oldSwimlane();
+ if (oldSwimlane) {
+ watchers = _.union(watchers, oldSwimlane.watchers || []);
+ params.oldSwimlane = oldSwimlane.title;
+ params.oldSwimlaneId = activity.oldSwimlaneId;
+ }
}
if (activity.cardId) {
const card = activity.card();
@@ -110,6 +154,11 @@ if (Meteor.isServer) {
params.url = card.absoluteUrl();
params.cardId = activity.cardId;
}
+ if (activity.swimlaneId) {
+ const swimlane = activity.swimlane();
+ params.swimlane = swimlane.title;
+ params.swimlaneId = activity.swimlaneId;
+ }
if (activity.commentId) {
const comment = activity.comment();
params.comment = comment.text;
@@ -127,24 +176,23 @@ if (Meteor.isServer) {
const checklistItem = activity.checklistItem();
params.checklistItem = checklistItem.title;
}
+ if (activity.customFieldId) {
+ const customField = activity.customField();
+ params.customField = customField.name;
+ }
+ // Label activity did not work yet, unable to edit labels when tried this.
+ //if (activity.labelId) {
+ // const label = activity.label();
+ // params.label = label.name;
+ // params.labelId = activity.labelId;
+ //}
if (board) {
const watchingUsers = _.pluck(_.where(board.watchers, {level: 'watching'}), 'userId');
const trackingUsers = _.pluck(_.where(board.watchers, {level: 'tracking'}), 'userId');
- const mutedUsers = _.pluck(_.where(board.watchers, {level: 'muted'}), 'userId');
- switch(board.getWatchDefault()) {
- case 'muted':
- participants = _.intersection(participants, trackingUsers);
- watchers = _.intersection(watchers, trackingUsers);
- break;
- case 'tracking':
- participants = _.difference(participants, mutedUsers);
- watchers = _.difference(watchers, mutedUsers);
- break;
- }
- watchers = _.union(watchers, watchingUsers || []);
+ watchers = _.union(watchers, watchingUsers, _.intersection(participants, trackingUsers));
}
- Notifications.getUsers(participants, watchers).forEach((user) => {
+ Notifications.getUsers(watchers).forEach((user) => {
Notifications.notify(user, title, description, params);
});