Skip to content

Commit 3613ad1

Browse files
authored
Merge pull request #1326 from hydralauncher/fix/adding-debounce-to-search
fix: adding debounce to search
2 parents e50cb74 + 36800c6 commit 3613ad1

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

src/renderer/src/pages/catalogue/catalogue.tsx

+26-15
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { Pagination } from "./pagination";
2020
import { useCatalogue } from "@renderer/hooks/use-catalogue";
2121
import { GameItem } from "./game-item";
2222
import { FilterItem } from "./filter-item";
23+
import { debounce } from "lodash-es";
2324

2425
const filterCategoryColors = {
2526
genres: "hsl(262deg 50% 47%)",
@@ -58,26 +59,36 @@ export default function Catalogue() {
5859

5960
const { getRepacksForObjectId } = useRepacks();
6061

62+
const debouncedSearch = useRef(
63+
debounce(async (filters, pageSize, offset) => {
64+
const abortController = new AbortController();
65+
abortControllerRef.current = abortController;
66+
67+
const response = await window.electron.searchGames(
68+
filters,
69+
pageSize,
70+
offset
71+
);
72+
73+
if (abortController.signal.aborted) return;
74+
75+
setResults(response.edges);
76+
setItemsCount(response.count);
77+
setIsLoading(false);
78+
}, 500)
79+
).current;
80+
6181
useEffect(() => {
6282
setResults([]);
6383
setIsLoading(true);
6484
abortControllerRef.current?.abort();
6585

66-
const abortController = new AbortController();
67-
abortControllerRef.current = abortController;
68-
69-
window.electron
70-
.searchGames(filters, PAGE_SIZE, (page - 1) * PAGE_SIZE)
71-
.then((response) => {
72-
if (abortController.signal.aborted) {
73-
return;
74-
}
75-
76-
setResults(response.edges);
77-
setItemsCount(response.count);
78-
setIsLoading(false);
79-
});
80-
}, [filters, page, dispatch]);
86+
debouncedSearch(filters, PAGE_SIZE, (page - 1) * PAGE_SIZE);
87+
88+
return () => {
89+
debouncedSearch.cancel();
90+
};
91+
}, [filters, page, debouncedSearch]);
8192

8293
useEffect(() => {
8394
downloadSourcesTable.toArray().then((sources) => {

0 commit comments

Comments
 (0)