|  | @@ -368,30 +368,36 @@ Cards.allow({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  Cards.helpers({
 | 
	
		
			
				|  |  |    copy(boardId, swimlaneId, listId) {
 | 
	
		
			
				|  |  | -    const oldBoard = Boards.findOne(this.boardId);
 | 
	
		
			
				|  |  | -    const oldBoardLabels = oldBoard.labels;
 | 
	
		
			
				|  |  | -    // Get old label names
 | 
	
		
			
				|  |  | -    const oldCardLabels = _.pluck(
 | 
	
		
			
				|  |  | -      _.filter(oldBoardLabels, label => {
 | 
	
		
			
				|  |  | -        return _.contains(this.labelIds, label._id);
 | 
	
		
			
				|  |  | -      }),
 | 
	
		
			
				|  |  | -      'name',
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const newBoard = Boards.findOne(boardId);
 | 
	
		
			
				|  |  | -    const newBoardLabels = newBoard.labels;
 | 
	
		
			
				|  |  | -    const newCardLabels = _.pluck(
 | 
	
		
			
				|  |  | -      _.filter(newBoardLabels, label => {
 | 
	
		
			
				|  |  | -        return _.contains(oldCardLabels, label.name);
 | 
	
		
			
				|  |  | -      }),
 | 
	
		
			
				|  |  | -      '_id',
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      const oldId = this._id;
 | 
	
		
			
				|  |  |      const oldCard = Cards.findOne(oldId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // Copy Custom Fields
 | 
	
		
			
				|  |  | -    if (oldBoard._id !== boardId) {
 | 
	
		
			
				|  |  | +    // we must only copy the labels and custom fields if the target board
 | 
	
		
			
				|  |  | +    // differs from the source board
 | 
	
		
			
				|  |  | +    if (this.boardId !== boardId) {
 | 
	
		
			
				|  |  | +      const oldBoard = Boards.findOne(this.boardId);
 | 
	
		
			
				|  |  | +      const oldBoardLabels = oldBoard.labels;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // Get old label names
 | 
	
		
			
				|  |  | +      const oldCardLabels = _.pluck(
 | 
	
		
			
				|  |  | +        _.filter(oldBoardLabels, label => {
 | 
	
		
			
				|  |  | +          return _.contains(this.labelIds, label._id);
 | 
	
		
			
				|  |  | +        }),
 | 
	
		
			
				|  |  | +        'name',
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const newBoard = Boards.findOne(boardId);
 | 
	
		
			
				|  |  | +      const newBoardLabels = newBoard.labels;
 | 
	
		
			
				|  |  | +      const newCardLabels = _.pluck(
 | 
	
		
			
				|  |  | +        _.filter(newBoardLabels, label => {
 | 
	
		
			
				|  |  | +          return _.contains(oldCardLabels, label.name);
 | 
	
		
			
				|  |  | +        }),
 | 
	
		
			
				|  |  | +        '_id',
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      // now set the new label ids
 | 
	
		
			
				|  |  | +      delete this.labelIds;
 | 
	
		
			
				|  |  | +      this.labelIds = newCardLabels;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // Copy Custom Fields
 | 
	
		
			
				|  |  |        CustomFields.find({
 | 
	
		
			
				|  |  |          _id: {
 | 
	
		
			
				|  |  |            $in: oldCard.customFields.map(cf => {
 | 
	
	
		
			
				|  | @@ -404,8 +410,6 @@ Cards.helpers({
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      delete this._id;
 | 
	
		
			
				|  |  | -    delete this.labelIds;
 | 
	
		
			
				|  |  | -    this.labelIds = newCardLabels;
 | 
	
		
			
				|  |  |      this.boardId = boardId;
 | 
	
		
			
				|  |  |      this.swimlaneId = swimlaneId;
 | 
	
		
			
				|  |  |      this.listId = listId;
 | 
	
	
		
			
				|  | @@ -1298,8 +1302,40 @@ Cards.mutations({
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    move(boardId, swimlaneId, listId, sort) {
 | 
	
		
			
				|  |  | -    // Copy Custom Fields
 | 
	
		
			
				|  |  | +    const mutatedFields = {
 | 
	
		
			
				|  |  | +      boardId,
 | 
	
		
			
				|  |  | +      swimlaneId,
 | 
	
		
			
				|  |  | +      listId,
 | 
	
		
			
				|  |  | +      sort,
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // we must only copy the labels and custom fields if the target board
 | 
	
		
			
				|  |  | +    // differs from the source board
 | 
	
		
			
				|  |  |      if (this.boardId !== boardId) {
 | 
	
		
			
				|  |  | +      // Get label names
 | 
	
		
			
				|  |  | +      const oldBoard = Boards.findOne(this.boardId);
 | 
	
		
			
				|  |  | +      const oldBoardLabels = oldBoard.labels;
 | 
	
		
			
				|  |  | +      const oldCardLabels = _.pluck(
 | 
	
		
			
				|  |  | +        _.filter(oldBoardLabels, label => {
 | 
	
		
			
				|  |  | +          return _.contains(this.labelIds, label._id);
 | 
	
		
			
				|  |  | +        }),
 | 
	
		
			
				|  |  | +        'name',
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const newBoard = Boards.findOne(boardId);
 | 
	
		
			
				|  |  | +      const newBoardLabels = newBoard.labels;
 | 
	
		
			
				|  |  | +      const newCardLabelIds = _.pluck(
 | 
	
		
			
				|  |  | +        _.filter(newBoardLabels, label => {
 | 
	
		
			
				|  |  | +          return label.name && _.contains(oldCardLabels, label.name);
 | 
	
		
			
				|  |  | +        }),
 | 
	
		
			
				|  |  | +        '_id',
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      Object.assign(mutatedFields, {
 | 
	
		
			
				|  |  | +        labelIds: newCardLabelIds,
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // Copy custom fields
 | 
	
		
			
				|  |  |        CustomFields.find({
 | 
	
		
			
				|  |  |          _id: {
 | 
	
		
			
				|  |  |            $in: this.customFields.map(cf => {
 | 
	
	
		
			
				|  | @@ -1311,33 +1347,6 @@ Cards.mutations({
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // Get label names
 | 
	
		
			
				|  |  | -    const oldBoard = Boards.findOne(this.boardId);
 | 
	
		
			
				|  |  | -    const oldBoardLabels = oldBoard.labels;
 | 
	
		
			
				|  |  | -    const oldCardLabels = _.pluck(
 | 
	
		
			
				|  |  | -      _.filter(oldBoardLabels, label => {
 | 
	
		
			
				|  |  | -        return _.contains(this.labelIds, label._id);
 | 
	
		
			
				|  |  | -      }),
 | 
	
		
			
				|  |  | -      'name',
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const newBoard = Boards.findOne(boardId);
 | 
	
		
			
				|  |  | -    const newBoardLabels = newBoard.labels;
 | 
	
		
			
				|  |  | -    const newCardLabelIds = _.pluck(
 | 
	
		
			
				|  |  | -      _.filter(newBoardLabels, label => {
 | 
	
		
			
				|  |  | -        return label.name && _.contains(oldCardLabels, label.name);
 | 
	
		
			
				|  |  | -      }),
 | 
	
		
			
				|  |  | -      '_id',
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const mutatedFields = {
 | 
	
		
			
				|  |  | -      boardId,
 | 
	
		
			
				|  |  | -      swimlaneId,
 | 
	
		
			
				|  |  | -      listId,
 | 
	
		
			
				|  |  | -      sort,
 | 
	
		
			
				|  |  | -      labelIds: newCardLabelIds,
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      Cards.update(this._id, {
 | 
	
		
			
				|  |  |        $set: mutatedFields,
 | 
	
		
			
				|  |  |      });
 |