From 6988864808d6a54ab067d297b0021ff45a051b15 Mon Sep 17 00:00:00 2001 From: Maksim Eltyshev Date: Tue, 17 Jun 2025 16:00:37 +0200 Subject: [PATCH] fix: Fix filtering by task assignees --- client/src/models/Board.js | 15 ++++++++++++++- client/src/models/List.js | 2 +- server/api/hooks/query-methods/models/Card.js | 11 +++++------ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/client/src/models/Board.js b/client/src/models/Board.js index 429178b7..6055214d 100755 --- a/client/src/models/Board.js +++ b/client/src/models/Board.js @@ -361,7 +361,20 @@ export default class extends BaseModel { if (filterUserIds.length > 0) { cardModels = cardModels.filter((cardModel) => { const users = cardModel.users.toRefArray(); - return users.some((user) => filterUserIds.includes(user.id)); + + if (users.some((user) => filterUserIds.includes(user.id))) { + return true; + } + + return cardModel + .getTaskListsQuerySet() + .toModelArray() + .some((taskListModel) => + taskListModel + .getTasksQuerySet() + .toRefArray() + .some((task) => task.assigneeUserId && filterUserIds.includes(task.assigneeUserId)), + ); }); } diff --git a/client/src/models/List.js b/client/src/models/List.js index 8f9c6c6e..79255cd3 100755 --- a/client/src/models/List.js +++ b/client/src/models/List.js @@ -292,7 +292,7 @@ export default class extends BaseModel { taskListModel .getTasksQuerySet() .toRefArray() - .some((task) => filterUserIds.includes(task.assigneeUserId)), + .some((task) => task.assigneeUserId && filterUserIds.includes(task.assigneeUserId)), ); }); } diff --git a/server/api/hooks/query-methods/models/Card.js b/server/api/hooks/query-methods/models/Card.js index 7e47f8c0..ae19de06 100644 --- a/server/api/hooks/query-methods/models/Card.js +++ b/server/api/hooks/query-methods/models/Card.js @@ -28,13 +28,13 @@ const getIdsByEndlessListId = async ( let query = 'SELECT DISTINCT card.id FROM card'; if (filterUserIds) { - query += ' JOIN card_membership ON card.id = card_membership.card_id'; - query += ' JOIN task_list ON card.id = task_list.card_id'; - query += ' JOIN task ON task_list.id = task.task_list_id'; + query += ' LEFT JOIN card_membership ON card.id = card_membership.card_id'; + query += ' LEFT JOIN task_list ON card.id = task_list.card_id'; + query += ' LEFT JOIN task ON task_list.id = task.task_list_id'; } if (filterLabelIds) { - query += ' JOIN card_label ON card.id = card_label.card_id'; + query += ' LEFT JOIN card_label ON card.id = card_label.card_id'; } queryValues.push(listId); @@ -85,8 +85,7 @@ const getIdsByEndlessListId = async ( return `$${queryValues.length}`; }); - query += ` AND card_membership.user_id IN (${inValues.join(', ')})`; - query += ` AND task.assignee_user_id IN (${inValues.join(', ')})`; + query += ` AND (card_membership.user_id IN (${inValues.join(', ')}) OR task.assignee_user_id IN (${inValues.join(', ')}))`; } if (filterLabelIds) {