chore: upgrade Node.js runtime to v24 across codebase #419
@@ -28,6 +28,7 @@ export function FilterBar({
|
||||
const [searchValue, setSearchValue] = useState(initialFilters.search ?? "");
|
||||
const [showStatusDropdown, setShowStatusDropdown] = useState(false);
|
||||
const [showPriorityDropdown, setShowPriorityDropdown] = useState(false);
|
||||
const isFirstRender = useRef(true);
|
||||
|
||||
// Stable ref for onFilterChange to avoid re-triggering the debounce effect
|
||||
const onFilterChangeRef = useRef(onFilterChange);
|
||||
@@ -37,6 +38,12 @@ export function FilterBar({
|
||||
|
||||
// Debounced search
|
||||
useEffect(() => {
|
||||
// Skip callback on first render to avoid calling with initial empty value
|
||||
if (isFirstRender.current) {
|
||||
isFirstRender.current = false;
|
||||
return;
|
||||
}
|
||||
|
||||
const timer = setTimeout(() => {
|
||||
setFilters((prevFilters) => {
|
||||
if (searchValue !== prevFilters.search) {
|
||||
|
||||
@@ -140,7 +140,7 @@ describe("TaskList", (): void => {
|
||||
|
||||
render(<TaskList tasks={largeTasks} isLoading={false} />);
|
||||
expect(screen.getByRole("main")).toBeInTheDocument();
|
||||
});
|
||||
}, 10000); // 10 second timeout for large list rendering
|
||||
|
||||
it("should handle tasks with very long titles", (): void => {
|
||||
const firstTask = mockTasks[0];
|
||||
|
||||
Reference in New Issue
Block a user