fix(web): shelf search debounce merges against live searchParams (no lost sort/group clicks)
This commit is contained in:
@@ -98,13 +98,15 @@ export default function Shelf() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (qRaw.trim() === serverQ) return;
|
if (qRaw.trim() === serverQ) return;
|
||||||
const t = setTimeout(() => {
|
const t = setTimeout(() => {
|
||||||
const next = new URLSearchParams(sp);
|
setSp((prev) => {
|
||||||
|
const next = new URLSearchParams(prev);
|
||||||
if (qRaw.trim()) next.set("q", qRaw.trim());
|
if (qRaw.trim()) next.set("q", qRaw.trim());
|
||||||
else next.delete("q");
|
else next.delete("q");
|
||||||
setSp(next, { replace: true });
|
return next;
|
||||||
|
}, { replace: true });
|
||||||
}, 300);
|
}, 300);
|
||||||
return () => clearTimeout(t);
|
return () => clearTimeout(t);
|
||||||
}, [qRaw]); // eslint-disable-line
|
}, [qRaw, serverQ, sp, setSp]);
|
||||||
|
|
||||||
const libsQ = useQuery({ queryKey: ["libraries"], queryFn: api.listLibraries });
|
const libsQ = useQuery({ queryKey: ["libraries"], queryFn: api.listLibraries });
|
||||||
const booksQ = useQuery({ queryKey: ["books", lib, serverQ], queryFn: () => api.listBooks({ library: lib || undefined, q: serverQ }) });
|
const booksQ = useQuery({ queryKey: ["books", lib, serverQ], queryFn: () => api.listBooks({ library: lib || undefined, q: serverQ }) });
|
||||||
|
|||||||
Reference in New Issue
Block a user