diff --git a/src/main/kotlin/com/sourcegraph/cody/CodyToolWindowContent.kt b/src/main/kotlin/com/sourcegraph/cody/CodyToolWindowContent.kt index aee8743632..eb66498e7f 100644 --- a/src/main/kotlin/com/sourcegraph/cody/CodyToolWindowContent.kt +++ b/src/main/kotlin/com/sourcegraph/cody/CodyToolWindowContent.kt @@ -32,7 +32,8 @@ class CodyToolWindowContent(private val project: Project) { private var codyOnboardingGuidancePanel: CodyOnboardingGuidancePanel? = null private val signInWithSourcegraphPanel = SignInWithSourcegraphPanel(project) - private val chatHistoryPanel = ChatHistoryPanel(project, ::selectChat, ::removeChat, ::removeAllChats) + private val chatHistoryPanel = + ChatHistoryPanel(project, ::selectChat, ::removeChat, ::removeAllChats) private val tabbedPane = TabbedPaneWrapper(CodyAgentService.getInstance(project)) private val currentChatSession: AtomicReference = AtomicReference(null) diff --git a/src/main/kotlin/com/sourcegraph/cody/chat/AgentChatSession.kt b/src/main/kotlin/com/sourcegraph/cody/chat/AgentChatSession.kt index 3b60661c3c..8521927030 100644 --- a/src/main/kotlin/com/sourcegraph/cody/chat/AgentChatSession.kt +++ b/src/main/kotlin/com/sourcegraph/cody/chat/AgentChatSession.kt @@ -82,7 +82,7 @@ private constructor( text, displayText, ) - addMessageAtIndex(humanMessage, index = messages.count()) + addMessageAtIndex(humanMessage, index = messages.count(), shouldUpdateTime = true) val responsePlaceholder = ChatMessage( @@ -220,7 +220,11 @@ private constructor( } @RequiresEdt - private fun addMessageAtIndex(message: ChatMessage, index: Int) { + private fun addMessageAtIndex( + message: ChatMessage, + index: Int, + shouldUpdateTime: Boolean = false + ) { val messageToUpdate = messages.getOrNull(index) if (messageToUpdate != null) { messages[index] = message @@ -229,7 +233,7 @@ private constructor( } chatPanel.addOrUpdateMessage(message, index) - HistoryService.getInstance(project).updateChatMessages(internalId, messages) + HistoryService.getInstance(project).updateChatMessages(internalId, messages, shouldUpdateTime) } @RequiresEdt @@ -295,18 +299,21 @@ private constructor( }) chatSession.addMessageAtIndex( - ChatMessage( - Speaker.HUMAN, - commandId.displayName, - ), - chatSession.messages.count()) + message = + ChatMessage( + speaker = Speaker.HUMAN, + text = commandId.displayName, + ), + index = chatSession.messages.count(), + shouldUpdateTime = true) chatSession.addMessageAtIndex( - ChatMessage( - Speaker.ASSISTANT, - text = "", - displayText = "", - ), - chatSession.messages.count()) + message = + ChatMessage( + Speaker.ASSISTANT, + text = "", + displayText = "", + ), + index = chatSession.messages.count()) AgentChatSessionService.getInstance(project).addSession(chatSession) return chatSession } diff --git a/src/main/kotlin/com/sourcegraph/cody/history/HistoryService.kt b/src/main/kotlin/com/sourcegraph/cody/history/HistoryService.kt index 4e339bcbdb..3d963f7ea0 100644 --- a/src/main/kotlin/com/sourcegraph/cody/history/HistoryService.kt +++ b/src/main/kotlin/com/sourcegraph/cody/history/HistoryService.kt @@ -33,10 +33,14 @@ class HistoryService(private val project: Project) : } @Synchronized - fun updateChatMessages(internalId: String, chatMessages: List) { + fun updateChatMessages( + internalId: String, + chatMessages: List, + shouldUpdateTime: Boolean + ) { val found = getOrCreateChat(internalId) found.messages = chatMessages.map(::convertToMessageState).toMutableList() - if (chatMessages.lastOrNull()?.speaker == Speaker.HUMAN) { + if (shouldUpdateTime) { found.setUpdatedTimeAt(LocalDateTime.now()) } synchronized(listeners) { listeners.forEach { it(found) } }