Refactor the logic for deciding whether to launch a browser into config (#4622)
This commit is contained in:
parent
97cf26ec53
commit
5066bc5384
|
@ -37,7 +37,6 @@ import {
|
|||
logUserPrompt,
|
||||
AuthType,
|
||||
getOauthClient,
|
||||
shouldAttemptBrowserLaunch,
|
||||
} from '@google/gemini-cli-core';
|
||||
import { validateAuthMethod } from './config/auth.js';
|
||||
import { setMaxSizedBoxDebugging } from './ui/components/shared/MaxSizedBox.js';
|
||||
|
@ -188,7 +187,7 @@ export async function main() {
|
|||
|
||||
if (
|
||||
settings.merged.selectedAuthType === AuthType.LOGIN_WITH_GOOGLE &&
|
||||
(config.getNoBrowser() || !shouldAttemptBrowserLaunch())
|
||||
config.isBrowserLaunchSuppressed()
|
||||
) {
|
||||
// Do oauth before app renders to make copying the link possible.
|
||||
await getOauthClient(settings.merged.selectedAuthType, config);
|
||||
|
|
|
@ -11,7 +11,6 @@ import {
|
|||
Config,
|
||||
clearCachedCredentialFile,
|
||||
getErrorMessage,
|
||||
shouldAttemptBrowserLaunch,
|
||||
} from '@google/gemini-cli-core';
|
||||
import { runExitCleanup } from '../../utils/cleanup.js';
|
||||
|
||||
|
@ -60,7 +59,7 @@ export const useAuthCommand = (
|
|||
settings.setValue(scope, 'selectedAuthType', authType);
|
||||
if (
|
||||
authType === AuthType.LOGIN_WITH_GOOGLE &&
|
||||
(config.getNoBrowser() || !shouldAttemptBrowserLaunch())
|
||||
config.isBrowserLaunchSuppressed()
|
||||
) {
|
||||
runExitCleanup();
|
||||
console.log(
|
||||
|
|
|
@ -38,6 +38,7 @@ vi.mock('../utils/browser.js', () => ({
|
|||
const mockConfig = {
|
||||
getNoBrowser: () => false,
|
||||
getProxy: () => 'http://test.proxy.com:8080',
|
||||
isBrowserLaunchSuppressed: () => false,
|
||||
} as unknown as Config;
|
||||
|
||||
// Mock fetch globally
|
||||
|
@ -180,6 +181,7 @@ describe('oauth2', () => {
|
|||
const mockConfigWithNoBrowser = {
|
||||
getNoBrowser: () => true,
|
||||
getProxy: () => 'http://test.proxy.com:8080',
|
||||
isBrowserLaunchSuppressed: () => true,
|
||||
} as unknown as Config;
|
||||
|
||||
const mockCodeVerifier = {
|
||||
|
|
|
@ -26,7 +26,6 @@ import {
|
|||
clearCachedGoogleAccount,
|
||||
} from '../utils/user_account.js';
|
||||
import { AuthType } from '../core/contentGenerator.js';
|
||||
import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
|
||||
import readline from 'node:readline';
|
||||
|
||||
// OAuth Client ID used to initiate OAuth2Client class.
|
||||
|
@ -122,7 +121,7 @@ export async function getOauthClient(
|
|||
}
|
||||
}
|
||||
|
||||
if (config.getNoBrowser() || !shouldAttemptBrowserLaunch()) {
|
||||
if (config.isBrowserLaunchSuppressed()) {
|
||||
let success = false;
|
||||
const maxRetries = 2;
|
||||
for (let i = 0; !success && i < maxRetries; i++) {
|
||||
|
|
|
@ -44,6 +44,7 @@ import {
|
|||
DEFAULT_GEMINI_FLASH_MODEL,
|
||||
} from './models.js';
|
||||
import { ClearcutLogger } from '../telemetry/clearcut-logger/clearcut-logger.js';
|
||||
import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
|
||||
|
||||
export enum ApprovalMode {
|
||||
DEFAULT = 'default',
|
||||
|
@ -542,6 +543,10 @@ export class Config {
|
|||
return this.noBrowser;
|
||||
}
|
||||
|
||||
isBrowserLaunchSuppressed(): boolean {
|
||||
return this.getNoBrowser() || !shouldAttemptBrowserLaunch();
|
||||
}
|
||||
|
||||
getSummarizeToolOutputConfig():
|
||||
| Record<string, SummarizeToolOutputSettings>
|
||||
| undefined {
|
||||
|
|
Loading…
Reference in New Issue