Skip to content

Commit 9bbeb7c

Browse files
committed
[#67540] BlockNote: work package search does not list the correct wp when searching with ID
https://community.openproject.org/work_packages/67540 Please see https://react.dev/reference/react/useEffect#fetching-data-with-effects and https://maxrozen.com/race-conditions-fetching-data-react-with-useeffect to understand how this is preventing race conditions.
1 parent 187bb78 commit 9bbeb7c

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

lib/hooks/useWorkPackageSearch.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ export function useWorkPackageSearch(
1717
const [error, setError] = useState<string | null>(null);
1818

1919
useEffect(() => {
20+
let active = true;
21+
2022
if (!searchQuery) {
2123
setSearchResults([]);
2224
setLoading(false);
@@ -29,18 +31,27 @@ export function useWorkPackageSearch(
2931
const debouncedSearchQuery = setTimeout(() => {
3032
searchWorkPackages(searchQuery)
3133
.then((results) => {
32-
setSearchResults(results);
34+
if (active) {
35+
setSearchResults(results);
36+
}
3337
})
3438
.catch((err) => {
35-
setError(err.message || "Unknown error");
36-
setSearchResults([]);
39+
if (active) {
40+
setError(err.message || "Unknown error");
41+
setSearchResults([]);
42+
}
3743
})
3844
.finally(() => {
39-
setLoading(false);
45+
if (active) {
46+
setLoading(false);
47+
}
4048
});
4149
}, debounce);
4250

43-
return () => clearTimeout(debouncedSearchQuery);
51+
return () => {
52+
active = false;
53+
clearTimeout(debouncedSearchQuery);
54+
};
4455
}, [searchQuery, debounce]);
4556

4657
return {

0 commit comments

Comments
 (0)