From c5b44598f9cfa2ef86f3fdfcd0d753d7c4c10ed1 Mon Sep 17 00:00:00 2001 From: Maksim Eltyshev Date: Sun, 10 May 2020 02:06:14 +0500 Subject: [PATCH] Fix members and labels creation when transfer card to another board --- client/src/sagas/app/services/card.js | 35 ++++------------- server/api/helpers/update-card.js | 56 ++++++++++++--------------- 2 files changed, 31 insertions(+), 60 deletions(-) diff --git a/client/src/sagas/app/services/card.js b/client/src/sagas/app/services/card.js index ca1b41d6..4a668cc9 100644 --- a/client/src/sagas/app/services/card.js +++ b/client/src/sagas/app/services/card.js @@ -2,13 +2,7 @@ import { call, put, select } from 'redux-saga/effects'; import { goToBoardService } from './router'; import { createCardRequest, deleteCardRequest, updateCardRequest } from '../requests'; -import { - boardByIdSelector, - cardByIdSelector, - listByIdSelector, - nextCardPositionSelector, - pathSelector, -} from '../../../selectors'; +import { listByIdSelector, nextCardPositionSelector, pathSelector } from '../../../selectors'; import { createCard, deleteCard, updateCard } from '../../../actions'; import { createLocalId } from '../../../utils/local-id'; @@ -62,34 +56,19 @@ export function* moveCurrentCardService(listId, index) { export function* transferCardService(id, boardId, listId, index) { const { cardId: currentCardId, boardId: currentBoardId } = yield select(pathSelector); + const position = yield select(nextCardPositionSelector, listId, index, id); if (id === currentCardId) { yield call(goToBoardService, currentBoardId); } - const card = yield select(cardByIdSelector, id); - const board = yield select(boardByIdSelector, boardId); - yield put(deleteCard(id)); - if (board.isFetching === false) { - const position = yield select(nextCardPositionSelector, listId, index, id); - - yield put( - createCard({ - ...card, - listId, - boardId, - position, - }), - ); - - yield call(updateCardRequest, id, { - listId, - boardId, - position, - }); - } + yield call(updateCardRequest, id, { + listId, + boardId, + position, + }); } export function* transferCurrentCardService(boardId, listId, index) { diff --git a/server/api/helpers/update-card.js b/server/api/helpers/update-card.js index 2f2bd4fd..894299d0 100644 --- a/server/api/helpers/update-card.js +++ b/server/api/helpers/update-card.js @@ -143,7 +143,7 @@ module.exports = { const labelByNameMap = _.keyBy(labels, 'name'); const labelIds = await Promise.all( - await prevLabels.map(async (prevLabel) => { + prevLabels.map(async (prevLabel) => { if (labelByNameMap[prevLabel.name]) { return labelByNameMap[prevLabel.name].id; } @@ -157,49 +157,41 @@ module.exports = { }), ); - labelIds.forEach(async (labelId) => { - await CardLabel.create({ - labelId, - cardId: card.id, - }) - .tolerate('E_UNIQUE') - .fetch(); - }); + await Promise.all( + labelIds.map(async (labelId) => { + await CardLabel.create({ + labelId, + cardId: card.id, + }) + .tolerate('E_UNIQUE') + .fetch(); + }), + ); const cardMemberships = await sails.helpers.getMembershipsForCard(card.id); const cardLabels = await sails.helpers.getCardLabelsForCard(card.id); const tasks = await sails.helpers.getTasksForCard(card.id); const attachments = await sails.helpers.getAttachmentsForCard(card.id); - sails.sockets.broadcast( - `board:${card.boardId}`, - 'cardCreate', - { - item: card, - included: { - cardMemberships, - cardLabels, - tasks, - attachments, - }, + sails.sockets.broadcast(`board:${card.boardId}`, 'cardCreate', { + item: card, + included: { + cardMemberships, + cardLabels, + tasks, + attachments, }, - inputs.request, - ); + }); const userIds = await sails.helpers.getSubscriptionUserIdsForCard(card.id); userIds.forEach((userId) => { - sails.sockets.broadcast( - `user:${userId}`, - 'cardUpdate', - { - item: { - id: card.id, - isSubscribed: true, - }, + sails.sockets.broadcast(`user:${userId}`, 'cardUpdate', { + item: { + id: card.id, + isSubscribed: true, }, - inputs.request, - ); + }); }); } else { sails.sockets.broadcast(