Use server-side ?search= API instead of client-side filtering
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user