From e5e4b8ebfb77eba2db193c0bf7aa2990b5d4e848 Mon Sep 17 00:00:00 2001 From: Nadav Tasher Date: Fri, 3 Jan 2025 12:08:08 +0200 Subject: [PATCH] Fix card issues with ReactiveCache when using keyboard shortcuts When using ReactiveCache.getCard, a buggy instance of Card is returned. The bug experienced is that .assignees and .members are not always up-to-date. This can be reproduced by trying to hover over cards and triggering a keyboard shortcut that interacts with a card. --- client/lib/keyboard.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/lib/keyboard.js b/client/lib/keyboard.js index 111d2e7a4..4513e03de 100644 --- a/client/lib/keyboard.js +++ b/client/lib/keyboard.js @@ -133,7 +133,7 @@ Mousetrap.bind(numbArray, (evt, key) => { const cardIds = MultiSelection.getSelectedCardIds(); for (const cardId of cardIds) { - card = ReactiveCache.getCard(cardId); + card = Cards.findOne(cardId); if(num <= board.labels.length) { card.removeLabel(labels[num-1]["_id"]); @@ -157,7 +157,7 @@ Mousetrap.bind(numArray, (evt, key) => { const cardIds = MultiSelection.getSelectedCardIds(); for (const cardId of cardIds) { - card = ReactiveCache.getCard(cardId); + card = Cards.findOne(cardId); if(num <= board.labels.length) { card.addLabel(labels[num-1]["_id"]); @@ -171,7 +171,7 @@ Mousetrap.bind(numArray, (evt, key) => { return; } if (ReactiveCache.getCurrentUser().isBoardMember()) { - const card = ReactiveCache.getCard(cardId); + const card = Cards.findOne(cardId); if(num <= board.labels.length) { card.toggleLabel(labels[num-1]["_id"]); @@ -197,14 +197,14 @@ Mousetrap.bind(_.range(1, 10).map(x => `ctrl+alt+${x}`), (evt, key) => { if (MultiSelection.isActive()) { for (const cardId of MultiSelection.getSelectedCardIds()) - ReactiveCache.getCard(cardId).toggleAssignee(boardMembers[memberIndex]._id); + Cards.findOne(cardId).toggleAssignee(boardMembers[memberIndex]._id); } else { const cardId = getSelectedCardId(); if (!cardId) return; - ReactiveCache.getCard(cardId).toggleAssignee(boardMembers[memberIndex]._id); + Cards.findOne(cardId).toggleAssignee(boardMembers[memberIndex]._id); } }); @@ -220,7 +220,7 @@ Mousetrap.bind('m', evt => { } if (ReactiveCache.getCurrentUser().isBoardMember()) { - const card = ReactiveCache.getCard(cardId); + const card = Cards.findOne(cardId); card.toggleAssignee(currentUserId); // We should prevent scrolling in card when spacebar is clicked // This should do it according to Mousetrap docs, but it doesn't @@ -240,7 +240,7 @@ Mousetrap.bind('space', evt => { } if (ReactiveCache.getCurrentUser().isBoardMember()) { - const card = ReactiveCache.getCard(cardId); + const card = Cards.findOne(cardId); card.toggleMember(currentUserId); // We should prevent scrolling in card when spacebar is clicked // This should do it according to Mousetrap docs, but it doesn't @@ -260,7 +260,7 @@ const archiveCard = evt => { } if (Utils.canModifyBoard()) { - const card = ReactiveCache.getCard(cardId); + const card = Cards.findOne(cardId); card.archive(); // We should prevent scrolling in card when spacebar is clicked // This should do it according to Mousetrap docs, but it doesn't @@ -289,7 +289,7 @@ Mousetrap.bind('n', evt => { if (Utils.canModifyBoard()) { // Find the current hovered card - const card = ReactiveCache.getCard(cardId); + const card = Cards.findOne(cardId); // Find the button and click it $(`#js-list-${card.listId} .list-body .minicards .open-minicard-composer`).click();