import { useState, useCallback } from 'react'; export interface ChatMessage { id: string; role: 'user' | 'assistant'; content: string; timestamp: number; } interface UseChatHistoryReturn { messages: ChatMessage[]; addMessage: (role: 'user' | 'assistant', content: string) => void; clearMessages: () => void; deleteMessage: (id: string) => void; updateMessage: (id: string, content: string) => void; } export function useChatHistory(storageKey: string = 'chat-history'): UseChatHistoryReturn { const [messages, setMessages] = useState(() => { try { const stored = localStorage.getItem(storageKey); return stored ? JSON.parse(stored) : []; } catch { return []; } }); const saveToStorage = useCallback((newMessages: ChatMessage[]) => { try { localStorage.setItem(storageKey, JSON.stringify(newMessages)); } catch (error) { console.error('Failed to save chat history:', error); } }, [storageKey]); const addMessage = useCallback((role: 'user' | 'assistant', content: string) => { const newMessage: ChatMessage = { id: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, role, content, timestamp: Date.now(), }; setMessages((prev) => { const updated = [...prev, newMessage]; saveToStorage(updated); return updated; }); }, [saveToStorage]); const clearMessages = useCallback(() => { setMessages([]); localStorage.removeItem(storageKey); }, [storageKey]); const deleteMessage = useCallback((id: string) => { setMessages((prev) => { const updated = prev.filter((msg) => msg.id !== id); saveToStorage(updated); return updated; }); }, [saveToStorage]); const updateMessage = useCallback((id: string, content: string) => { setMessages((prev) => { const updated = prev.map((msg) => msg.id === id ? { ...msg, content } : msg ); saveToStorage(updated); return updated; }); }, [saveToStorage]); return { messages, addMessage, clearMessages, deleteMessage, updateMessage, }; }