Skip to content

Commit

Permalink
Add Browser Provider component (#357)
Browse files Browse the repository at this point in the history
* Pass populated AWS_CA_BUNDLE env var to Flare (#341)

* Add UI notification to alert user of deprecated manifest version (#312)

* Add webview dependency missing logic to ViewRouter

* Revert commit 'Add UI notification to alert user of deprecated manifest version'

* Revert 'Pass populated AWS_CA_BUNDLE env var to Flare'

---------

Co-authored-by: Jonathan Breedlove <[email protected]>
Co-authored-by: Nicolas <[email protected]>
  • Loading branch information
3 people committed Feb 25, 2025
1 parent 3048ff1 commit e9c983b
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicReference;


import software.aws.toolkits.eclipse.amazonq.configuration.PluginStore;
import software.aws.toolkits.eclipse.amazonq.customization.CustomizationUtil;
import software.aws.toolkits.eclipse.amazonq.exception.AmazonQPluginException;
Expand All @@ -16,10 +15,9 @@
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.LoginParams;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.LoginType;
import software.aws.toolkits.eclipse.amazonq.lsp.model.UpdateCredentialsPayload;
import software.aws.toolkits.eclipse.amazonq.providers.LspProvider;
import software.aws.toolkits.eclipse.amazonq.util.AuthUtil;
import software.aws.toolkits.eclipse.amazonq.plugin.Activator;
import software.aws.toolkits.eclipse.amazonq.providers.lsp.LspProvider;
import software.aws.toolkits.eclipse.amazonq.util.AuthUtil;

/**
* Core authentication service for the Amazon Q Eclipse plugin that manages
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package software.aws.toolkits.eclipse.amazonq.util;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;

import software.aws.toolkits.eclipse.amazonq.plugin.Activator;
import software.aws.toolkits.eclipse.amazonq.providers.lsp.LspManagerProvider;

public final class ChatAssetProvider {
private WebviewAssetServer webviewAssetServer;

public Optional<String> get() {
var chatUiDirectory = getChatUiDirectory();

if (!isValid(chatUiDirectory)) {
Activator.getLogger().error("Error loading Chat UI. If override used, please verify the override env variables else restart Eclipse");
return Optional.empty();
}

String jsFile = Paths.get(chatUiDirectory.get()).resolve("amazonq-ui.js").toString();
var jsParent = Path.of(jsFile).getParent();
var jsDirectoryPath = Path.of(jsParent.toUri()).normalize().toString();

webviewAssetServer = new WebviewAssetServer();
var result = webviewAssetServer.resolve(jsDirectoryPath);
if (!result) {
Activator.getLogger().error(String.format(
"Error loading Chat UI. Unable to find the `amazonq-ui.js` file in the directory: %s. Please verify and restart",
chatUiDirectory.get()));
return Optional.empty();
}

String chatJsPath = webviewAssetServer.getUri() + "amazonq-ui.js";

return Optional.ofNullable(chatJsPath);
}

private Optional<String> getChatUiDirectory() {
try {
return Optional.of(LspManagerProvider.getInstance().getLspInstallation().getClientDirectory());
} catch (Exception e) {
return Optional.empty();
}
}

private boolean isValid(final Optional<String> chatUiDirectory) {
return chatUiDirectory.isPresent() && Files.exists(Paths.get(chatUiDirectory.get()));
}

public void dispose() {
if (webviewAssetServer != null) {
webviewAssetServer.stop();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@
import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspState;
import software.aws.toolkits.eclipse.amazonq.plugin.Activator;
<<<<<<< HEAD
<<<<<<< HEAD
import software.aws.toolkits.eclipse.amazonq.providers.assets.ChatWebViewAssetState;
import software.aws.toolkits.eclipse.amazonq.providers.assets.ToolkitLoginWebViewAssetState;
=======
>>>>>>> ac5becb (Add Browser Provider component (#357))
import software.aws.toolkits.eclipse.amazonq.providers.browser.BrowserCompatibilityState;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,13 @@
import org.junit.jupiter.api.Test;

import software.aws.toolkits.eclipse.amazonq.lsp.AmazonQLspServer;
<<<<<<< HEAD
import software.aws.toolkits.eclipse.amazonq.lsp.model.UpdateCredentialsPayload;
import software.aws.toolkits.eclipse.amazonq.providers.LspProvider;
=======
import software.aws.toolkits.eclipse.amazonq.lsp.encryption.LspEncryptionManager;
import software.aws.toolkits.eclipse.amazonq.providers.lsp.LspProvider;
>>>>>>> 4ec1937 (Add Browser Provider component (#357))

public class DefaultAuthCredentialsServiceTest {
private static DefaultAuthCredentialsService authCredentialsService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
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;
<<<<<<< HEAD
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;
Expand Down

0 comments on commit e9c983b

Please sign in to comment.