From 99d056058b21894c96a05cfaa4f4220d9f9e39f8 Mon Sep 17 00:00:00 2001 From: Ishan Taldekar Date: Wed, 12 Feb 2025 17:57:01 -0500 Subject: [PATCH 1/4] Remove redundant state check method --- .../aws/toolkits/eclipse/amazonq/views/router/ViewRouter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7d63ee21..88758cb5 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 @@ -104,7 +104,7 @@ private void refreshActiveView(final PluginState pluginState) { if (pluginState.browserCompatibilityState() == BrowserCompatibilityState.DEPENDENCY_MISSING) { newActiveView = AmazonQViewType.DEPENDENCY_MISSING_VIEW; - } else if (pluginState.lspState().hasFailed()) { + } else if (pluginState.lspState() == LspState.FAILED) { newActiveView = AmazonQViewType.LSP_STARTUP_FAILED_VIEW; } else if (pluginState.chatWebViewAssetState() == ChatWebViewAssetState.DEPENDENCY_MISSING || pluginState.toolkitLoginWebViewAssetState() == ToolkitLoginWebViewAssetState.DEPENDENCY_MISSING) { From 5266e015924d9afa1a18800baedd3b6664e8bb17 Mon Sep 17 00:00:00 2001 From: Ishan Taldekar Date: Wed, 12 Feb 2025 18:13:57 -0500 Subject: [PATCH 2/4] Fix bugs in view refactor branch --- .../eclipse/amazonq/views/AmazonQChatWebview.java | 15 +++++++++------ .../amazonq/views/AmazonQViewContainer.java | 3 +++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java index 1ad93a98..2eeb10f3 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java @@ -75,7 +75,11 @@ public void completed(final ProgressEvent event) { }); } }); - + + if (!content.isPresent()) { + content = webViewAssetProvider.getContent(); + } + browser.setText(content.get()); } else { updateBrowser(browser); } @@ -113,11 +117,6 @@ public void completed(final ProgressEvent event) { } }); - if (!content.isPresent()) { - content = webViewAssetProvider.getContent(); - } - browser.setText(content.get()); - return parent; } @@ -143,6 +142,10 @@ public final void onSendToChatUi(final String message) { browser.evaluate(script); }); } + + void disposeBrowserState() { + canDisposeState = true; + } @Override public final void dispose() { 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 190d7d89..398dcbf8 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQViewContainer.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQViewContainer.java @@ -76,6 +76,9 @@ private void updateChildView() { BaseAmazonQView newView = views.get(activeViewType); if (currentView != null) { + if (currentView.getClass() == AmazonQChatWebview.class) { + ((AmazonQChatWebview) currentView).disposeBrowserState(); + } Control[] children = parentComposite.getChildren(); for (Control child : children) { if (child != null && !child.isDisposed()) { From 9cb62ea36a5892928c6108f6b6f67466cc6ba7c5 Mon Sep 17 00:00:00 2001 From: Ishan Taldekar Date: Thu, 13 Feb 2025 14:09:49 -0500 Subject: [PATCH 3/4] Fix checkstyle issues --- .../eclipse/amazonq/views/AmazonQChatWebview.java | 8 ++++---- .../eclipse/amazonq/views/AmazonQViewContainer.java | 8 +++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java index 2eeb10f3..b107a377 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java @@ -75,7 +75,7 @@ public void completed(final ProgressEvent event) { }); } }); - + if (!content.isPresent()) { content = webViewAssetProvider.getContent(); } @@ -142,9 +142,9 @@ public final void onSendToChatUi(final String message) { browser.evaluate(script); }); } - - void disposeBrowserState() { - canDisposeState = true; + + public final void disposeBrowserState() { + canDisposeState = true; } @Override 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 398dcbf8..763aed4f 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQViewContainer.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQViewContainer.java @@ -15,7 +15,6 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.ui.part.ViewPart; -import io.reactivex.rxjava3.disposables.Disposable; import software.aws.toolkits.eclipse.amazonq.broker.api.EventObserver; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; import software.aws.toolkits.eclipse.amazonq.views.actions.AmazonQStaticActions; @@ -30,7 +29,6 @@ public final class AmazonQViewContainer extends ViewPart implements EventObserve private Map views; private AmazonQViewType activeViewType; private BaseAmazonQView currentView; - private Disposable activeViewTypeSubscription; private final ReentrantLock containerLock; public AmazonQViewContainer() { @@ -76,9 +74,9 @@ private void updateChildView() { BaseAmazonQView newView = views.get(activeViewType); if (currentView != null) { - if (currentView.getClass() == AmazonQChatWebview.class) { - ((AmazonQChatWebview) currentView).disposeBrowserState(); - } + if (currentView instanceof AmazonQChatWebview) { + ((AmazonQChatWebview) currentView).disposeBrowserState(); + } Control[] children = parentComposite.getChildren(); for (Control child : children) { if (child != null && !child.isDisposed()) { From 00e2aaa00e6e8b02f6dbd4d3255c73bd84d8d75c Mon Sep 17 00:00:00 2001 From: Ishan Taldekar Date: Wed, 19 Feb 2025 12:21:10 -0500 Subject: [PATCH 4/4] Make webview asset provider disposal more selective --- .../toolkits/eclipse/amazonq/views/AmazonQChatWebview.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java index c5e2096d..f49c2ffe 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java @@ -116,7 +116,7 @@ public void completed(final ProgressEvent event) { }); } }); - + setupAmazonQCommonActions(); return parent; @@ -154,8 +154,8 @@ public final void dispose() { chatCommunicationManager.removeListener(); if (canDisposeState) { ChatStateManager.getInstance().dispose(); + webViewAssetProvider.dispose(); } - webViewAssetProvider.dispose(); super.dispose(); } }