From 3c59713c257ab44a9537d4ebe102f3df9467987f Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 21 May 2026 22:50:53 +0200 Subject: [PATCH] Use server-side ?search= API instead of client-side filtering Co-Authored-By: Claude Sonnet 4.6 --- src/components/RecordModal.jsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/components/RecordModal.jsx b/src/components/RecordModal.jsx index b00bedf..1e295d2 100644 --- a/src/components/RecordModal.jsx +++ b/src/components/RecordModal.jsx @@ -126,18 +126,16 @@ function RelationManager({ recordId, rel }) { if (!search.trim()) { setSearchResults([]); return; } const timer = setTimeout(() => { setSearching(true); - apiFetch(`${rel.searchEndpoint}?limit=500&offset=0`) + const q = encodeURIComponent(search.trim()); + apiFetch(`${rel.searchEndpoint}?search=${q}&limit=20&offset=0`) .then(data => { const arr = Array.isArray(data) ? data : []; - const q = search.toLowerCase(); const linked = new Set((items || []).map(i => i.id)); - setSearchResults( - arr.filter(r => rel.searchLabel(r).toLowerCase().includes(q) && !linked.has(r.id)) - ); + setSearchResults(arr.filter(r => !linked.has(r.id))); }) .catch(() => setSearchResults([])) .finally(() => setSearching(false)); - }, 250); + }, 300); return () => clearTimeout(timer); }, [search, showSearch, items, rel]);