|
@@ -24,16 +24,17 @@ Meteor.methods({
|
|
|
}));
|
|
|
check(listId, String);
|
|
|
check(sortIndex, Number);
|
|
|
- } catch(e) {
|
|
|
+ } catch (e) {
|
|
|
throw new Meteor.Error('error-json-schema');
|
|
|
}
|
|
|
|
|
|
- // 2. check parameters are ok from a business point of view (exist & authorized)
|
|
|
+ // 2. check parameters are ok from a business point of view (exist &
|
|
|
+ // authorized)
|
|
|
const list = Lists.findOne(listId);
|
|
|
- if(!list) {
|
|
|
+ if (!list) {
|
|
|
throw new Meteor.Error('error-list-doesNotExist');
|
|
|
}
|
|
|
- if(Meteor.isServer) {
|
|
|
+ if (Meteor.isServer) {
|
|
|
if (!allowIsBoardMember(Meteor.userId(), Boards.findOne(list.boardId))) {
|
|
|
throw new Meteor.Error('error-board-notAMember');
|
|
|
}
|
|
@@ -48,6 +49,7 @@ Meteor.methods({
|
|
|
createdAt: dateOfImport,
|
|
|
dateLastActivity: dateOfImport,
|
|
|
description: trelloCard.desc,
|
|
|
+ labelIds: [],
|
|
|
listId: list._id,
|
|
|
sort: sortIndex,
|
|
|
title: trelloCard.name,
|
|
@@ -59,29 +61,18 @@ Meteor.methods({
|
|
|
const creationAction = trelloCard.actions.find((action) => {
|
|
|
return action.type === 'createCard';
|
|
|
});
|
|
|
- if(creationAction) {
|
|
|
+ if (creationAction) {
|
|
|
cardToCreate.createdAt = creationAction.date;
|
|
|
}
|
|
|
|
|
|
// 5. map labels - create missing ones
|
|
|
trelloCard.labels.forEach((currentLabel) => {
|
|
|
- const color = currentLabel.color;
|
|
|
- const name = currentLabel.name;
|
|
|
- const existingLabel = list.board().getLabel(name, color);
|
|
|
- let labelId = undefined;
|
|
|
- if (existingLabel) {
|
|
|
- labelId = existingLabel._id;
|
|
|
- } else {
|
|
|
- let labelCreated = list.board().addLabel(name, color);
|
|
|
- // XXX currently mutations return no value so we have to fetch the label we just created
|
|
|
- // waiting on https://github.com/mquandalle/meteor-collection-mutations/issues/1 to remove...
|
|
|
- labelCreated = list.board().getLabel(name, color);
|
|
|
- labelId = labelCreated._id;
|
|
|
- }
|
|
|
- if(labelId) {
|
|
|
- if (!cardToCreate.labelIds) {
|
|
|
- cardToCreate.labelIds = [];
|
|
|
- }
|
|
|
+ const { name, color } = currentLabel;
|
|
|
+ // `addLabel` won't create dublicate labels (ie labels with the same name
|
|
|
+ // and color) so here it is used more in a "enforceLabelExistence" way.
|
|
|
+ list.board().addLabel(name, color);
|
|
|
+ const { _id: labelId } = list.board().getLabel(name, color);
|
|
|
+ if (labelId) {
|
|
|
cardToCreate.labelIds.push(labelId);
|
|
|
}
|
|
|
});
|
|
@@ -99,13 +90,14 @@ Meteor.methods({
|
|
|
system: 'Trello',
|
|
|
url: trelloCard.url,
|
|
|
},
|
|
|
- // we attribute the import to current user, not the one from the original card
|
|
|
+ // we attribute the import to current user, not the one from the original
|
|
|
+ // card
|
|
|
userId: Meteor.userId(),
|
|
|
});
|
|
|
|
|
|
// 7. parse actions and add comments
|
|
|
trelloCard.actions.forEach((currentAction) => {
|
|
|
- if(currentAction.type === 'commentCard') {
|
|
|
+ if (currentAction.type === 'commentCard') {
|
|
|
const commentToCreate = {
|
|
|
boardId: list.boardId,
|
|
|
cardId,
|