From eeb566430ef6caed84c6623926f30575e60b2917 Mon Sep 17 00:00:00 2001 From: Ishan Taldekar Date: Thu, 27 Feb 2025 14:59:25 -0500 Subject: [PATCH] Consolidate events into their own package (#385) * Refactor asset provider to handle JS asset setup * Move events to their own package * Move progress listener for flicker bug out of asset providers --- .../events/AmazonQLspState.java} | 4 +- .../events}/AmazonQViewType.java | 2 +- .../events}/BrowserCompatibilityState.java | 2 +- .../events}/ChatWebViewAssetState.java | 2 +- .../ToolkitLoginWebViewAssetState.java | 2 +- .../broker/events/ViewRouterPluginState.java | 10 +++++ .../AbstractQChatEditorActionsHandler.java | 10 ++--- .../connection/QLspConnectionProvider.java | 8 ++-- .../assets/ChatWebViewAssetProvider.java | 3 +- .../ToolkitLoginWebViewAssetProvider.java | 3 +- .../browser/AmazonQBrowserProvider.java | 1 + .../providers/lsp/LspProviderImpl.java | 4 +- .../amazonq/views/AmazonQViewContainer.java | 2 +- .../amazonq/views/router/PluginState.java | 14 ------- .../amazonq/views/router/ViewRouter.java | 26 +++++++------ .../amazonq/views/router/ViewRouterTest.java | 37 ++++++++++--------- 16 files changed, 66 insertions(+), 64 deletions(-) rename plugin/src/software/aws/toolkits/eclipse/amazonq/{lsp/manager/LspState.java => broker/events/AmazonQLspState.java} (61%) rename plugin/src/software/aws/toolkits/eclipse/amazonq/{views/router => broker/events}/AmazonQViewType.java (82%) rename plugin/src/software/aws/toolkits/eclipse/amazonq/{providers/browser => broker/events}/BrowserCompatibilityState.java (75%) rename plugin/src/software/aws/toolkits/eclipse/amazonq/{providers/assets => broker/events}/ChatWebViewAssetState.java (74%) rename plugin/src/software/aws/toolkits/eclipse/amazonq/{providers/assets => broker/events}/ToolkitLoginWebViewAssetState.java (75%) create mode 100644 plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ViewRouterPluginState.java delete mode 100644 plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/PluginState.java diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/LspState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQLspState.java similarity index 61% rename from plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/LspState.java rename to plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQLspState.java index 8c2cee9b..f8770bd1 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/manager/LspState.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQLspState.java @@ -1,9 +1,9 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package software.aws.toolkits.eclipse.amazonq.lsp.manager; +package software.aws.toolkits.eclipse.amazonq.broker.events; -public enum LspState { +public enum AmazonQLspState { ACTIVE, FAILED, PENDING; diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/AmazonQViewType.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQViewType.java similarity index 82% rename from plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/AmazonQViewType.java rename to plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQViewType.java index 3f710a5a..684836c1 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/AmazonQViewType.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQViewType.java @@ -1,7 +1,7 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package software.aws.toolkits.eclipse.amazonq.views.router; +package software.aws.toolkits.eclipse.amazonq.broker.events; public enum AmazonQViewType { TOOLKIT_LOGIN_VIEW, CHAT_VIEW, DEPENDENCY_MISSING_VIEW, RE_AUTHENTICATE_VIEW, CHAT_ASSET_MISSING_VIEW, diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/browser/BrowserCompatibilityState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/BrowserCompatibilityState.java similarity index 75% rename from plugin/src/software/aws/toolkits/eclipse/amazonq/providers/browser/BrowserCompatibilityState.java rename to plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/BrowserCompatibilityState.java index 99089bc1..6e4462f8 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/browser/BrowserCompatibilityState.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/BrowserCompatibilityState.java @@ -1,7 +1,7 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package software.aws.toolkits.eclipse.amazonq.providers.browser; +package software.aws.toolkits.eclipse.amazonq.broker.events; public enum BrowserCompatibilityState { diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ChatWebViewAssetState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ChatWebViewAssetState.java similarity index 74% rename from plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ChatWebViewAssetState.java rename to plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ChatWebViewAssetState.java index 7ab24243..35836f98 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ChatWebViewAssetState.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ChatWebViewAssetState.java @@ -1,7 +1,7 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package software.aws.toolkits.eclipse.amazonq.providers.assets; +package software.aws.toolkits.eclipse.amazonq.broker.events; public enum ChatWebViewAssetState { diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ToolkitLoginWebViewAssetState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ToolkitLoginWebViewAssetState.java similarity index 75% rename from plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ToolkitLoginWebViewAssetState.java rename to plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ToolkitLoginWebViewAssetState.java index 6365c5c5..ae226d2d 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ToolkitLoginWebViewAssetState.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ToolkitLoginWebViewAssetState.java @@ -1,7 +1,7 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package software.aws.toolkits.eclipse.amazonq.providers.assets; +package software.aws.toolkits.eclipse.amazonq.broker.events; public enum ToolkitLoginWebViewAssetState { diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ViewRouterPluginState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ViewRouterPluginState.java new file mode 100644 index 00000000..34a69ff3 --- /dev/null +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ViewRouterPluginState.java @@ -0,0 +1,10 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.eclipse.amazonq.broker.events; + +import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.AuthState; + +public record ViewRouterPluginState(AuthState authState, AmazonQLspState lspState, BrowserCompatibilityState browserCompatibilityState, + ChatWebViewAssetState chatWebViewAssetState, ToolkitLoginWebViewAssetState toolkitLoginWebViewAssetState) { +} diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/handlers/AbstractQChatEditorActionsHandler.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/handlers/AbstractQChatEditorActionsHandler.java index 32ba8626..4e537f42 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/handlers/AbstractQChatEditorActionsHandler.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/handlers/AbstractQChatEditorActionsHandler.java @@ -12,13 +12,13 @@ import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.schedulers.Schedulers; +import software.aws.toolkits.eclipse.amazonq.broker.events.AmazonQLspState; import software.aws.toolkits.eclipse.amazonq.chat.ChatCommunicationManager; import software.aws.toolkits.eclipse.amazonq.chat.models.ChatUIInboundCommand; import software.aws.toolkits.eclipse.amazonq.chat.models.GenericCommandParams; import software.aws.toolkits.eclipse.amazonq.chat.models.SendToPromptParams; import software.aws.toolkits.eclipse.amazonq.chat.models.TriggerType; import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.AuthState; -import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspState; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; import software.aws.toolkits.eclipse.amazonq.telemetry.ToolkitTelemetryProvider; import software.aws.toolkits.eclipse.amazonq.telemetry.metadata.ExceptionMetadata; @@ -29,14 +29,14 @@ public abstract class AbstractQChatEditorActionsHandler extends AbstractHandler { private final Observable authStateObservable; - private final Observable lspStateObservable; + private final Observable lspStateObservable; - private record PluginState(AuthState authState, LspState lspState) { + private record PluginState(AuthState authState, AmazonQLspState lspState) { } public AbstractQChatEditorActionsHandler() { authStateObservable = Activator.getEventBroker().ofObservable(AuthState.class); - lspStateObservable = Activator.getEventBroker().ofObservable(LspState.class); + lspStateObservable = Activator.getEventBroker().ofObservable(AmazonQLspState.class); } public final PluginState getState() { @@ -48,7 +48,7 @@ public final PluginState getState() { public final boolean isEnabled() { try { PluginState pluginState = getState(); - return pluginState.authState.isLoggedIn() && !(pluginState.lspState == LspState.FAILED); + return pluginState.authState.isLoggedIn() && !(pluginState.lspState == AmazonQLspState.FAILED); } catch (Exception e) { return false; } diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/connection/QLspConnectionProvider.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/connection/QLspConnectionProvider.java index bfcdf6ad..0e6ae0ca 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/connection/QLspConnectionProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/connection/QLspConnectionProvider.java @@ -12,9 +12,9 @@ import java.util.Map; import software.amazon.awssdk.utils.StringUtils; +import software.aws.toolkits.eclipse.amazonq.broker.events.AmazonQLspState; import software.aws.toolkits.eclipse.amazonq.lsp.encryption.DefaultLspEncryptionManager; import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspManager; -import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspState; import software.aws.toolkits.eclipse.amazonq.lsp.manager.fetcher.RecordLspSetupArgs; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; import software.aws.toolkits.eclipse.amazonq.preferences.AmazonQPreferencePage; @@ -43,7 +43,7 @@ public QLspConnectionProvider() throws IOException { commands.add("--set-credentials-encryption-key"); setCommands(commands); } catch (Exception e) { - Activator.getEventBroker().post(LspState.class, LspState.FAILED); + Activator.getEventBroker().post(AmazonQLspState.class, AmazonQLspState.FAILED); throw(e); } @@ -78,12 +78,12 @@ public final void start() throws IOException { lspEncryption.initializeEncryptedCommunication(serverStdIn); } catch (Exception e) { - Activator.getEventBroker().post(LspState.class, LspState.FAILED); + Activator.getEventBroker().post(AmazonQLspState.class, AmazonQLspState.FAILED); emitInitFailure(ExceptionMetadata.scrubException(e)); Activator.getLogger().error("Error occured while initializing communication with Amazon Q Lsp Server", e); } } catch (Exception e) { - Activator.getEventBroker().post(LspState.class, LspState.FAILED); + Activator.getEventBroker().post(AmazonQLspState.class, AmazonQLspState.FAILED); emitInitFailure(ExceptionMetadata.scrubException(e)); throw e; } diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ChatWebViewAssetProvider.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ChatWebViewAssetProvider.java index dda4d9d6..2d7c8876 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ChatWebViewAssetProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ChatWebViewAssetProvider.java @@ -19,6 +19,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; +import software.aws.toolkits.eclipse.amazonq.broker.events.ChatWebViewAssetState; import software.aws.toolkits.eclipse.amazonq.chat.ChatCommunicationManager; import software.aws.toolkits.eclipse.amazonq.chat.ChatTheme; import software.aws.toolkits.eclipse.amazonq.configuration.PluginStoreKeys; @@ -102,7 +103,7 @@ public void completed(final ProgressEvent event) { } @Override - public Optional getContent() { + protected Optional getContent() { Optional content = resolveContent(); Activator.getEventBroker().post(ChatWebViewAssetState.class, content.isPresent() ? ChatWebViewAssetState.RESOLVED : ChatWebViewAssetState.DEPENDENCY_MISSING); diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ToolkitLoginWebViewAssetProvider.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ToolkitLoginWebViewAssetProvider.java index c9ad4f1f..7da063b4 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ToolkitLoginWebViewAssetProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/assets/ToolkitLoginWebViewAssetProvider.java @@ -14,6 +14,7 @@ import org.eclipse.swt.browser.Browser; import org.eclipse.swt.browser.BrowserFunction; +import software.aws.toolkits.eclipse.amazonq.broker.events.ToolkitLoginWebViewAssetState; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; import software.aws.toolkits.eclipse.amazonq.telemetry.UiTelemetryProvider; import software.aws.toolkits.eclipse.amazonq.util.PluginUtils; @@ -60,7 +61,7 @@ public Object function(final Object[] arguments) { } @Override - public Optional getContent() { + protected Optional getContent() { Optional content = resolveContent(); Activator.getEventBroker().post(ToolkitLoginWebViewAssetState.class, content.isPresent() ? ToolkitLoginWebViewAssetState.RESOLVED diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/browser/AmazonQBrowserProvider.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/browser/AmazonQBrowserProvider.java index ad11d179..ef79a845 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/browser/AmazonQBrowserProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/browser/AmazonQBrowserProvider.java @@ -10,6 +10,7 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; +import software.aws.toolkits.eclipse.amazonq.broker.events.BrowserCompatibilityState; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; import software.aws.toolkits.eclipse.amazonq.util.PluginPlatform; import software.aws.toolkits.eclipse.amazonq.util.PluginUtils; diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/lsp/LspProviderImpl.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/lsp/LspProviderImpl.java index d1def818..509556cf 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/lsp/LspProviderImpl.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/providers/lsp/LspProviderImpl.java @@ -10,8 +10,8 @@ import org.eclipse.lsp4j.services.LanguageServer; +import software.aws.toolkits.eclipse.amazonq.broker.events.AmazonQLspState; import software.aws.toolkits.eclipse.amazonq.lsp.AmazonQLspServer; -import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspState; import software.aws.toolkits.eclipse.amazonq.lsp.manager.fetcher.RecordLspSetupArgs; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; import software.aws.toolkits.eclipse.amazonq.telemetry.LanguageServerTelemetryProvider; @@ -54,7 +54,7 @@ public void setAmazonQServer(final LanguageServer server) { future.complete(server); } emitInitializeMetric(); - Activator.getEventBroker().post(LspState.class, LspState.ACTIVE); + Activator.getEventBroker().post(AmazonQLspState.class, AmazonQLspState.ACTIVE); } } diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQViewContainer.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQViewContainer.java index b6073554..48b60862 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQViewContainer.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQViewContainer.java @@ -16,8 +16,8 @@ import org.eclipse.ui.part.ViewPart; import software.aws.toolkits.eclipse.amazonq.broker.api.EventObserver; +import software.aws.toolkits.eclipse.amazonq.broker.events.AmazonQViewType; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; -import software.aws.toolkits.eclipse.amazonq.views.router.AmazonQViewType; public final class AmazonQViewContainer extends ViewPart implements EventObserver { diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/PluginState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/PluginState.java deleted file mode 100644 index 65eb8cd8..00000000 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/PluginState.java +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.eclipse.amazonq.views.router; - -import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.AuthState; -import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspState; -import software.aws.toolkits.eclipse.amazonq.providers.assets.ChatWebViewAssetState; -import software.aws.toolkits.eclipse.amazonq.providers.assets.ToolkitLoginWebViewAssetState; -import software.aws.toolkits.eclipse.amazonq.providers.browser.BrowserCompatibilityState; - -public record PluginState(AuthState authState, LspState lspState, BrowserCompatibilityState browserCompatibilityState, - ChatWebViewAssetState chatWebViewAssetState, ToolkitLoginWebViewAssetState toolkitLoginWebViewAssetState) { -} diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/ViewRouter.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/ViewRouter.java index add317e3..28dac893 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/ViewRouter.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/router/ViewRouter.java @@ -6,12 +6,14 @@ import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.schedulers.Schedulers; import software.aws.toolkits.eclipse.amazonq.broker.api.EventObserver; +import software.aws.toolkits.eclipse.amazonq.broker.events.AmazonQViewType; +import software.aws.toolkits.eclipse.amazonq.broker.events.BrowserCompatibilityState; +import software.aws.toolkits.eclipse.amazonq.broker.events.ChatWebViewAssetState; +import software.aws.toolkits.eclipse.amazonq.broker.events.AmazonQLspState; +import software.aws.toolkits.eclipse.amazonq.broker.events.ViewRouterPluginState; +import software.aws.toolkits.eclipse.amazonq.broker.events.ToolkitLoginWebViewAssetState; import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.AuthState; -import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspState; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; -import software.aws.toolkits.eclipse.amazonq.providers.assets.ChatWebViewAssetState; -import software.aws.toolkits.eclipse.amazonq.providers.assets.ToolkitLoginWebViewAssetState; -import software.aws.toolkits.eclipse.amazonq.providers.browser.BrowserCompatibilityState; /** * Routes to appropriate views based on the plugin's combined state by evaluating conditions in priority order: @@ -23,7 +25,7 @@ * Observes changes in all states and automatically updates the active view when any state changes. * Broadcasts view transitions through the event broker system. */ -public final class ViewRouter implements EventObserver { +public final class ViewRouter implements EventObserver { private AmazonQViewType activeView; @@ -43,7 +45,7 @@ private ViewRouter(final Builder builder) { } if (builder.lspStateObservable == null) { - builder.lspStateObservable = Activator.getEventBroker().ofObservable(LspState.class); + builder.lspStateObservable = Activator.getEventBroker().ofObservable(AmazonQLspState.class); } if (builder.browserCompatibilityStateObservable == null) { @@ -68,7 +70,7 @@ private ViewRouter(final Builder builder) { */ Observable.combineLatest(builder.authStateObservable, builder.lspStateObservable, builder.browserCompatibilityStateObservable, builder.chatWebViewAssetStateObservable, - builder.toolkitLoginWebViewAssetStateObservable, PluginState::new) + builder.toolkitLoginWebViewAssetStateObservable, ViewRouterPluginState::new) .observeOn(Schedulers.computation()).subscribe(this::onEvent); } @@ -82,7 +84,7 @@ public static Builder builder() { * @param pluginState Current combined state of the plugin */ @Override - public void onEvent(final PluginState pluginState) { + public void onEvent(final ViewRouterPluginState pluginState) { refreshActiveView(pluginState); } @@ -98,12 +100,12 @@ public void onEvent(final PluginState pluginState) { * * @param pluginState Current combined state of the plugin */ - private void refreshActiveView(final PluginState pluginState) { + private void refreshActiveView(final ViewRouterPluginState pluginState) { AmazonQViewType newActiveView; if (pluginState.browserCompatibilityState() == BrowserCompatibilityState.DEPENDENCY_MISSING) { newActiveView = AmazonQViewType.DEPENDENCY_MISSING_VIEW; - } else if (pluginState.lspState() == LspState.FAILED) { + } else if (pluginState.lspState() == AmazonQLspState.FAILED) { newActiveView = AmazonQViewType.LSP_STARTUP_FAILED_VIEW; } else if (pluginState.chatWebViewAssetState() == ChatWebViewAssetState.DEPENDENCY_MISSING || pluginState.toolkitLoginWebViewAssetState() == ToolkitLoginWebViewAssetState.DEPENDENCY_MISSING) { @@ -142,7 +144,7 @@ private void notifyActiveViewChange() { public static final class Builder { private Observable authStateObservable; - private Observable lspStateObservable; + private Observable lspStateObservable; private Observable browserCompatibilityStateObservable; private Observable chatWebViewAssetStateObservable; private Observable toolkitLoginWebViewAssetStateObservable; @@ -152,7 +154,7 @@ public Builder withAuthStateObservable(final Observable authStateObse return this; } - public Builder withLspStateObservable(final Observable lspStateObservable) { + public Builder withLspStateObservable(final Observable lspStateObservable) { this.lspStateObservable = lspStateObservable; return this; } diff --git a/plugin/tst/software/aws/toolkits/eclipse/amazonq/views/router/ViewRouterTest.java b/plugin/tst/software/aws/toolkits/eclipse/amazonq/views/router/ViewRouterTest.java index 65e844f6..f9c31954 100644 --- a/plugin/tst/software/aws/toolkits/eclipse/amazonq/views/router/ViewRouterTest.java +++ b/plugin/tst/software/aws/toolkits/eclipse/amazonq/views/router/ViewRouterTest.java @@ -19,20 +19,21 @@ import io.reactivex.rxjava3.schedulers.Schedulers; import io.reactivex.rxjava3.subjects.PublishSubject; import software.aws.toolkits.eclipse.amazonq.broker.EventBroker; +import software.aws.toolkits.eclipse.amazonq.broker.events.AmazonQViewType; +import software.aws.toolkits.eclipse.amazonq.broker.events.BrowserCompatibilityState; +import software.aws.toolkits.eclipse.amazonq.broker.events.ChatWebViewAssetState; +import software.aws.toolkits.eclipse.amazonq.broker.events.AmazonQLspState; +import software.aws.toolkits.eclipse.amazonq.broker.events.ToolkitLoginWebViewAssetState; import software.aws.toolkits.eclipse.amazonq.extensions.implementation.ActivatorStaticMockExtension; import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.AuthState; import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.AuthStateType; -import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspState; -import software.aws.toolkits.eclipse.amazonq.providers.assets.ChatWebViewAssetState; -import software.aws.toolkits.eclipse.amazonq.providers.assets.ToolkitLoginWebViewAssetState; -import software.aws.toolkits.eclipse.amazonq.providers.browser.BrowserCompatibilityState; public final class ViewRouterTest { private PublishSubject publishSubject; private Observable authStateObservable; - private Observable lspStateObservable; + private Observable lspStateObservable; private Observable browserCompatibilityStateObservable; private Observable chatWebViewAssetStateObservable; private Observable toolkitLoginWebViewAssetStateObservable; @@ -51,7 +52,7 @@ void setupBeforeEach() { publishSubject = PublishSubject.create(); authStateObservable = publishSubject.ofType(AuthState.class); - lspStateObservable = publishSubject.ofType(LspState.class); + lspStateObservable = publishSubject.ofType(AmazonQLspState.class); browserCompatibilityStateObservable = publishSubject.ofType(BrowserCompatibilityState.class); chatWebViewAssetStateObservable = publishSubject.ofType(ChatWebViewAssetState.class); toolkitLoginWebViewAssetStateObservable = publishSubject.ofType(ToolkitLoginWebViewAssetState.class); @@ -72,7 +73,7 @@ public void resetAfterEach() { @ParameterizedTest @MethodSource("provideStateSource") - void testActiveViewResolutionBasedOnPluginState(final LspState lspState, final AuthState authState, + void testActiveViewResolutionBasedOnPluginState(final AmazonQLspState lspState, final AuthState authState, final BrowserCompatibilityState browserCompatibilityState, final ChatWebViewAssetState chatWebViewAssetState, final ToolkitLoginWebViewAssetState toolkitLoginWebViewAssetState, @@ -88,37 +89,37 @@ void testActiveViewResolutionBasedOnPluginState(final LspState lspState, final A private static Stream provideStateSource() { return Stream.of( - Arguments.of(LspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_IN), + Arguments.of(AmazonQLspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_IN), BrowserCompatibilityState.DEPENDENCY_MISSING, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.DEPENDENCY_MISSING_VIEW), - Arguments.of(LspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_IN), + Arguments.of(AmazonQLspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_IN), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.DEPENDENCY_MISSING, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.CHAT_ASSET_MISSING_VIEW), - Arguments.of(LspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_IN), + Arguments.of(AmazonQLspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_IN), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.DEPENDENCY_MISSING, AmazonQViewType.CHAT_ASSET_MISSING_VIEW), - Arguments.of(LspState.FAILED, getAuthStateObject(AuthStateType.LOGGED_IN), + Arguments.of(AmazonQLspState.FAILED, getAuthStateObject(AuthStateType.LOGGED_IN), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.LSP_STARTUP_FAILED_VIEW), - Arguments.of(LspState.FAILED, getAuthStateObject(AuthStateType.LOGGED_OUT), + Arguments.of(AmazonQLspState.FAILED, getAuthStateObject(AuthStateType.LOGGED_OUT), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.LSP_STARTUP_FAILED_VIEW), - Arguments.of(LspState.FAILED, getAuthStateObject(AuthStateType.EXPIRED), + Arguments.of(AmazonQLspState.FAILED, getAuthStateObject(AuthStateType.EXPIRED), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.LSP_STARTUP_FAILED_VIEW), - Arguments.of(LspState.PENDING, getAuthStateObject(AuthStateType.LOGGED_OUT), + Arguments.of(AmazonQLspState.PENDING, getAuthStateObject(AuthStateType.LOGGED_OUT), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.TOOLKIT_LOGIN_VIEW), - Arguments.of(LspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_OUT), + Arguments.of(AmazonQLspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_OUT), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.TOOLKIT_LOGIN_VIEW), - Arguments.of(LspState.PENDING, getAuthStateObject(AuthStateType.EXPIRED), + Arguments.of(AmazonQLspState.PENDING, getAuthStateObject(AuthStateType.EXPIRED), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.RE_AUTHENTICATE_VIEW), - Arguments.of(LspState.ACTIVE, getAuthStateObject(AuthStateType.EXPIRED), + Arguments.of(AmazonQLspState.ACTIVE, getAuthStateObject(AuthStateType.EXPIRED), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.RE_AUTHENTICATE_VIEW), - Arguments.of(LspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_IN), + Arguments.of(AmazonQLspState.ACTIVE, getAuthStateObject(AuthStateType.LOGGED_IN), BrowserCompatibilityState.COMPATIBLE, ChatWebViewAssetState.RESOLVED, ToolkitLoginWebViewAssetState.RESOLVED, AmazonQViewType.CHAT_VIEW)); }