diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/labels-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/labels-filter-dropdown.tsx index 4c2744cc..dc63e9be 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/labels-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/labels-filter-dropdown.tsx @@ -11,7 +11,7 @@ import List from 'antd/es/list'; import Space from 'antd/es/space'; import { useSearchParams } from 'react-router-dom'; -import { useMemo, useRef, useState } from 'react'; +import { useMemo, useRef, useState, useEffect } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; import { useTranslation } from 'react-i18next'; @@ -36,6 +36,13 @@ const LabelsFilterDropdown = () => { const tab = searchParams.get('tab'); const projectView = tab === 'tasks-list' ? 'list' : 'kanban'; + // Fetch labels when component mounts or projectId changes + useEffect(() => { + if (projectId) { + dispatch(fetchLabelsByProject(projectId)); + } + }, [dispatch, projectId]); + const filteredLabelData = useMemo(() => { if (projectView === 'list') { return labels.filter(label => label.name?.toLowerCase().includes(searchQuery.toLowerCase())); @@ -81,9 +88,6 @@ const LabelsFilterDropdown = () => { setTimeout(() => { labelInputRef.current?.focus(); }, 0); - if (projectView === 'kanban') { - dispatch(setBoardLabels(labels)); - } } }; diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx index c9b2d307..85f3a2df 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx @@ -76,7 +76,6 @@ const MembersFilterDropdown = () => { const handleSelectedFiltersCount = useCallback(async (memberId: string | undefined, checked: boolean) => { if (!memberId || !projectId) return; - if (!memberId || !projectId) return; const updateMembers = async (members: Member[], setAction: any, fetchAction: any) => { const updatedMembers = members.map(member => @@ -142,11 +141,12 @@ const MembersFilterDropdown = () => { const handleMembersDropdownOpen = useCallback((open: boolean) => { if (open) { setTimeout(() => membersInputRef.current?.focus(), 0); - if (taskAssignees.length) { + // Only sync the members if board members are empty + if (projectView === 'kanban' && boardTaskAssignees.length === 0 && taskAssignees.length > 0) { dispatch(setBoardMembers(taskAssignees)); } } - }, [dispatch, taskAssignees]); + }, [dispatch, taskAssignees, boardTaskAssignees, projectView]); const buttonStyle = { backgroundColor: selectedCount > 0