From 7dfe62b96da326c6eefcea63228f857bf0e2c557 Mon Sep 17 00:00:00 2001 From: Carl-Robert Date: Thu, 5 Oct 2023 02:43:06 +0300 Subject: [PATCH] Codebase refactoring (#226) * Refactor codebase --- .../codegpt/PluginStartupActivity.java | 30 ++++++------- .../editor => }/actions/TrackableAction.java | 4 +- .../actions/editor/CustomPromptAction.java | 2 +- .../actions/editor/EditorActionsUtil.java | 2 +- .../toolwindow/DeleteConversationAction.java | 5 +-- .../you/YouApiClient.java} | 8 ++-- .../YouSerpResult.java} | 6 +-- .../completions/you/YouUserManager.java | 43 +++++++++++++++++++ .../you/auth/AuthenticationHandler.java | 12 ++++++ .../you}/auth/AuthenticationNotifier.java | 2 +- .../you}/auth/SessionVerificationJob.java | 4 +- .../you}/auth/SignedOutNotifier.java | 2 +- .../you/auth/YouAuthenticationError.java} | 6 +-- .../you/auth/YouAuthenticationService.java} | 34 +++++++-------- .../response/YouAuthenticationResponse.java | 18 ++++++++ .../YouAuthenticationResponseData.java} | 18 ++++---- .../you/auth/response/YouEmail.java} | 6 +-- .../you/auth/response/YouName.java} | 6 +-- .../you/auth/response/YouSession.java} | 6 +-- .../you/auth/response/YouUser.java} | 18 ++++---- .../conversations/message/Message.java | 8 ++-- ...anager.java => YouCredentialsManager.java} | 8 ++-- .../CodebaseIndexingAction.java | 4 +- .../codegpt/indexes/CodebaseIndexingTask.java | 2 +- .../indexes/FolderStructureTreePanel.java | 2 +- .../settings/ServiceSelectionForm.java | 8 ++-- .../codegpt/settings/SettingsComponent.java | 10 ++--- ...nel.java => YouServiceSelectionPanel.java} | 41 +++++++++--------- .../chat/BaseChatToolWindowTabPanel.java | 15 ++++--- .../components/ChatMessageResponseBody.java | 12 +++--- .../components}/IconActionButton.java | 2 +- .../chat/components/ResponsePanel.java | 1 - .../chat/{ => components}/SmartScroller.java | 2 +- .../ContextualChatToolWindowLandingPanel.java | 8 ++-- .../ContextualChatToolWindowPanel.java | 2 +- .../ContextualChatToolWindowTabPanel.java | 14 +++--- ...abPanelEditor.java => ResponseEditor.java} | 21 ++++----- .../chat/editor/actions/CopyAction.java | 1 + .../chat/editor/actions/DiffAction.java | 3 +- .../chat/editor/actions/EditAction.java | 1 + .../chat/editor/actions/NewFileAction.java | 5 +-- .../actions/ReplaceSelectionAction.java | 1 + .../StandardChatToolWindowTabPanel.java | 2 +- .../conversations/ConversationPanel.java | 2 +- .../ConversationsToolWindow.java | 5 ++- .../carlrobert/codegpt/user/UserManager.java | 43 ------------------- .../user/auth/AuthenticationHandler.java | 12 ------ .../auth/response/AuthenticationResponse.java | 18 -------- .../FileExtensionLanguageDetails.java | 2 +- .../codegpt/util/{ => file}/FileUtils.java | 2 +- .../LanguageFileExtensionDetails.java | 2 +- 51 files changed, 244 insertions(+), 247 deletions(-) rename src/main/java/ee/carlrobert/codegpt/{toolwindow/chat/editor => }/actions/TrackableAction.java (90%) rename src/main/java/ee/carlrobert/codegpt/{user/ApiClient.java => completions/you/YouApiClient.java} (91%) rename src/main/java/ee/carlrobert/codegpt/completions/{SerpResult.java => you/YouSerpResult.java} (89%) create mode 100644 src/main/java/ee/carlrobert/codegpt/completions/you/YouUserManager.java create mode 100644 src/main/java/ee/carlrobert/codegpt/completions/you/auth/AuthenticationHandler.java rename src/main/java/ee/carlrobert/codegpt/{user => completions/you}/auth/AuthenticationNotifier.java (82%) rename src/main/java/ee/carlrobert/codegpt/{user => completions/you}/auth/SessionVerificationJob.java (82%) rename src/main/java/ee/carlrobert/codegpt/{user => completions/you}/auth/SignedOutNotifier.java (79%) rename src/main/java/ee/carlrobert/codegpt/{user/auth/AuthenticationError.java => completions/you/auth/YouAuthenticationError.java} (66%) rename src/main/java/ee/carlrobert/codegpt/{user/auth/AuthenticationService.java => completions/you/auth/YouAuthenticationService.java} (68%) create mode 100644 src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouAuthenticationResponse.java rename src/main/java/ee/carlrobert/codegpt/{user/auth/response/AuthenticationResponseData.java => completions/you/auth/response/YouAuthenticationResponseData.java} (63%) rename src/main/java/ee/carlrobert/codegpt/{user/auth/response/Email.java => completions/you/auth/response/YouEmail.java} (86%) rename src/main/java/ee/carlrobert/codegpt/{user/auth/response/Name.java => completions/you/auth/response/YouName.java} (87%) rename src/main/java/ee/carlrobert/codegpt/{user/auth/response/Session.java => completions/you/auth/response/YouSession.java} (90%) rename src/main/java/ee/carlrobert/codegpt/{user/auth/response/User.java => completions/you/auth/response/YouUser.java} (57%) rename src/main/java/ee/carlrobert/codegpt/credentials/{UserCredentialsManager.java => YouCredentialsManager.java} (78%) rename src/main/java/ee/carlrobert/codegpt/{actions => indexes}/CodebaseIndexingAction.java (85%) rename src/main/java/ee/carlrobert/codegpt/settings/{UserDetailsSettingsPanel.java => YouServiceSelectionPanel.java} (83%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/{ => chat/components}/IconActionButton.java (93%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => components}/SmartScroller.java (98%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/{ChatToolWindowTabPanelEditor.java => ResponseEditor.java} (90%) delete mode 100644 src/main/java/ee/carlrobert/codegpt/user/UserManager.java delete mode 100644 src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationHandler.java delete mode 100644 src/main/java/ee/carlrobert/codegpt/user/auth/response/AuthenticationResponse.java rename src/main/java/ee/carlrobert/codegpt/util/{ => file}/FileExtensionLanguageDetails.java (89%) rename src/main/java/ee/carlrobert/codegpt/util/{ => file}/FileUtils.java (99%) rename src/main/java/ee/carlrobert/codegpt/util/{ => file}/LanguageFileExtensionDetails.java (92%) diff --git a/src/main/java/ee/carlrobert/codegpt/PluginStartupActivity.java b/src/main/java/ee/carlrobert/codegpt/PluginStartupActivity.java index 78740ec5..5404c6c1 100644 --- a/src/main/java/ee/carlrobert/codegpt/PluginStartupActivity.java +++ b/src/main/java/ee/carlrobert/codegpt/PluginStartupActivity.java @@ -7,14 +7,14 @@ import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerListener; import com.intellij.openapi.startup.StartupActivity; import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil; -import ee.carlrobert.codegpt.credentials.UserCredentialsManager; +import ee.carlrobert.codegpt.completions.you.YouUserManager; +import ee.carlrobert.codegpt.credentials.YouCredentialsManager; import ee.carlrobert.codegpt.settings.state.SettingsState; -import ee.carlrobert.codegpt.user.UserManager; -import ee.carlrobert.codegpt.user.auth.AuthenticationError; -import ee.carlrobert.codegpt.user.auth.AuthenticationHandler; -import ee.carlrobert.codegpt.user.auth.AuthenticationService; -import ee.carlrobert.codegpt.user.auth.SessionVerificationJob; -import ee.carlrobert.codegpt.user.auth.response.AuthenticationResponse; +import ee.carlrobert.codegpt.completions.you.auth.YouAuthenticationError; +import ee.carlrobert.codegpt.completions.you.auth.AuthenticationHandler; +import ee.carlrobert.codegpt.completions.you.auth.YouAuthenticationService; +import ee.carlrobert.codegpt.completions.you.auth.SessionVerificationJob; +import ee.carlrobert.codegpt.completions.you.auth.response.YouAuthenticationResponse; import ee.carlrobert.codegpt.util.OverlayUtils; import org.jetbrains.annotations.NotNull; import org.quartz.JobBuilder; @@ -33,9 +33,9 @@ public class PluginStartupActivity implements StartupActivity { public void runActivity(@NotNull Project project) { EditorActionsUtil.refreshActions(); - var authenticationResponse = UserManager.getInstance().getAuthenticationResponse(); + var authenticationResponse = YouUserManager.getInstance().getAuthenticationResponse(); if (authenticationResponse == null) { - handleAuthentication(); + handleYouServiceAuthentication(); } else { startSessionVerificationJob(); } @@ -77,18 +77,18 @@ public class PluginStartupActivity implements StartupActivity { } } - private void handleAuthentication() { + private void handleYouServiceAuthentication() { var settings = SettingsState.getInstance(); if (!settings.isPreviouslySignedIn()) { return; } - var password = UserCredentialsManager.getInstance().getAccountPassword(); + var password = YouCredentialsManager.getInstance().getAccountPassword(); if (!settings.getEmail().isEmpty() && password != null && !password.isEmpty()) { - AuthenticationService.getInstance() + YouAuthenticationService.getInstance() .signInAsync(settings.getEmail(), password, new AuthenticationHandler() { @Override - public void handleAuthenticated(AuthenticationResponse authenticationResponse) { + public void handleAuthenticated(YouAuthenticationResponse authenticationResponse) { OverlayUtils.showNotification("Authentication successful.", NotificationType.INFORMATION); startSessionVerificationJob(); } @@ -99,8 +99,8 @@ public class PluginStartupActivity implements StartupActivity { } @Override - public void handleError(AuthenticationError authenticationError) { - OverlayUtils.showNotification(authenticationError.getErrorMessage(), NotificationType.ERROR); + public void handleError(YouAuthenticationError youAuthenticationError) { + OverlayUtils.showNotification(youAuthenticationError.getErrorMessage(), NotificationType.ERROR); } }); } diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/TrackableAction.java b/src/main/java/ee/carlrobert/codegpt/actions/TrackableAction.java similarity index 90% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/TrackableAction.java rename to src/main/java/ee/carlrobert/codegpt/actions/TrackableAction.java index 2a5bcd45..0975640c 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/TrackableAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/TrackableAction.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat.editor.actions; +package ee.carlrobert.codegpt.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; @@ -24,7 +24,7 @@ public abstract class TrackableAction extends AnAction { this.actionType = actionType; } - abstract void handleAction(@NotNull AnActionEvent e); + public abstract void handleAction(@NotNull AnActionEvent e); @Override public void actionPerformed(@NotNull AnActionEvent e) { diff --git a/src/main/java/ee/carlrobert/codegpt/actions/editor/CustomPromptAction.java b/src/main/java/ee/carlrobert/codegpt/actions/editor/CustomPromptAction.java index 3558abee..e9f19a1b 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/editor/CustomPromptAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/editor/CustomPromptAction.java @@ -12,7 +12,7 @@ import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UI; import ee.carlrobert.codegpt.conversations.message.Message; import ee.carlrobert.codegpt.toolwindow.chat.standard.StandardChatToolWindowContentManager; -import ee.carlrobert.codegpt.util.FileUtils; +import ee.carlrobert.codegpt.util.file.FileUtils; import ee.carlrobert.codegpt.util.SwingUtils; import javax.swing.JComponent; import javax.swing.JTextArea; diff --git a/src/main/java/ee/carlrobert/codegpt/actions/editor/EditorActionsUtil.java b/src/main/java/ee/carlrobert/codegpt/actions/editor/EditorActionsUtil.java index a2bc0d8a..a43fc7d4 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/editor/EditorActionsUtil.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/editor/EditorActionsUtil.java @@ -13,7 +13,7 @@ import com.intellij.openapi.project.Project; import ee.carlrobert.codegpt.conversations.message.Message; import ee.carlrobert.codegpt.settings.configuration.ConfigurationState; import ee.carlrobert.codegpt.toolwindow.chat.standard.StandardChatToolWindowContentManager; -import ee.carlrobert.codegpt.util.FileUtils; +import ee.carlrobert.codegpt.util.file.FileUtils; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.text.CaseUtils; diff --git a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteConversationAction.java b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteConversationAction.java index 84ad136a..2ec82e39 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteConversationAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteConversationAction.java @@ -6,9 +6,8 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.ui.Messages; import ee.carlrobert.codegpt.actions.ActionType; import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil; -import ee.carlrobert.codegpt.telemetry.TelemetryAction; -import ee.carlrobert.codegpt.conversations.ConversationService; import ee.carlrobert.codegpt.conversations.ConversationsState; +import ee.carlrobert.codegpt.telemetry.TelemetryAction; import ee.carlrobert.codegpt.util.OverlayUtils; import org.jetbrains.annotations.NotNull; @@ -35,8 +34,6 @@ public class DeleteConversationAction extends AnAction { TelemetryAction.IDE_ACTION.createActionMessage() .property("action", ActionType.DELETE_CONVERSATION.name()) .send(); - - ConversationService.getInstance().deleteSelectedConversation(); onDelete.run(); } } diff --git a/src/main/java/ee/carlrobert/codegpt/user/ApiClient.java b/src/main/java/ee/carlrobert/codegpt/completions/you/YouApiClient.java similarity index 91% rename from src/main/java/ee/carlrobert/codegpt/user/ApiClient.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/YouApiClient.java index e4139e22..4d4f1918 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/ApiClient.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/YouApiClient.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.user; +package ee.carlrobert.codegpt.completions.you; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -14,13 +14,13 @@ import okhttp3.Request; import okhttp3.RequestBody; @Service -public final class ApiClient { +public final class YouApiClient { private static final String API_BASE_URL = "https://web.stytch.com/sdk"; private static final String publicToken = "public-token-live-507a52ad-7e69-496b-aee0-1c9863c7c819"; - public static ApiClient getInstance() { - return ApplicationManager.getApplication().getService(ApiClient.class); + public static YouApiClient getInstance() { + return ApplicationManager.getApplication().getService(YouApiClient.class); } public void authenticate(String email, String password, Callback callback) { diff --git a/src/main/java/ee/carlrobert/codegpt/completions/SerpResult.java b/src/main/java/ee/carlrobert/codegpt/completions/you/YouSerpResult.java similarity index 89% rename from src/main/java/ee/carlrobert/codegpt/completions/SerpResult.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/YouSerpResult.java index 18382513..370c2b8e 100644 --- a/src/main/java/ee/carlrobert/codegpt/completions/SerpResult.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/YouSerpResult.java @@ -1,9 +1,9 @@ -package ee.carlrobert.codegpt.completions; +package ee.carlrobert.codegpt.completions.you; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -public class SerpResult { +public class YouSerpResult { private final String url; private final String name; @@ -11,7 +11,7 @@ public class SerpResult { private final String snippetSource; @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) - public SerpResult( + public YouSerpResult( @JsonProperty("url") String url, @JsonProperty("name") String name, @JsonProperty("snippet") String snippet, diff --git a/src/main/java/ee/carlrobert/codegpt/completions/you/YouUserManager.java b/src/main/java/ee/carlrobert/codegpt/completions/you/YouUserManager.java new file mode 100644 index 00000000..ac010c2c --- /dev/null +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/YouUserManager.java @@ -0,0 +1,43 @@ +package ee.carlrobert.codegpt.completions.you; + +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.components.Service; +import ee.carlrobert.codegpt.completions.you.auth.SignedOutNotifier; +import ee.carlrobert.codegpt.completions.you.auth.response.YouAuthenticationResponse; + +@Service +public final class YouUserManager { + + private YouAuthenticationResponse authenticationResponse; + + private YouUserManager() { + } + + public static YouUserManager getInstance() { + return ApplicationManager.getApplication().getService(YouUserManager.class); + } + + public YouAuthenticationResponse getAuthenticationResponse() { + return authenticationResponse; + } + + public void setAuthenticationResponse(YouAuthenticationResponse authenticationResponse) { + this.authenticationResponse = authenticationResponse; + } + + public void clearSession() { + authenticationResponse = null; + + ApplicationManager.getApplication().getMessageBus() + .syncPublisher(SignedOutNotifier.SIGNED_OUT_TOPIC) + .signedOut(); + } + + public boolean isSubscribed() { + return true; // TODO + } + + public boolean isAuthenticated() { + return authenticationResponse != null; + } +} diff --git a/src/main/java/ee/carlrobert/codegpt/completions/you/auth/AuthenticationHandler.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/AuthenticationHandler.java new file mode 100644 index 00000000..cfe9d349 --- /dev/null +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/AuthenticationHandler.java @@ -0,0 +1,12 @@ +package ee.carlrobert.codegpt.completions.you.auth; + +import ee.carlrobert.codegpt.completions.you.auth.response.YouAuthenticationResponse; + +public interface AuthenticationHandler { + + void handleAuthenticated(YouAuthenticationResponse authenticationResponse); + + void handleGenericError(); + + void handleError(YouAuthenticationError authenticationError); +} diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationNotifier.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/AuthenticationNotifier.java similarity index 82% rename from src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationNotifier.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/AuthenticationNotifier.java index 9bf05001..253eb275 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationNotifier.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/AuthenticationNotifier.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.user.auth; +package ee.carlrobert.codegpt.completions.you.auth; import com.intellij.util.messages.Topic; diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/SessionVerificationJob.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/SessionVerificationJob.java similarity index 82% rename from src/main/java/ee/carlrobert/codegpt/user/auth/SessionVerificationJob.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/SessionVerificationJob.java index d6b75e8a..c6105129 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/SessionVerificationJob.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/SessionVerificationJob.java @@ -1,7 +1,6 @@ -package ee.carlrobert.codegpt.user.auth; +package ee.carlrobert.codegpt.completions.you.auth; import com.intellij.openapi.diagnostic.Logger; -import ee.carlrobert.codegpt.user.UserManager; import java.time.LocalDateTime; import org.quartz.Job; import org.quartz.JobExecutionContext; @@ -13,5 +12,6 @@ public class SessionVerificationJob implements Job { @Override public void execute(JobExecutionContext context) { LOG.info("Refreshing token: " + LocalDateTime.now()); + // TODO: Not implemented } } diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/SignedOutNotifier.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/SignedOutNotifier.java similarity index 79% rename from src/main/java/ee/carlrobert/codegpt/user/auth/SignedOutNotifier.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/SignedOutNotifier.java index ca2633ce..1c3ffca7 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/SignedOutNotifier.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/SignedOutNotifier.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.user.auth; +package ee.carlrobert.codegpt.completions.you.auth; import com.intellij.util.messages.Topic; diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationError.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/YouAuthenticationError.java similarity index 66% rename from src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationError.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/YouAuthenticationError.java index faee2da2..ff07b5b3 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationError.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/YouAuthenticationError.java @@ -1,15 +1,15 @@ -package ee.carlrobert.codegpt.user.auth; +package ee.carlrobert.codegpt.completions.you.auth; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @JsonIgnoreProperties(ignoreUnknown = true) -public class AuthenticationError { +public class YouAuthenticationError { private final String errorType; private final String errorMessage; - public AuthenticationError(@JsonProperty("error_type") String errorType, @JsonProperty("error_message") String errorMessage) { + public YouAuthenticationError(@JsonProperty("error_type") String errorType, @JsonProperty("error_message") String errorMessage) { this.errorType = errorType; this.errorMessage = errorMessage; } diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationService.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/YouAuthenticationService.java similarity index 68% rename from src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationService.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/YouAuthenticationService.java index af5f1ebb..869f0313 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationService.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/YouAuthenticationService.java @@ -1,13 +1,13 @@ -package ee.carlrobert.codegpt.user.auth; +package ee.carlrobert.codegpt.completions.you.auth; import com.fasterxml.jackson.databind.ObjectMapper; import com.intellij.notification.NotificationType; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.Service; import com.intellij.openapi.diagnostic.Logger; -import ee.carlrobert.codegpt.user.ApiClient; -import ee.carlrobert.codegpt.user.UserManager; -import ee.carlrobert.codegpt.user.auth.response.AuthenticationResponse; +import ee.carlrobert.codegpt.completions.you.YouApiClient; +import ee.carlrobert.codegpt.completions.you.YouUserManager; +import ee.carlrobert.codegpt.completions.you.auth.response.YouAuthenticationResponse; import ee.carlrobert.codegpt.util.OverlayUtils; import java.io.IOException; import okhttp3.Call; @@ -16,32 +16,28 @@ import okhttp3.Response; import org.jetbrains.annotations.NotNull; @Service -public final class AuthenticationService { +public final class YouAuthenticationService { - private static final Logger LOG = Logger.getInstance(AuthenticationService.class); - private static final ApiClient client = ApiClient.getInstance(); + private static final Logger LOG = Logger.getInstance(YouAuthenticationService.class); + private static final YouApiClient client = YouApiClient.getInstance(); - private AuthenticationService() { + private YouAuthenticationService() { } - public static AuthenticationService getInstance() { - return ApplicationManager.getApplication().getService(AuthenticationService.class); + public static YouAuthenticationService getInstance() { + return ApplicationManager.getApplication().getService(YouAuthenticationService.class); } public void signInAsync(String email, String password, AuthenticationHandler authenticationHandler) { - client.authenticate(email, password, new AuthenticationCallback(authenticationHandler, email, password)); + client.authenticate(email, password, new AuthenticationCallback(authenticationHandler)); } static class AuthenticationCallback implements Callback { private final AuthenticationHandler authenticationHandler; - private final String email; - private final String password; - public AuthenticationCallback(AuthenticationHandler authenticationHandler, String email, String password) { + public AuthenticationCallback(AuthenticationHandler authenticationHandler) { this.authenticationHandler = authenticationHandler; - this.email = email; - this.password = password; } @Override @@ -60,8 +56,8 @@ public final class AuthenticationService { if (response.code() == 200) { try { - var authenticationResponse = new ObjectMapper().readValue(body.string(), AuthenticationResponse.class); - UserManager.getInstance().setAuthenticationResponse(authenticationResponse); + var authenticationResponse = new ObjectMapper().readValue(body.string(), YouAuthenticationResponse.class); + YouUserManager.getInstance().setAuthenticationResponse(authenticationResponse); authenticationHandler.handleAuthenticated(authenticationResponse); ApplicationManager.getApplication().getMessageBus() @@ -74,7 +70,7 @@ public final class AuthenticationService { } try { - authenticationHandler.handleError(new ObjectMapper().readValue(body.string(), AuthenticationError.class)); + authenticationHandler.handleError(new ObjectMapper().readValue(body.string(), YouAuthenticationError.class)); } catch (Throwable ex) { authenticationHandler.handleGenericError(); throw new RuntimeException(ex); diff --git a/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouAuthenticationResponse.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouAuthenticationResponse.java new file mode 100644 index 00000000..b2c920eb --- /dev/null +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouAuthenticationResponse.java @@ -0,0 +1,18 @@ +package ee.carlrobert.codegpt.completions.you.auth.response; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class YouAuthenticationResponse { + + private final YouAuthenticationResponseData data; + + public YouAuthenticationResponse(@JsonProperty("data") YouAuthenticationResponseData data) { + this.data = data; + } + + public YouAuthenticationResponseData getData() { + return data; + } +} diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/response/AuthenticationResponseData.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouAuthenticationResponseData.java similarity index 63% rename from src/main/java/ee/carlrobert/codegpt/user/auth/response/AuthenticationResponseData.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouAuthenticationResponseData.java index f206ee54..0e7f2ee5 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/response/AuthenticationResponseData.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouAuthenticationResponseData.java @@ -1,28 +1,28 @@ -package ee.carlrobert.codegpt.user.auth.response; +package ee.carlrobert.codegpt.completions.you.auth.response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @JsonIgnoreProperties(ignoreUnknown = true) -public class AuthenticationResponseData { +public class YouAuthenticationResponseData { - private final Session session; + private final YouSession session; private final String sessionJwt; private final String sessionToken; - private final User user; + private final YouUser user; - public AuthenticationResponseData( - @JsonProperty("session") Session session, + public YouAuthenticationResponseData( + @JsonProperty("session") YouSession session, @JsonProperty("session_jwt") String sessionJwt, @JsonProperty("session_token") String sessionToken, - @JsonProperty("user") User user) { + @JsonProperty("user") YouUser user) { this.session = session; this.sessionJwt = sessionJwt; this.sessionToken = sessionToken; this.user = user; } - public Session getSession() { + public YouSession getSession() { return session; } @@ -34,7 +34,7 @@ public class AuthenticationResponseData { return sessionToken; } - public User getUser() { + public YouUser getUser() { return user; } } diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/response/Email.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouEmail.java similarity index 86% rename from src/main/java/ee/carlrobert/codegpt/user/auth/response/Email.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouEmail.java index bf6696dc..208c6751 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/response/Email.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouEmail.java @@ -1,16 +1,16 @@ -package ee.carlrobert.codegpt.user.auth.response; +package ee.carlrobert.codegpt.completions.you.auth.response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @JsonIgnoreProperties(ignoreUnknown = true) -public class Email { +public class YouEmail { private final String email; private final String emailId; private final boolean verified; - public Email( + public YouEmail( @JsonProperty("email") String email, @JsonProperty("email_id") String emailId, @JsonProperty("verified") boolean verified) { diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/response/Name.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouName.java similarity index 87% rename from src/main/java/ee/carlrobert/codegpt/user/auth/response/Name.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouName.java index 107d2543..4fc83614 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/response/Name.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouName.java @@ -1,16 +1,16 @@ -package ee.carlrobert.codegpt.user.auth.response; +package ee.carlrobert.codegpt.completions.you.auth.response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @JsonIgnoreProperties(ignoreUnknown = true) -public class Name { +public class YouName { private final String firstName; private final String middleName; private final String lastName; - public Name( + public YouName( @JsonProperty("first_name") String firstName, @JsonProperty("middle_name") String middleName, @JsonProperty("last_name") String lastName) { diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/response/Session.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouSession.java similarity index 90% rename from src/main/java/ee/carlrobert/codegpt/user/auth/response/Session.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouSession.java index bf563a1f..822c377b 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/response/Session.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouSession.java @@ -1,10 +1,10 @@ -package ee.carlrobert.codegpt.user.auth.response; +package ee.carlrobert.codegpt.completions.you.auth.response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @JsonIgnoreProperties(ignoreUnknown = true) -public class Session { +public class YouSession { private final String expiresAt; private final String lastAccessedAt; @@ -12,7 +12,7 @@ public class Session { private final String startedAt; private final String userId; - public Session( + public YouSession( @JsonProperty("expires_at") String expiresAt, @JsonProperty("last_accessed_at") String lastAccessedAt, @JsonProperty("session_id") String sessionId, diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/response/User.java b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouUser.java similarity index 57% rename from src/main/java/ee/carlrobert/codegpt/user/auth/response/User.java rename to src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouUser.java index 6abcdf1e..884181ea 100644 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/response/User.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/you/auth/response/YouUser.java @@ -1,30 +1,30 @@ -package ee.carlrobert.codegpt.user.auth.response; +package ee.carlrobert.codegpt.completions.you.auth.response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; @JsonIgnoreProperties(ignoreUnknown = true) -public class User { +public class YouUser { - private final List emails; - private final Name name; + private final List emails; + private final YouName name; private final String userId; - public User( - @JsonProperty("emails") List emails, - @JsonProperty("name") Name name, + public YouUser( + @JsonProperty("emails") List emails, + @JsonProperty("name") YouName name, @JsonProperty("user_id") String userId) { this.emails = emails; this.name = name; this.userId = userId; } - public List getEmails() { + public List getEmails() { return emails; } - public Name getName() { + public YouName getName() { return name; } diff --git a/src/main/java/ee/carlrobert/codegpt/conversations/message/Message.java b/src/main/java/ee/carlrobert/codegpt/conversations/message/Message.java index b3ef58b5..7f09a378 100644 --- a/src/main/java/ee/carlrobert/codegpt/conversations/message/Message.java +++ b/src/main/java/ee/carlrobert/codegpt/conversations/message/Message.java @@ -2,7 +2,7 @@ package ee.carlrobert.codegpt.conversations.message; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import ee.carlrobert.codegpt.completions.SerpResult; +import ee.carlrobert.codegpt.completions.you.YouSerpResult; import java.util.List; import java.util.Objects; import java.util.UUID; @@ -13,7 +13,7 @@ public class Message { private final String prompt; private String response; private String userMessage; - private List serpResults; + private List serpResults; public Message(String prompt, String response) { this(prompt); @@ -50,11 +50,11 @@ public class Message { this.userMessage = userMessage; } - public List getSerpResults() { + public List getSerpResults() { return serpResults; } - public void setSerpResults(List serpResults) { + public void setSerpResults(List serpResults) { this.serpResults = serpResults; } diff --git a/src/main/java/ee/carlrobert/codegpt/credentials/UserCredentialsManager.java b/src/main/java/ee/carlrobert/codegpt/credentials/YouCredentialsManager.java similarity index 78% rename from src/main/java/ee/carlrobert/codegpt/credentials/UserCredentialsManager.java rename to src/main/java/ee/carlrobert/codegpt/credentials/YouCredentialsManager.java index bc14d7af..b94970bc 100644 --- a/src/main/java/ee/carlrobert/codegpt/credentials/UserCredentialsManager.java +++ b/src/main/java/ee/carlrobert/codegpt/credentials/YouCredentialsManager.java @@ -6,18 +6,18 @@ import com.intellij.openapi.components.Service; import org.jetbrains.annotations.Nullable; @Service -public final class UserCredentialsManager { +public final class YouCredentialsManager { private static final CredentialAttributes accountPasswordCredentialAttributes = CredentialsUtil.createCredentialAttributes("ACCOUNT_PASSWORD"); private String accountPassword; - private UserCredentialsManager() { + private YouCredentialsManager() { accountPassword = CredentialsUtil.getPassword(accountPasswordCredentialAttributes); } - public static UserCredentialsManager getInstance() { - return ApplicationManager.getApplication().getService(UserCredentialsManager.class); + public static YouCredentialsManager getInstance() { + return ApplicationManager.getApplication().getService(YouCredentialsManager.class); } public @Nullable String getAccountPassword() { diff --git a/src/main/java/ee/carlrobert/codegpt/actions/CodebaseIndexingAction.java b/src/main/java/ee/carlrobert/codegpt/indexes/CodebaseIndexingAction.java similarity index 85% rename from src/main/java/ee/carlrobert/codegpt/actions/CodebaseIndexingAction.java rename to src/main/java/ee/carlrobert/codegpt/indexes/CodebaseIndexingAction.java index 87c6d904..b13de960 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/CodebaseIndexingAction.java +++ b/src/main/java/ee/carlrobert/codegpt/indexes/CodebaseIndexingAction.java @@ -1,12 +1,10 @@ -package ee.carlrobert.codegpt.actions; +package ee.carlrobert.codegpt.indexes; import static com.intellij.openapi.ui.DialogWrapper.OK_EXIT_CODE; import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import ee.carlrobert.codegpt.indexes.CodebaseIndexingTask; -import ee.carlrobert.codegpt.indexes.FolderStructureTreePanel; import ee.carlrobert.codegpt.util.OverlayUtils; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/ee/carlrobert/codegpt/indexes/CodebaseIndexingTask.java b/src/main/java/ee/carlrobert/codegpt/indexes/CodebaseIndexingTask.java index 9ca7f6f3..b520a0e7 100644 --- a/src/main/java/ee/carlrobert/codegpt/indexes/CodebaseIndexingTask.java +++ b/src/main/java/ee/carlrobert/codegpt/indexes/CodebaseIndexingTask.java @@ -14,7 +14,7 @@ import com.intellij.openapi.util.io.FileUtil; import ee.carlrobert.codegpt.CodeGPTBundle; import ee.carlrobert.codegpt.CodeGPTPlugin; import ee.carlrobert.codegpt.completions.CompletionClientProvider; -import ee.carlrobert.codegpt.util.FileUtils; +import ee.carlrobert.codegpt.util.file.FileUtils; import ee.carlrobert.codegpt.util.OverlayUtils; import ee.carlrobert.embedding.CheckedFile; import ee.carlrobert.embedding.EmbeddingsService; diff --git a/src/main/java/ee/carlrobert/codegpt/indexes/FolderStructureTreePanel.java b/src/main/java/ee/carlrobert/codegpt/indexes/FolderStructureTreePanel.java index 316ee715..918409a2 100644 --- a/src/main/java/ee/carlrobert/codegpt/indexes/FolderStructureTreePanel.java +++ b/src/main/java/ee/carlrobert/codegpt/indexes/FolderStructureTreePanel.java @@ -20,7 +20,7 @@ import com.intellij.ui.components.JBLabel; import com.intellij.util.ui.AsyncProcessIcon; import com.intellij.util.ui.JBUI; import ee.carlrobert.embedding.CheckedFile; -import ee.carlrobert.codegpt.util.FileUtils; +import ee.carlrobert.codegpt.util.file.FileUtils; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.MouseAdapter; diff --git a/src/main/java/ee/carlrobert/codegpt/settings/ServiceSelectionForm.java b/src/main/java/ee/carlrobert/codegpt/settings/ServiceSelectionForm.java index 7762fa92..471e38cc 100644 --- a/src/main/java/ee/carlrobert/codegpt/settings/ServiceSelectionForm.java +++ b/src/main/java/ee/carlrobert/codegpt/settings/ServiceSelectionForm.java @@ -17,8 +17,8 @@ import ee.carlrobert.codegpt.credentials.OpenAICredentialsManager; import ee.carlrobert.codegpt.settings.state.AzureSettingsState; import ee.carlrobert.codegpt.settings.state.OpenAISettingsState; import ee.carlrobert.codegpt.settings.state.SettingsState; -import ee.carlrobert.codegpt.user.UserManager; -import ee.carlrobert.codegpt.user.auth.AuthenticationNotifier; +import ee.carlrobert.codegpt.completions.you.YouUserManager; +import ee.carlrobert.codegpt.completions.you.auth.AuthenticationNotifier; import ee.carlrobert.codegpt.util.SwingUtils; import ee.carlrobert.llm.client.openai.completion.chat.OpenAIChatCompletionModel; import ee.carlrobert.llm.completion.CompletionModel; @@ -120,7 +120,7 @@ public class ServiceSelectionForm { azureCompletionModelComboBox.getEditor().getEditorComponent().setMaximumSize(azureBaseHostField.getPreferredSize()); displayWebSearchResultsCheckBox = new JBCheckBox("Display web search results", settings.isDisplayWebSearchResults()); - displayWebSearchResultsCheckBox.setEnabled(UserManager.getInstance().isAuthenticated()); + displayWebSearchResultsCheckBox.setEnabled(YouUserManager.getInstance().isAuthenticated()); openAIServiceSectionPanel = createOpenAIServiceSectionPanel(); azureServiceSectionPanel = createAzureServiceSectionPanel(); @@ -233,7 +233,7 @@ public class ServiceSelectionForm { private JPanel createYouServiceSectionPanel() { return FormBuilder.createFormBuilder() - .addComponent(new UserDetailsSettingsPanel(Disposer.newDisposable())) + .addComponent(new YouServiceSelectionPanel(Disposer.newDisposable())) .addComponent(new TitledSeparator("Chat Preferences")) .addComponent(withEmptyLeftBorder(displayWebSearchResultsCheckBox)) .getPanel(); diff --git a/src/main/java/ee/carlrobert/codegpt/settings/SettingsComponent.java b/src/main/java/ee/carlrobert/codegpt/settings/SettingsComponent.java index 1c8bbccf..3ea6ae0d 100644 --- a/src/main/java/ee/carlrobert/codegpt/settings/SettingsComponent.java +++ b/src/main/java/ee/carlrobert/codegpt/settings/SettingsComponent.java @@ -15,12 +15,12 @@ public class SettingsComponent { private final JPanel mainPanel; private final JBTextField displayNameField; private final ServiceSelectionForm serviceSelectionForm; - private final UserDetailsSettingsPanel userDetailsSettingsPanel; + private final YouServiceSelectionPanel youServiceSelectionPanel; public SettingsComponent(Disposable parentDisposable, SettingsState settings) { serviceSelectionForm = new ServiceSelectionForm(settings); displayNameField = new JBTextField(settings.getDisplayName(), 20); - userDetailsSettingsPanel = new UserDetailsSettingsPanel(parentDisposable); + youServiceSelectionPanel = new YouServiceSelectionPanel(parentDisposable); mainPanel = FormBuilder.createFormBuilder() .addComponent(UI.PanelFactory.panel(displayNameField) .withLabel(CodeGPTBundle.get("settingsConfigurable.section.integration.displayNameFieldLabel")) @@ -42,15 +42,15 @@ public class SettingsComponent { } public String getEmail() { - return userDetailsSettingsPanel.getEmail(); + return youServiceSelectionPanel.getEmail(); } public void setEmail(String email) { - userDetailsSettingsPanel.setEmail(email); + youServiceSelectionPanel.setEmail(email); } public String getPassword() { - return userDetailsSettingsPanel.getPassword(); + return youServiceSelectionPanel.getPassword(); } public ServiceSelectionForm getServiceSelectionForm() { diff --git a/src/main/java/ee/carlrobert/codegpt/settings/UserDetailsSettingsPanel.java b/src/main/java/ee/carlrobert/codegpt/settings/YouServiceSelectionPanel.java similarity index 83% rename from src/main/java/ee/carlrobert/codegpt/settings/UserDetailsSettingsPanel.java rename to src/main/java/ee/carlrobert/codegpt/settings/YouServiceSelectionPanel.java index 6b29d63f..181b6c52 100644 --- a/src/main/java/ee/carlrobert/codegpt/settings/UserDetailsSettingsPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/settings/YouServiceSelectionPanel.java @@ -14,14 +14,14 @@ import com.intellij.util.ui.FormBuilder; import com.intellij.util.ui.JBFont; import com.intellij.util.ui.JBUI; import ee.carlrobert.codegpt.CodeGPTBundle; -import ee.carlrobert.codegpt.credentials.UserCredentialsManager; +import ee.carlrobert.codegpt.completions.you.YouUserManager; +import ee.carlrobert.codegpt.completions.you.auth.AuthenticationHandler; +import ee.carlrobert.codegpt.completions.you.auth.YouAuthenticationError; +import ee.carlrobert.codegpt.completions.you.auth.YouAuthenticationService; +import ee.carlrobert.codegpt.completions.you.auth.response.YouAuthenticationResponse; +import ee.carlrobert.codegpt.completions.you.auth.response.YouUser; +import ee.carlrobert.codegpt.credentials.YouCredentialsManager; import ee.carlrobert.codegpt.settings.state.SettingsState; -import ee.carlrobert.codegpt.user.UserManager; -import ee.carlrobert.codegpt.user.auth.AuthenticationError; -import ee.carlrobert.codegpt.user.auth.AuthenticationHandler; -import ee.carlrobert.codegpt.user.auth.AuthenticationService; -import ee.carlrobert.codegpt.user.auth.response.AuthenticationResponse; -import ee.carlrobert.codegpt.user.auth.response.User; import ee.carlrobert.codegpt.util.SwingUtils; import java.awt.BorderLayout; import java.awt.FlowLayout; @@ -34,7 +34,7 @@ import javax.swing.JTextPane; import javax.swing.SwingUtilities; import org.jetbrains.annotations.Nullable; -public class UserDetailsSettingsPanel extends JPanel { +public class YouServiceSelectionPanel extends JPanel { private final JBTextField emailField; private final JBPasswordField passwordField; @@ -42,14 +42,14 @@ public class UserDetailsSettingsPanel extends JPanel { private final JTextPane signUpTextPane; private final AsyncProcessIcon loadingSpinner; - public UserDetailsSettingsPanel(Disposable parentDisposable) { + public YouServiceSelectionPanel(Disposable parentDisposable) { super(new BorderLayout()); var settings = SettingsState.getInstance(); emailField = new JBTextField(settings.getEmail(), 25); passwordField = new JBPasswordField(); passwordField.setColumns(25); if (!settings.getEmail().isEmpty()) { - passwordField.setText(UserCredentialsManager.getInstance().getAccountPassword()); + passwordField.setText(YouCredentialsManager.getInstance().getAccountPassword()); } signInButton = new JButton(CodeGPTBundle.get("settingsConfigurable.section.userAuthentication.signIn.label")); signUpTextPane = createSignUpTextPane(); @@ -66,15 +66,16 @@ public class UserDetailsSettingsPanel extends JPanel { if (emailValidator.getValidationInfo() == null && passwordValidator.getValidationInfo() == null) { loadingSpinner.resume(); loadingSpinner.setVisible(true); - AuthenticationService.getInstance() + YouAuthenticationService.getInstance() .signInAsync(emailField.getText(), new String(passwordField.getPassword()), new UserAuthenticationHandler()); } }); - if (UserManager.getInstance().getAuthenticationResponse() == null) { + if (YouUserManager.getInstance().getAuthenticationResponse() == null) { add(createUserAuthenticationPanel(emailField, passwordField, null)); } else { - add(createUserInformationPanel(UserManager.getInstance().getAuthenticationResponse().getData().getUser())); + add(createUserInformationPanel( + YouUserManager.getInstance().getAuthenticationResponse().getData().getUser())); } } @@ -147,7 +148,7 @@ public class UserDetailsSettingsPanel extends JPanel { return panel; } - private JPanel createUserAuthenticationPanel(JBTextField emailAddressField, JBPasswordField passwordField, @Nullable AuthenticationError error) { + private JPanel createUserAuthenticationPanel(JBTextField emailAddressField, JBPasswordField passwordField, @Nullable YouAuthenticationError error) { var contentPanelBuilder = FormBuilder.createFormBuilder() .addLabeledComponent("Email address:", emailAddressField) .addLabeledComponent("Password:", passwordField) @@ -171,8 +172,8 @@ public class UserDetailsSettingsPanel extends JPanel { .getPanel(); } - private JPanel createUserInformationPanel(User user) { - var userManager = UserManager.getInstance(); + private JPanel createUserInformationPanel(YouUser user) { + var userManager = YouUserManager.getInstance(); var contentPanelBuilder = FormBuilder.createFormBuilder() .addLabeledComponent("Email address:", new JBLabel(user.getEmails().get(0).getEmail()).withFont(JBFont.label().asBold())); @@ -196,12 +197,12 @@ public class UserDetailsSettingsPanel extends JPanel { class UserAuthenticationHandler implements AuthenticationHandler { @Override - public void handleAuthenticated(AuthenticationResponse authenticationResponse) { + public void handleAuthenticated(YouAuthenticationResponse authenticationResponse) { SwingUtilities.invokeLater(() -> { var email = emailField.getText(); var password = passwordField.getPassword(); SettingsState.getInstance().setEmail(email); - UserCredentialsManager.getInstance().setAccountPassword(new String(password)); + YouCredentialsManager.getInstance().setAccountPassword(new String(password)); refreshView(createUserInformationPanel(authenticationResponse.getData().getUser())); }); } @@ -209,11 +210,11 @@ public class UserDetailsSettingsPanel extends JPanel { @Override public void handleGenericError() { SwingUtilities.invokeLater(() -> refreshView( - createUserAuthenticationPanel(emailField, passwordField, new AuthenticationError("unknown", "Something went wrong.")))); + createUserAuthenticationPanel(emailField, passwordField, new YouAuthenticationError("unknown", "Something went wrong.")))); } @Override - public void handleError(AuthenticationError error) { + public void handleError(YouAuthenticationError error) { SwingUtilities.invokeLater(() -> refreshView(createUserAuthenticationPanel(emailField, passwordField, error))); } } diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BaseChatToolWindowTabPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BaseChatToolWindowTabPanel.java index f2d352cb..197055fe 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BaseChatToolWindowTabPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BaseChatToolWindowTabPanel.java @@ -13,7 +13,7 @@ import com.intellij.ui.components.JBScrollPane; import com.intellij.util.ui.JBUI; import ee.carlrobert.codegpt.actions.ActionType; import ee.carlrobert.codegpt.completions.CompletionRequestHandler; -import ee.carlrobert.codegpt.completions.SerpResult; +import ee.carlrobert.codegpt.completions.you.YouSerpResult; import ee.carlrobert.codegpt.conversations.Conversation; import ee.carlrobert.codegpt.conversations.ConversationService; import ee.carlrobert.codegpt.conversations.message.Message; @@ -26,11 +26,12 @@ import ee.carlrobert.codegpt.telemetry.TelemetryAction; import ee.carlrobert.codegpt.toolwindow.ModelIconLabel; import ee.carlrobert.codegpt.toolwindow.chat.components.ChatMessageResponseBody; import ee.carlrobert.codegpt.toolwindow.chat.components.ResponsePanel; +import ee.carlrobert.codegpt.toolwindow.chat.components.SmartScroller; import ee.carlrobert.codegpt.toolwindow.chat.components.UserMessagePanel; import ee.carlrobert.codegpt.toolwindow.chat.components.UserPromptTextArea; -import ee.carlrobert.codegpt.user.UserManager; +import ee.carlrobert.codegpt.completions.you.YouUserManager; import ee.carlrobert.codegpt.util.EditorUtils; -import ee.carlrobert.codegpt.util.FileUtils; +import ee.carlrobert.codegpt.util.file.FileUtils; import ee.carlrobert.codegpt.util.OverlayUtils; import java.awt.BorderLayout; import java.awt.GridBagConstraints; @@ -54,7 +55,7 @@ public abstract class BaseChatToolWindowTabPanel implements ChatToolWindowTabPan private final JPanel rootPanel; private final ScrollablePanel scrollablePanel; private final Map visibleMessagePanels = new HashMap<>(); - private final Map> serpResultsMapping = new HashMap<>(); + private final Map> serpResultsMapping = new HashMap<>(); protected final Project project; protected final UserPromptTextArea userPromptTextArea; @@ -132,7 +133,7 @@ public abstract class BaseChatToolWindowTabPanel implements ChatToolWindowTabPan private boolean isCredentialSet() { if (SettingsState.getInstance().isUseYouService()) { - return UserManager.getInstance().isAuthenticated(); + return YouUserManager.getInstance().isAuthenticated(); } if (SettingsState.getInstance().isUseAzureService()) { return AzureCredentialsManager.getInstance().isCredentialSet(); @@ -177,7 +178,7 @@ public abstract class BaseChatToolWindowTabPanel implements ChatToolWindowTabPan if (containsResults) { message.setSerpResults(serpResults.stream() - .map(result -> new SerpResult( + .map(result -> new YouSerpResult( result.getUrl(), result.getName(), result.getSnippet(), @@ -213,7 +214,7 @@ public abstract class BaseChatToolWindowTabPanel implements ChatToolWindowTabPan }); requestHandler.addSerpResultsListener( serpResults -> serpResultsMapping.put(message.getId(), serpResults.stream() - .map(result -> new SerpResult( + .map(result -> new YouSerpResult( result.getUrl(), result.getName(), result.getSnippet(), diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ChatMessageResponseBody.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ChatMessageResponseBody.java index 44bc14fb..af05d089 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ChatMessageResponseBody.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ChatMessageResponseBody.java @@ -20,14 +20,14 @@ import com.vladsch.flexmark.html.HtmlRenderer; import com.vladsch.flexmark.parser.Parser; import com.vladsch.flexmark.util.data.MutableDataSet; import ee.carlrobert.codegpt.actions.ActionType; -import ee.carlrobert.codegpt.completions.SerpResult; +import ee.carlrobert.codegpt.completions.you.YouSerpResult; import ee.carlrobert.codegpt.settings.SettingsConfigurable; import ee.carlrobert.codegpt.settings.state.SettingsState; import ee.carlrobert.codegpt.telemetry.TelemetryAction; -import ee.carlrobert.codegpt.toolwindow.chat.editor.ChatToolWindowTabPanelEditor; import ee.carlrobert.codegpt.toolwindow.chat.ResponseNodeRenderer; import ee.carlrobert.codegpt.toolwindow.chat.StreamParser; import ee.carlrobert.codegpt.toolwindow.chat.StreamResponseType; +import ee.carlrobert.codegpt.toolwindow.chat.editor.ResponseEditor; import ee.carlrobert.codegpt.util.MarkdownUtils; import ee.carlrobert.codegpt.util.SwingUtils; import java.awt.BorderLayout; @@ -46,7 +46,7 @@ public class ChatMessageResponseBody extends JPanel { private final Disposable parentDisposable; private final StreamParser streamParser; private JPanel currentlyProcessedElement; - private ChatToolWindowTabPanelEditor currentlyProcessedEditor; + private ResponseEditor currentlyProcessedEditor; private JTextPane currentlyProcessedTextPane; private boolean responseReceived; @@ -159,7 +159,7 @@ public class ChatMessageResponseBody extends JPanel { displayError("Something went wrong."); } - public void displaySerpResults(List serpResults) { + public void displaySerpResults(List serpResults) { var titles = serpResults.stream() .map(result -> format("
  • %s
  • ", result.getUrl(), result.getName())) @@ -235,14 +235,14 @@ public class ChatMessageResponseBody extends JPanel { private void prepareProcessingCodeResponse(String code, String language) { hideCarets(); currentlyProcessedTextPane = null; - currentlyProcessedEditor = new ChatToolWindowTabPanelEditor( + currentlyProcessedEditor = new ResponseEditor( project, code, language, parentDisposable); currentlyProcessedElement = new ResponseWrapper(); - currentlyProcessedElement.add(currentlyProcessedEditor.getComponent()); + currentlyProcessedElement.add(currentlyProcessedEditor); add(currentlyProcessedElement); } diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/IconActionButton.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/IconActionButton.java similarity index 93% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/IconActionButton.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/IconActionButton.java index 42a196be..6615d70d 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/IconActionButton.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/IconActionButton.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow; +package ee.carlrobert.codegpt.toolwindow.chat.components; import com.intellij.openapi.actionSystem.ActionPlaces; import com.intellij.openapi.actionSystem.ActionToolbar; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ResponsePanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ResponsePanel.java index 3942417a..ef58c2da 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ResponsePanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ResponsePanel.java @@ -10,7 +10,6 @@ import com.intellij.ui.components.JBLabel; import com.intellij.util.ui.JBFont; import com.intellij.util.ui.JBUI; import ee.carlrobert.codegpt.Icons; -import ee.carlrobert.codegpt.toolwindow.IconActionButton; import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.Box; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/SmartScroller.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/SmartScroller.java similarity index 98% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/SmartScroller.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/SmartScroller.java index b7044904..1d87fed5 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/SmartScroller.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/SmartScroller.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat; +package ee.carlrobert.codegpt.toolwindow.chat.components; import java.awt.Component; import java.awt.event.AdjustmentEvent; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowLandingPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowLandingPanel.java index c850a6f9..2960631b 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowLandingPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowLandingPanel.java @@ -14,9 +14,9 @@ import ee.carlrobert.codegpt.indexes.CodebaseIndexingTask; import ee.carlrobert.codegpt.indexes.FolderStructureTreePanel; import ee.carlrobert.codegpt.settings.SettingsConfigurable; import ee.carlrobert.codegpt.toolwindow.chat.components.ResponsePanel; -import ee.carlrobert.codegpt.user.UserManager; -import ee.carlrobert.codegpt.user.auth.AuthenticationNotifier; -import ee.carlrobert.codegpt.user.auth.SignedOutNotifier; +import ee.carlrobert.codegpt.completions.you.YouUserManager; +import ee.carlrobert.codegpt.completions.you.auth.AuthenticationNotifier; +import ee.carlrobert.codegpt.completions.you.auth.SignedOutNotifier; import ee.carlrobert.codegpt.util.OverlayUtils; import ee.carlrobert.codegpt.util.SwingUtils; import ee.carlrobert.vector.VectorStore; @@ -51,7 +51,7 @@ class ContextualChatToolWindowLandingPanel extends ResponsePanel { private JTextPane createContent() { var description = createTextPane(); - var userManager = UserManager.getInstance(); + var userManager = YouUserManager.getInstance(); if (userManager.getAuthenticationResponse() == null) { description.setText("" + diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowPanel.java index 86f6b726..52aed723 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowPanel.java @@ -7,7 +7,7 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.SimpleToolWindowPanel; import com.intellij.openapi.util.Disposer; -import ee.carlrobert.codegpt.actions.CodebaseIndexingAction; +import ee.carlrobert.codegpt.indexes.CodebaseIndexingAction; import ee.carlrobert.codegpt.actions.toolwindow.ClearChatWindowAction; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowTabPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowTabPanel.java index 6e27419e..5fb8d5f1 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowTabPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/contextual/ContextualChatToolWindowTabPanel.java @@ -2,13 +2,13 @@ package ee.carlrobert.codegpt.toolwindow.chat.contextual; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; +import ee.carlrobert.codegpt.completions.you.YouUserManager; import ee.carlrobert.codegpt.conversations.Conversation; import ee.carlrobert.codegpt.conversations.message.Message; import ee.carlrobert.codegpt.indexes.CodebaseIndexingCompletedNotifier; import ee.carlrobert.codegpt.toolwindow.chat.BaseChatToolWindowTabPanel; -import ee.carlrobert.codegpt.user.UserManager; -import ee.carlrobert.codegpt.user.auth.AuthenticationNotifier; -import ee.carlrobert.codegpt.user.auth.SignedOutNotifier; +import ee.carlrobert.codegpt.completions.you.auth.AuthenticationNotifier; +import ee.carlrobert.codegpt.completions.you.auth.SignedOutNotifier; import javax.swing.JComponent; import org.jetbrains.annotations.NotNull; @@ -17,16 +17,18 @@ public class ContextualChatToolWindowTabPanel extends BaseChatToolWindowTabPanel public ContextualChatToolWindowTabPanel(@NotNull Project project) { super(project, true); displayLandingView(); - userPromptTextArea.setTextAreaEnabled(UserManager.getInstance().isSubscribed()); + userPromptTextArea.setTextAreaEnabled(YouUserManager.getInstance().isSubscribed()); project.getMessageBus() .connect() .subscribe(CodebaseIndexingCompletedNotifier.INDEXING_COMPLETED_TOPIC, - (CodebaseIndexingCompletedNotifier) () -> userPromptTextArea.setTextAreaEnabled(UserManager.getInstance().isSubscribed())); + (CodebaseIndexingCompletedNotifier) () -> userPromptTextArea.setTextAreaEnabled( + YouUserManager.getInstance().isSubscribed())); var messageBusConnection = ApplicationManager.getApplication().getMessageBus().connect(); messageBusConnection.subscribe(AuthenticationNotifier.AUTHENTICATION_TOPIC, - (AuthenticationNotifier) () -> userPromptTextArea.setTextAreaEnabled(UserManager.getInstance().isSubscribed())); + (AuthenticationNotifier) () -> userPromptTextArea.setTextAreaEnabled( + YouUserManager.getInstance().isSubscribed())); messageBusConnection.subscribe(SignedOutNotifier.SIGNED_OUT_TOPIC, (SignedOutNotifier) () -> userPromptTextArea.setTextAreaEnabled(false)); } diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ChatToolWindowTabPanelEditor.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditor.java similarity index 90% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ChatToolWindowTabPanelEditor.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditor.java index f8784d70..e664e51a 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ChatToolWindowTabPanelEditor.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditor.java @@ -1,6 +1,6 @@ package ee.carlrobert.codegpt.toolwindow.chat.editor; -import static ee.carlrobert.codegpt.util.FileUtils.findFileNameExtensionMapping; +import static ee.carlrobert.codegpt.util.file.FileUtils.findFileNameExtensionMapping; import static java.lang.String.format; import com.intellij.openapi.Disposable; @@ -23,7 +23,7 @@ import com.intellij.ui.JBColor; import com.intellij.ui.components.JBLabel; import com.intellij.util.ui.JBUI; import ee.carlrobert.codegpt.actions.toolwindow.ReplaceCodeInMainEditorAction; -import ee.carlrobert.codegpt.toolwindow.IconActionButton; +import ee.carlrobert.codegpt.toolwindow.chat.components.IconActionButton; import ee.carlrobert.codegpt.toolwindow.chat.editor.actions.CopyAction; import ee.carlrobert.codegpt.toolwindow.chat.editor.actions.DiffAction; import ee.carlrobert.codegpt.toolwindow.chat.editor.actions.EditAction; @@ -35,20 +35,21 @@ import java.awt.FlowLayout; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import javax.swing.Box; -import javax.swing.JComponent; import javax.swing.JPanel; -public class ChatToolWindowTabPanelEditor implements Disposable { +public class ResponseEditor extends JPanel implements Disposable { private final Editor editor; private final String fileName; private final String fileExtension; - public ChatToolWindowTabPanelEditor( + public ResponseEditor( Project project, String code, String language, Disposable disposableParent) { + super(new BorderLayout()); + var fileNameExtensionMapping = findFileNameExtensionMapping(language); this.fileName = fileNameExtensionMapping.getKey(); this.fileExtension = fileNameExtensionMapping.getValue(); @@ -91,6 +92,9 @@ public class ChatToolWindowTabPanelEditor implements Disposable { settings.setVirtualSpace(false); settings.setUseSoftWraps(false); + add(createHeaderComponent(), BorderLayout.NORTH); + add(editor.getComponent(), BorderLayout.SOUTH); + Disposer.register(disposableParent, this); } @@ -99,13 +103,6 @@ public class ChatToolWindowTabPanelEditor implements Disposable { EditorFactory.getInstance().releaseEditor(editor); } - public JComponent getComponent() { - var wrapper = new JPanel(new BorderLayout()); - wrapper.add(createHeaderComponent(), BorderLayout.NORTH); - wrapper.add(editor.getComponent(), BorderLayout.SOUTH); - return wrapper; - } - public Editor getEditor() { return editor; } diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/CopyAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/CopyAction.java index 4a9f89c6..46dea8f3 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/CopyAction.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/CopyAction.java @@ -5,6 +5,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.editor.Editor; import ee.carlrobert.codegpt.CodeGPTBundle; import ee.carlrobert.codegpt.actions.ActionType; +import ee.carlrobert.codegpt.actions.TrackableAction; import ee.carlrobert.codegpt.util.OverlayUtils; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/DiffAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/DiffAction.java index 99fc09a3..d075327d 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/DiffAction.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/DiffAction.java @@ -16,8 +16,9 @@ import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.util.Pair; import ee.carlrobert.codegpt.CodeGPTBundle; import ee.carlrobert.codegpt.actions.ActionType; +import ee.carlrobert.codegpt.actions.TrackableAction; import ee.carlrobert.codegpt.util.EditorUtils; -import ee.carlrobert.codegpt.util.FileUtils; +import ee.carlrobert.codegpt.util.file.FileUtils; import ee.carlrobert.codegpt.util.OverlayUtils; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/EditAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/EditAction.java index 465e1b92..36d58873 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/EditAction.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/EditAction.java @@ -6,6 +6,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ex.EditorEx; import ee.carlrobert.codegpt.CodeGPTBundle; import ee.carlrobert.codegpt.actions.ActionType; +import ee.carlrobert.codegpt.actions.TrackableAction; import java.awt.event.MouseEvent; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/NewFileAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/NewFileAction.java index b709f23c..dcc8544f 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/NewFileAction.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/NewFileAction.java @@ -8,7 +8,6 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.ui.DialogBuilder; import com.intellij.openapi.ui.TextBrowseFolderListener; import com.intellij.openapi.ui.TextFieldWithBrowseButton; @@ -18,8 +17,8 @@ import com.intellij.ui.components.JBTextField; import com.intellij.util.ui.FormBuilder; import ee.carlrobert.codegpt.CodeGPTBundle; import ee.carlrobert.codegpt.actions.ActionType; -import ee.carlrobert.codegpt.util.ApplicationUtils; -import ee.carlrobert.codegpt.util.FileUtils; +import ee.carlrobert.codegpt.actions.TrackableAction; +import ee.carlrobert.codegpt.util.file.FileUtils; import java.util.Objects; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/ReplaceSelectionAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/ReplaceSelectionAction.java index 3d49d520..7e74d522 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/ReplaceSelectionAction.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/actions/ReplaceSelectionAction.java @@ -7,6 +7,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.editor.Editor; import ee.carlrobert.codegpt.CodeGPTBundle; import ee.carlrobert.codegpt.actions.ActionType; +import ee.carlrobert.codegpt.actions.TrackableAction; import ee.carlrobert.codegpt.util.EditorUtils; import ee.carlrobert.codegpt.util.OverlayUtils; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/standard/StandardChatToolWindowTabPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/standard/StandardChatToolWindowTabPanel.java index f71d1b93..f8a07ef7 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/standard/StandardChatToolWindowTabPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/standard/StandardChatToolWindowTabPanel.java @@ -12,7 +12,7 @@ import ee.carlrobert.codegpt.toolwindow.chat.components.ChatMessageResponseBody; import ee.carlrobert.codegpt.toolwindow.chat.components.ResponsePanel; import ee.carlrobert.codegpt.toolwindow.chat.components.UserMessagePanel; import ee.carlrobert.codegpt.util.EditorUtils; -import ee.carlrobert.codegpt.util.FileUtils; +import ee.carlrobert.codegpt.util.file.FileUtils; import ee.carlrobert.codegpt.util.OverlayUtils; import javax.swing.JComponent; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/conversations/ConversationPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/conversations/ConversationPanel.java index 4e273988..7a184a1a 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/conversations/ConversationPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/conversations/ConversationPanel.java @@ -11,8 +11,8 @@ import ee.carlrobert.codegpt.actions.toolwindow.DeleteConversationAction; import ee.carlrobert.codegpt.conversations.Conversation; import ee.carlrobert.codegpt.conversations.ConversationsState; import ee.carlrobert.codegpt.settings.state.SettingsState; -import ee.carlrobert.codegpt.toolwindow.IconActionButton; import ee.carlrobert.codegpt.toolwindow.ModelIconLabel; +import ee.carlrobert.codegpt.toolwindow.chat.components.IconActionButton; import ee.carlrobert.codegpt.toolwindow.chat.standard.StandardChatToolWindowContentManager; import java.awt.BorderLayout; import java.awt.Cursor; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/conversations/ConversationsToolWindow.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/conversations/ConversationsToolWindow.java index bae18a65..8ec5dcd7 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/conversations/ConversationsToolWindow.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/conversations/ConversationsToolWindow.java @@ -70,7 +70,10 @@ public class ConversationsToolWindow extends JPanel { } else { sortedConversations.forEach(conversation -> { scrollablePanel.add(Box.createVerticalStrut(8)); - scrollablePanel.add(new ConversationPanel(project, conversation, this::refresh)); + scrollablePanel.add(new ConversationPanel(project, conversation, () -> { + ConversationService.getInstance().deleteConversation(conversation); + refresh(); + })); }); } diff --git a/src/main/java/ee/carlrobert/codegpt/user/UserManager.java b/src/main/java/ee/carlrobert/codegpt/user/UserManager.java deleted file mode 100644 index 45419fc5..00000000 --- a/src/main/java/ee/carlrobert/codegpt/user/UserManager.java +++ /dev/null @@ -1,43 +0,0 @@ -package ee.carlrobert.codegpt.user; - -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.components.Service; -import ee.carlrobert.codegpt.user.auth.SignedOutNotifier; -import ee.carlrobert.codegpt.user.auth.response.AuthenticationResponse; - -@Service -public final class UserManager { - - private AuthenticationResponse authenticationResponse; - - private UserManager() { - } - - public static UserManager getInstance() { - return ApplicationManager.getApplication().getService(UserManager.class); - } - - public AuthenticationResponse getAuthenticationResponse() { - return authenticationResponse; - } - - public void setAuthenticationResponse(AuthenticationResponse authenticationResponse) { - this.authenticationResponse = authenticationResponse; - } - - public void clearSession() { - authenticationResponse = null; - - ApplicationManager.getApplication().getMessageBus() - .syncPublisher(SignedOutNotifier.SIGNED_OUT_TOPIC) - .signedOut(); - } - - public boolean isSubscribed() { - return true; // TODO - } - - public boolean isAuthenticated() { - return authenticationResponse != null; - } -} diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationHandler.java b/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationHandler.java deleted file mode 100644 index 437fa9ea..00000000 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/AuthenticationHandler.java +++ /dev/null @@ -1,12 +0,0 @@ -package ee.carlrobert.codegpt.user.auth; - -import ee.carlrobert.codegpt.user.auth.response.AuthenticationResponse; - -public interface AuthenticationHandler { - - void handleAuthenticated(AuthenticationResponse authenticationResponse); - - void handleGenericError(); - - void handleError(AuthenticationError authenticationError); -} diff --git a/src/main/java/ee/carlrobert/codegpt/user/auth/response/AuthenticationResponse.java b/src/main/java/ee/carlrobert/codegpt/user/auth/response/AuthenticationResponse.java deleted file mode 100644 index 67f567d2..00000000 --- a/src/main/java/ee/carlrobert/codegpt/user/auth/response/AuthenticationResponse.java +++ /dev/null @@ -1,18 +0,0 @@ -package ee.carlrobert.codegpt.user.auth.response; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; - -@JsonIgnoreProperties(ignoreUnknown = true) -public class AuthenticationResponse { - - private final AuthenticationResponseData data; - - public AuthenticationResponse(@JsonProperty("data") AuthenticationResponseData data) { - this.data = data; - } - - public AuthenticationResponseData getData() { - return data; - } -} diff --git a/src/main/java/ee/carlrobert/codegpt/util/FileExtensionLanguageDetails.java b/src/main/java/ee/carlrobert/codegpt/util/file/FileExtensionLanguageDetails.java similarity index 89% rename from src/main/java/ee/carlrobert/codegpt/util/FileExtensionLanguageDetails.java rename to src/main/java/ee/carlrobert/codegpt/util/file/FileExtensionLanguageDetails.java index 60c553d1..412d0f20 100644 --- a/src/main/java/ee/carlrobert/codegpt/util/FileExtensionLanguageDetails.java +++ b/src/main/java/ee/carlrobert/codegpt/util/file/FileExtensionLanguageDetails.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.util; +package ee.carlrobert.codegpt.util.file; public class FileExtensionLanguageDetails { diff --git a/src/main/java/ee/carlrobert/codegpt/util/FileUtils.java b/src/main/java/ee/carlrobert/codegpt/util/file/FileUtils.java similarity index 99% rename from src/main/java/ee/carlrobert/codegpt/util/FileUtils.java rename to src/main/java/ee/carlrobert/codegpt/util/file/FileUtils.java index 2ce5fb61..a26fef57 100644 --- a/src/main/java/ee/carlrobert/codegpt/util/FileUtils.java +++ b/src/main/java/ee/carlrobert/codegpt/util/file/FileUtils.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.util; +package ee.carlrobert.codegpt.util.file; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/src/main/java/ee/carlrobert/codegpt/util/LanguageFileExtensionDetails.java b/src/main/java/ee/carlrobert/codegpt/util/file/LanguageFileExtensionDetails.java similarity index 92% rename from src/main/java/ee/carlrobert/codegpt/util/LanguageFileExtensionDetails.java rename to src/main/java/ee/carlrobert/codegpt/util/file/LanguageFileExtensionDetails.java index 17365764..b5574be7 100644 --- a/src/main/java/ee/carlrobert/codegpt/util/LanguageFileExtensionDetails.java +++ b/src/main/java/ee/carlrobert/codegpt/util/file/LanguageFileExtensionDetails.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.util; +package ee.carlrobert.codegpt.util.file; import java.util.List;