diff options
author | Maxime Quandalle <maxime@quandalle.com> | 2015-10-14 23:40:00 +0200 |
---|---|---|
committer | Maxime Quandalle <maxime@quandalle.com> | 2015-10-14 23:40:27 +0200 |
commit | 43de3b8a01b001ec665294fa8bd75f5d01df7df0 (patch) | |
tree | ac9fe20b4442076ee594a6b809b3f6857a86d783 /models | |
parent | ab761f11868ce5af80d2d54e173827dc043fef02 (diff) | |
download | wekan-43de3b8a01b001ec665294fa8bd75f5d01df7df0.tar.gz wekan-43de3b8a01b001ec665294fa8bd75f5d01df7df0.tar.bz2 wekan-43de3b8a01b001ec665294fa8bd75f5d01df7df0.zip |
Prevent dublicated empty labels of the same color
Diffstat (limited to 'models')
-rw-r--r-- | models/boards.js | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/models/boards.js b/models/boards.js index 8d2b63e4..fd0212c5 100644 --- a/models/boards.js +++ b/models/boards.js @@ -93,9 +93,7 @@ Boards.helpers({ }, getLabel(name, color) { - return this.labels.find((current) => { - return ((current.name === name) && (current.color === color)); - }); + return _.findWhere(this.labels, { name, color }); }, labelIndex(labelId) { @@ -138,11 +136,22 @@ Boards.mutations({ addLabel(name, color) { const _id = Random.id(6); + + // If an empty label of a given color already exists we don't want to create + // an other one because they would be indistinguishable in the UI (they + // would still have different `_id` but that is not exposed to the user). + if (name === '' && this.getLabel(name, color)) { + return {}; + } return { $push: {labels: { _id, name, color }}}; }, editLabel(labelId, name, color) { const labelIndex = this.labelIndex(labelId); + + if (name === '' && this.getLabel(name, color)) { + return {}; + } return { $set: { [`labels.${labelIndex}.name`]: name, @@ -299,8 +308,8 @@ if (Meteor.isServer) { }); }); - // If the user removes a label from a board, we have to remove references to - // this label in all cards of the board. + // If the user remove one label from a board, we cant to remove reference of + // this label in any card of this board. Boards.after.update((userId, doc, fieldNames, modifier) => { if (!_.contains(fieldNames, 'labels') || !modifier.$pull || |