diff options
author | Alexander Sulfrian <alexander.sulfrian@fu-berlin.de> | 2016-08-16 19:00:04 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander.sulfrian@fu-berlin.de> | 2016-08-16 19:19:39 +0200 |
commit | ce4fcbfae4ce6dac340811d87c217dbdfae13288 (patch) | |
tree | ee9c06d2c0385967206df9c42a4e9996e77fa1c4 /models/boards.js | |
parent | 301210c87bd50c8491844182e515c0ffd97c18f6 (diff) | |
download | wekan-ce4fcbfae4ce6dac340811d87c217dbdfae13288.tar.gz wekan-ce4fcbfae4ce6dac340811d87c217dbdfae13288.tar.bz2 wekan-ce4fcbfae4ce6dac340811d87c217dbdfae13288.zip |
Models: Fix remove member activity
The member is only set to inactive, so we could not test for $pull.
Instead we have to look into the $set modified and check whether the
member was deactivated.
Diffstat (limited to 'models/boards.js')
-rw-r--r-- | models/boards.js | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/models/boards.js b/models/boards.js index 029ff7d1..9fef92a7 100644 --- a/models/boards.js +++ b/models/boards.js @@ -449,17 +449,28 @@ if (Meteor.isServer) { ); }); + const foreachRemovedMember = (doc, modifier, callback) => { + Object.keys(modifier).forEach((set) => { + if (modifier[set] !== false) { + return; + } + + const parts = set.split('.'); + if (parts.length === 3 && parts[0] === 'members' && parts[2] === 'isActive') { + callback(doc.members[parts[1]].userId); + } + }); + }; + // Add a new activity if we add or remove a member to the board Boards.after.update((userId, doc, fieldNames, modifier) => { if (!_.contains(fieldNames, 'members')) { return; } - let memberId; - // Say hello to the new member if (modifier.$push && modifier.$push.members) { - memberId = modifier.$push.members.userId; + const memberId = modifier.$push.members.userId; Activities.insert({ userId, memberId, @@ -470,14 +481,15 @@ if (Meteor.isServer) { } // Say goodbye to the former member - if (modifier.$pull && modifier.$pull.members) { - memberId = modifier.$pull.members.userId; - Activities.insert({ - userId, - memberId, - type: 'member', - activityType: 'removeBoardMember', - boardId: doc._id, + if (modifier.$set) { + foreachRemovedMember(doc, modifier.$set, (memberId) => { + Activities.insert({ + userId, + memberId, + type: 'member', + activityType: 'removeBoardMember', + boardId: doc._id, + }); }); } }); |