summaryrefslogtreecommitdiffstats
path: root/models/boards.js
diff options
context:
space:
mode:
authorfloatinghotpot <rjfun.mobile@gmail.com>2015-12-08 16:03:31 +0800
committerfloatinghotpot <rjfun.mobile@gmail.com>2015-12-08 16:03:31 +0800
commit672c21bfe043c557c059086561113a6a1dfefb42 (patch)
tree07a01706d6f8abba1ee7aeb393c991db28ef3b15 /models/boards.js
parentb719968df5577af6dd69eb32f6c2e2a43a322e87 (diff)
downloadwekan-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.js59
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) {