From c36d4dd566fc95b6438480752179fafdeede88c9 Mon Sep 17 00:00:00 2001 From: Carl-Robert Linnupuu Date: Fri, 8 Dec 2023 03:05:01 +0200 Subject: [PATCH] fix: redundant chat tab creation on provider change --- .../chat/standard/ModelComboBoxAction.java | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/standard/ModelComboBoxAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/standard/ModelComboBoxAction.java index 49ff16d9..0b515f37 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/standard/ModelComboBoxAction.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/standard/ModelComboBoxAction.java @@ -9,6 +9,8 @@ import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.actionSystem.ex.ComboBoxAction; import ee.carlrobert.codegpt.Icons; import ee.carlrobert.codegpt.completions.llama.LlamaModel; +import ee.carlrobert.codegpt.conversations.ConversationService; +import ee.carlrobert.codegpt.conversations.ConversationsState; import ee.carlrobert.codegpt.settings.service.ServiceType; import ee.carlrobert.codegpt.settings.state.LlamaSettingsState; import ee.carlrobert.codegpt.settings.state.OpenAISettingsState; @@ -125,14 +127,28 @@ public class ModelComboBoxAction extends ComboBoxAction { @Override public void actionPerformed(@NotNull AnActionEvent e) { - settings.setSelectedService(serviceType); - comboBoxPresentation.setIcon(icon); - comboBoxPresentation.setText(label); - onAddNewTab.run(); + handleProviderChange(serviceType, label, icon, comboBoxPresentation); } }; } + private void handleProviderChange( + ServiceType serviceType, + String label, + Icon icon, + Presentation comboBoxPresentation) { + settings.setSelectedService(serviceType); + comboBoxPresentation.setIcon(icon); + comboBoxPresentation.setText(label); + + var currentConversation = ConversationsState.getCurrentConversation(); + if (currentConversation != null && !currentConversation.getMessages().isEmpty()) { + onAddNewTab.run(); + } else { + ConversationService.getInstance().startConversation(); + } + } + private AnAction createOpenAIModelAction( OpenAIChatCompletionModel model, Presentation comboBoxPresentation) { @@ -147,11 +163,12 @@ public class ModelComboBoxAction extends ComboBoxAction { @Override public void actionPerformed(@NotNull AnActionEvent e) { - settings.setSelectedService(ServiceType.OPENAI); openAISettings.setModel(model.getCode()); - comboBoxPresentation.setIcon(Icons.OpenAI); - comboBoxPresentation.setText(model.getDescription()); - onAddNewTab.run(); + handleProviderChange( + ServiceType.OPENAI, + model.getDescription(), + Icons.OpenAI, + comboBoxPresentation); } }; }