mirror of
https://github.com/leonvanzyl/autocoder.git
synced 2026-01-31 06:42:06 +00:00
fix: address performance and code quality issues in conversation history
Performance improvements: - Fix N+1 query in get_conversations() using COUNT subquery instead of len(c.messages) which triggered lazy loading for each conversation - Add SQLAlchemy engine caching to avoid creating new database connections on every request - Add React.memo to ChatMessage component to prevent unnecessary re-renders during message streaming - Move BOLD_REGEX to module scope to avoid recreating on each render Code quality improvements: - Remove 10+ console.log debug statements from AssistantChat.tsx and AssistantPanel.tsx that were left from development - Add user feedback for delete errors in ConversationHistory - dialog now stays open and shows error message instead of silently failing - Update ConfirmDialog to accept ReactNode for message prop to support rich error content These changes address issues identified in the code review of PR #74 (conversation history feature). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -78,22 +78,13 @@ export function AssistantChat({
|
||||
|
||||
// Start or resume the chat session when component mounts or conversationId changes
|
||||
useEffect(() => {
|
||||
console.log('[AssistantChat] useEffect running:', {
|
||||
conversationId,
|
||||
isLoadingConversation,
|
||||
lastRef: lastConversationIdRef.current,
|
||||
hasStarted: hasStartedRef.current
|
||||
})
|
||||
|
||||
// Skip if we're loading conversation details
|
||||
if (isLoadingConversation) {
|
||||
console.log('[AssistantChat] Skipping - loading conversation')
|
||||
return
|
||||
}
|
||||
|
||||
// Only start if conversationId has actually changed
|
||||
if (lastConversationIdRef.current === conversationId && hasStartedRef.current) {
|
||||
console.log('[AssistantChat] Skipping - same conversationId')
|
||||
return
|
||||
}
|
||||
|
||||
@@ -101,23 +92,15 @@ export function AssistantChat({
|
||||
const isSwitching = lastConversationIdRef.current !== undefined &&
|
||||
lastConversationIdRef.current !== conversationId
|
||||
|
||||
console.log('[AssistantChat] Processing conversation change:', {
|
||||
from: lastConversationIdRef.current,
|
||||
to: conversationId,
|
||||
isSwitching
|
||||
})
|
||||
|
||||
lastConversationIdRef.current = conversationId
|
||||
hasStartedRef.current = true
|
||||
|
||||
// Clear existing messages when switching conversations
|
||||
if (isSwitching) {
|
||||
console.log('[AssistantChat] Clearing messages for conversation switch')
|
||||
clearMessages()
|
||||
}
|
||||
|
||||
// Start the session with the conversation ID (or null for new)
|
||||
console.log('[AssistantChat] Starting session with conversationId:', conversationId)
|
||||
start(conversationId)
|
||||
}, [conversationId, isLoadingConversation, start, clearMessages])
|
||||
|
||||
@@ -129,7 +112,6 @@ export function AssistantChat({
|
||||
|
||||
// Handle selecting a conversation from history
|
||||
const handleSelectConversation = useCallback((id: number) => {
|
||||
console.log('[AssistantChat] handleSelectConversation called with id:', id)
|
||||
setShowHistory(false)
|
||||
onSelectConversation?.(id)
|
||||
}, [onSelectConversation])
|
||||
|
||||
Reference in New Issue
Block a user