feat: persist chat session across page reloads
Session ID saved to localStorage (schaeffler-chat-session). On mount, restores the last session and loads messages from DB. "New Chat" clears the stored session. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,9 +20,20 @@ interface ChatPanelProps {
|
|||||||
|
|
||||||
export default function ChatPanel({ open, onClose, contextType, contextId }: ChatPanelProps) {
|
export default function ChatPanel({ open, onClose, contextType, contextId }: ChatPanelProps) {
|
||||||
const [messages, setMessages] = useState<ChatMessage[]>([])
|
const [messages, setMessages] = useState<ChatMessage[]>([])
|
||||||
const [sessionId, setSessionId] = useState<string | undefined>()
|
const [sessionId, setSessionId] = useState<string | undefined>(() => {
|
||||||
|
// Restore last session from localStorage
|
||||||
|
try { return localStorage.getItem('schaeffler-chat-session') || undefined } catch { return undefined }
|
||||||
|
})
|
||||||
const [input, setInput] = useState('')
|
const [input, setInput] = useState('')
|
||||||
const [showSessions, setShowSessions] = useState(false)
|
const [showSessions, setShowSessions] = useState(false)
|
||||||
|
|
||||||
|
// Persist sessionId to localStorage
|
||||||
|
useEffect(() => {
|
||||||
|
try {
|
||||||
|
if (sessionId) localStorage.setItem('schaeffler-chat-session', sessionId)
|
||||||
|
else localStorage.removeItem('schaeffler-chat-session')
|
||||||
|
} catch { /* ignore */ }
|
||||||
|
}, [sessionId])
|
||||||
const messagesEndRef = useRef<HTMLDivElement>(null)
|
const messagesEndRef = useRef<HTMLDivElement>(null)
|
||||||
const inputRef = useRef<HTMLInputElement>(null)
|
const inputRef = useRef<HTMLInputElement>(null)
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
|
|||||||
Reference in New Issue
Block a user