diff options
author | Xavier Priour <xavier.priour@bubblyware.com> | 2015-12-13 20:02:51 +0100 |
---|---|---|
committer | Xavier Priour <xavier.priour@bubblyware.com> | 2015-12-13 20:02:51 +0100 |
commit | e304185c23014fe3a4511d213535549e4bfeb207 (patch) | |
tree | 1e3a33f06db36b52f9bbfafb6163a652883a0cdf /models | |
parent | 18697d45f652a119ba21b0cef42fbf732902bfa9 (diff) | |
parent | 0954cff5b470712210275a9c0699d85d6579ab54 (diff) | |
download | wekan-e304185c23014fe3a4511d213535549e4bfeb207.tar.gz wekan-e304185c23014fe3a4511d213535549e4bfeb207.tar.bz2 wekan-e304185c23014fe3a4511d213535549e4bfeb207.zip |
Merge remote-tracking branch 'upstream/devel' into devel
Diffstat (limited to 'models')
-rw-r--r-- | models/boards.js | 59 | ||||
-rw-r--r-- | models/users.js | 8 |
2 files changed, 29 insertions, 38 deletions
diff --git a/models/boards.js b/models/boards.js index b3d5b0d0..cdf83ce0 100644 --- a/models/boards.js +++ b/models/boards.js @@ -142,6 +142,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 }); }, @@ -213,34 +221,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) { @@ -248,22 +245,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) { diff --git a/models/users.js b/models/users.js index 2c9ae380..cf4c4193 100644 --- a/models/users.js +++ b/models/users.js @@ -12,16 +12,12 @@ if (Meteor.isClient) { Users.helpers({ isBoardMember() { const board = Boards.findOne(Session.get('currentBoard')); - return board && - _.contains(_.pluck(board.members, 'userId'), this._id) && - _.where(board.members, {userId: this._id})[0].isActive; + return board && board.hasMember(this._id); }, isBoardAdmin() { const board = Boards.findOne(Session.get('currentBoard')); - return board && - this.isBoardMember(board) && - _.where(board.members, {userId: this._id})[0].isAdmin; + return board && board.hasAdmin(this._id); }, }); } |