public final void handleCommand()

in plugin/src/software/aws/toolkits/eclipse/amazonq/views/LoginViewActionHandler.java [32:98]


    public final void handleCommand(final ParsedCommand parsedCommand, final Browser browser) {
        Object params = parsedCommand.getParams();
        switch (parsedCommand.getCommand()) {
        case LOGIN_BUILDER_ID:
        case LOGIN_IDC:
            if (isLoginTaskRunning) {
                loginTask.cancel(true);
            }
            isLoginTaskRunning = true;
            loginTask = ThreadingUtils.executeAsyncTaskAndReturnFuture(() -> {
                try {
                    if (parsedCommand.getCommand() == Command.LOGIN_BUILDER_ID) {
                        Activator.getLoginService().login(LoginType.BUILDER_ID, new LoginParams()).get();
                    } else {
                        LoginIdcParams loginIdcParams = JSON_HANDLER.convertObject(params, LoginIdcParams.class);
                        var url = loginIdcParams.getUrl();
                        var region = loginIdcParams.getRegion();
                        if (StringUtils.isEmpty(url) || StringUtils.isEmpty(region)) {
                            throw new IllegalArgumentException("Url/Region parameters cannot be null or empty");
                        }
                        Activator.getLoginService().login(LoginType.IAM_IDENTITY_CENTER,
                                new LoginParams().setLoginIdcParams(loginIdcParams)).get();
                    }
                    isLoginTaskRunning = false;
                } catch (Exception e) {
                    isLoginTaskRunning = false;
                    Activator.getLogger().error("Failed to update token", e);
                }
            });
            break;
        case CANCEL_LOGIN:
            if (isLoginTaskRunning) {
                loginTask.cancel(true);
                isLoginTaskRunning = false;
            }
            break;
        case ON_LOAD:
            OidcServiceMetadata oidcMetadata = new OidcServiceMetadata();
            String regions = "["
                    + oidcMetadata.regions().stream().filter(region -> region.metadata().partition().id().equals("aws"))
                            .map(AwsRegion::from).map(AwsRegion::toString).collect(Collectors.joining(","))
                    + "]";
            var js = String.format("""
                    {
                        stage: '%s',
                        regions: %s,
                        cancellable: false,
                        idcInfo: {
                            profileName: '',
                            startUrl: '',
                            region: 'us-east-1'
                        },
                        feature: 'q',
                        existConnections: []
                    }
                        """, "START", regions).stripIndent();
            browser.execute("changeTheme(" + THEME_DETECTOR.isDarkTheme() + ");");
            browser.execute(String.format("ideClient.prepareUi(%s)", js));
            browser.execute("ideClient.updateAuthorization('')");
            browser.execute("document.oncontextmenu = e => e.preventDefault();");
            break;
        default:
            Activator.getLogger()
                    .error("Unexpected command received from Amazon Q Login: " + parsedCommand.getCommand());
            break;
        }
    }