summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/boards.js59
-rw-r--r--models/users.js8
2 files changed, 29 insertions, 38 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) {
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);
},
});
}