diff --git a/client/src/models/Card.js b/client/src/models/Card.js index 6ddd3005..da21f0d4 100755 --- a/client/src/models/Card.js +++ b/client/src/models/Card.js @@ -86,10 +86,21 @@ export default class extends Model { Card.upsert(payload.card); break; - case ActionTypes.CARD_UPDATE: - Card.withId(payload.id).update(payload.data); + case ActionTypes.CARD_UPDATE: { + const card = Card.withId(payload.id); + + // FIXME: hack + if (payload.data.boardId && payload.data.boardId !== card.boardId) { + card.isSubscribed = false; + + card.users.clear(); + card.labels.clear(); + } + + card.update(payload.data); break; + } case ActionTypes.CARD_DELETE: Card.withId(payload.id).deleteWithRelated(); diff --git a/server/api/helpers/update-card.js b/server/api/helpers/update-card.js index 0ddd059f..b863c853 100644 --- a/server/api/helpers/update-card.js +++ b/server/api/helpers/update-card.js @@ -80,12 +80,32 @@ module.exports = { let card; if (!_.isEmpty(values)) { + // FIXME: hack + if (inputs.toList && inputs.toList.boardId !== inputs.list.boardId) { + await CardSubscription.destroy({ + cardId: inputs.record.id, + }); + + await CardMembership.destroy({ + cardId: inputs.record.id, + }); + + await CardLabel.destroy({ + cardId: inputs.record.id, + }); + } + card = await Card.updateOne(inputs.record.id).set(values); if (!card) { return exits.success(card); } + // FIXME: hack + if (inputs.toList && inputs.toList.boardId !== inputs.list.boardId) { + card.isSubscribed = false; + } + sails.sockets.broadcast( `board:${card.boardId}`, 'cardUpdate',