diff options
author | floatinghotpot <rjfun.mobile@gmail.com> | 2015-12-08 16:03:31 +0800 |
---|---|---|
committer | floatinghotpot <rjfun.mobile@gmail.com> | 2015-12-08 16:03:31 +0800 |
commit | 672c21bfe043c557c059086561113a6a1dfefb42 (patch) | |
tree | 07a01706d6f8abba1ee7aeb393c991db28ef3b15 /models/boards.js | |
parent | b719968df5577af6dd69eb32f6c2e2a43a322e87 (diff) | |
download | wekan-672c21bfe043c557c059086561113a6a1dfefb42.tar.gz wekan-672c21bfe043c557c059086561113a6a1dfefb42.tar.bz2 wekan-672c21bfe043c557c059086561113a6a1dfefb42.zip |
bugfix: only care active members, also optimize some code
Diffstat (limited to 'models/boards.js')
-rw-r--r-- | models/boards.js | 59 |
1 files changed, 27 insertions, 32 deletions
diff --git a/models/boards.js b/models/boards.js index 6aba0b1e..9c792674 100644 --- a/models/boards.js +++ b/models/boards.js @@ -115,6 +115,14 @@ Boards.helpers({ return _.pluck(this.members, 'userId').indexOf(memberId); }, + hasMember(memberId) { + return !!_.findWhere(this.members, {userId: memberId, isActive: true}); + }, + + hasAdmin(memberId) { + return !!_.findWhere(this.members, {userId: memberId, isActive: true, isAdmin: true}); + }, + absoluteUrl() { return FlowRouter.path('board', { id: this._id, slug: this.slug }); }, @@ -186,34 +194,23 @@ Boards.mutations({ addMember(memberId) { const memberIndex = this.memberIndex(memberId); - if (memberIndex === -1) { - const xIndex = this.memberIndex('x'); - if (xIndex === -1) { - return { - $push: { - members: { - userId: memberId, - isAdmin: false, - isActive: true, - }, - }, - }; - } else { - return { - $set: { - [`members.${xIndex}.userId`]: memberId, - [`members.${xIndex}.isActive`]: true, - [`members.${xIndex}.isAdmin`]: false, - }, - }; - } - } else { + if (memberIndex >= 0) { return { $set: { [`members.${memberIndex}.isActive`]: true, }, }; } + + return { + $push: { + members: { + userId: memberId, + isAdmin: false, + isActive: true, + }, + }, + }; }, removeMember(memberId) { @@ -221,22 +218,20 @@ Boards.mutations({ // we do not allow the only one admin to be removed const allowRemove = (!this.members[memberIndex].isAdmin) || (this.activeAdmins().length > 1); - - if (allowRemove) { - return { - $set: { - [`members.${memberIndex}.userId`]: 'x', - [`members.${memberIndex}.isActive`]: false, - [`members.${memberIndex}.isAdmin`]: false, - }, - }; - } else { + if (!allowRemove) { return { $set: { [`members.${memberIndex}.isActive`]: true, }, }; } + + return { + $set: { + [`members.${memberIndex}.isActive`]: false, + [`members.${memberIndex}.isAdmin`]: false, + }, + }; }, setMemberPermission(memberId, isAdmin) { |