klg-asutk-app/hooks/useSearchHistory.ts
Yuriy 0150aba4f5 Consolidation: KLG ASUTK + PAPA integration
- Unify API: lib/api.ts uses /api/v1, inbox uses /api/inbox (rewrites)
- Remove localhost refs: openapi, inbox page
- Add rewrites: /api/inbox|tmc -> inbox-server, /api/v1 -> FastAPI
- Add stub routes: knowledge/insights, recommendations, search, log-error
- Transfer from PAPA: prompts (inspection, tmc), scripts, supabase, data/tmc-requests
- Fix inbox-server: ORDER BY created_at, package.json
- Remove redundant app/api/inbox/files route (rewrites handle it)
- knowledge/ in gitignore (large PDFs)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 17:18:31 +03:00

56 lines
1.2 KiB
TypeScript

/**
* Хук для сохранения истории поисков
*/
'use client';
import { useLocalStorage } from './useLocalStorage';
export interface SearchHistoryItem {
query: string;
timestamp: number;
resultCount?: number;
}
const MAX_HISTORY_ITEMS = 20;
export function useSearchHistory() {
const [history, setHistory] = useLocalStorage<SearchHistoryItem[]>(
'searchHistory',
[]
);
const addToHistory = (query: string, resultCount?: number) => {
if (!query.trim()) {
return;
}
setHistory((prev) => {
// Удаляем дубликаты
const filtered = prev.filter((item) => item.query.toLowerCase() !== query.toLowerCase());
// Добавляем новый запрос в начало
const newHistory = [
{ query, timestamp: Date.now(), resultCount },
...filtered,
].slice(0, MAX_HISTORY_ITEMS);
return newHistory;
});
};
const clearHistory = () => {
setHistory([]);
};
const removeFromHistory = (query: string) => {
setHistory((prev) => prev.filter((item) => item.query !== query));
};
return {
history,
addToHistory,
clearHistory,
removeFromHistory,
};
}