Signed-off-by: OpenClaw Bot <ai-agent@topdoglabs.com>

This commit is contained in:
OpenClaw Bot 2026-02-23 18:07:57 -06:00
parent e46e92362e
commit 18e74106df

View File

@ -103,24 +103,39 @@ export function QuickSearch() {
useEffect(() => {
if (!open || query.length < 2) {
setResults([]);
setLoading(false);
return;
}
setLoading(true);
setResults([]);
let cancelled = false;
const timer = setTimeout(async () => {
try {
const res = await fetch(`/api/search?q=${encodeURIComponent(query)}`);
const data = await res.json();
setResults(data.results || []);
if (!res.ok) {
throw new Error(`Search request failed with status ${res.status}`);
}
const data = (await res.json()) as { results?: SearchResult[] };
if (!cancelled) {
setResults(Array.isArray(data.results) ? data.results : []);
}
} catch (err) {
console.error("Search error:", err);
if (!cancelled) {
setResults([]);
}
} finally {
if (!cancelled) {
setLoading(false);
}
}
}, 150); // 150ms debounce
return () => clearTimeout(timer);
return () => {
cancelled = true;
clearTimeout(timer);
};
}, [query, open]);
// Keyboard shortcut
@ -202,6 +217,8 @@ export function QuickSearch() {
{typeResults.slice(0, 5).map((result) => (
<CommandItem
key={`${result.type}-${result.id}`}
value={`${result.title} ${result.snippet ?? ""} ${result.status ?? ""} ${typeLabels[result.type]}`}
keywords={[query]}
onSelect={() => handleResultSelect(result)}
>
{result.type === "task" ? (