From e00b7c940fedab16f4d8876102021518c315d906 Mon Sep 17 00:00:00 2001 From: Dorian Koch <doriank@fsmpi.rwth-aachen.de> Date: Thu, 8 Aug 2024 20:03:40 +0200 Subject: [PATCH] Fix search misbehaving, closes #53 --- src/components/DefaultLayout.tsx | 4 ++-- src/pages/search.tsx | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/DefaultLayout.tsx b/src/components/DefaultLayout.tsx index 4c6f56a..cd84d36 100644 --- a/src/components/DefaultLayout.tsx +++ b/src/components/DefaultLayout.tsx @@ -291,8 +291,8 @@ function Search({ className }: { className?: string }) { e.preventDefault(); let form = e.currentTarget; let query = form.query.value; - if (query === "") router.push("/search"); - router.push("/search?q=" + encodeURIComponent(query)); + const newPath = query === "" ? "/search" : "/search?q=" + encodeURIComponent(query); + if (router.pathname !== newPath) router.push(newPath); }; const onChange = (e: React.ChangeEvent<HTMLInputElement>) => { setQuery(e.target.value); diff --git a/src/pages/search.tsx b/src/pages/search.tsx index d8c171d..5b7b0e9 100644 --- a/src/pages/search.tsx +++ b/src/pages/search.tsx @@ -62,7 +62,9 @@ export default function Search() { // TODO: this code needs more cleanup, variable names are not very descriptive useEffect(() => { - setQuery(params.get("q")); + if (params.has("q")) setQuery(params.get("q")); + else if (query !== undefined && query !== null && query.length > 0) setQuery(""); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [params]); const updateSearchResults = () => { @@ -91,7 +93,7 @@ export default function Search() { }; // eslint-disable-next-line react-hooks/exhaustive-deps - useEffect(updateSearchResults, [query, api, router]); + useEffect(updateSearchResults, [query, api]); const [updateQueryDeferred, updateQueryNow] = useDebounce(() => { setQuery(workingQuery.current); -- GitLab