From 43de3b8a01b001ec665294fa8bd75f5d01df7df0 Mon Sep 17 00:00:00 2001 From: Maxime Quandalle Date: Wed, 14 Oct 2015 23:40:00 +0200 Subject: Prevent dublicated empty labels of the same color --- models/boards.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'models') 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 || -- cgit v1.2.3-1-g7c22