fix(web): shelf search debounce merges against live searchParams (no lost sort/group clicks)

This commit is contained in:
2026-09-08 19:08:05 +08:00
parent b1c0db6c03
commit 273f35a42f
+5 -3
View File
@@ -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 }) });