feat(auth): Improve auth dialog error handling and messaging (#11320)

This commit is contained in:
Abhi
2025-10-16 18:08:42 -04:00
committed by GitHub
parent 01c577c371
commit 02241e9126
6 changed files with 18 additions and 7 deletions

View File

@@ -45,7 +45,9 @@ describe('validateAuthMethod', () => {
it('should return an error message if GEMINI_API_KEY is not set', () => {
vi.stubEnv('GEMINI_API_KEY', undefined);
expect(validateAuthMethod(AuthType.USE_GEMINI)).toBe(
'GEMINI_API_KEY environment variable not found. Add that to your environment and try again (no reload needed if using .env)!',
'GEMINI_API_KEY not found. Find your existing key or generate a new one at: https://aistudio.google.com/apikey\n' +
'\n' +
'To continue, please set the GEMINI_API_KEY environment variable or add it to a .env file.',
);
});
});

View File

@@ -18,7 +18,11 @@ export function validateAuthMethod(authMethod: string): string | null {
if (authMethod === AuthType.USE_GEMINI) {
if (!process.env['GEMINI_API_KEY']) {
return 'GEMINI_API_KEY environment variable not found. Add that to your environment and try again (no reload needed if using .env)!';
return (
'GEMINI_API_KEY not found. Find your existing key or generate a new one at: https://aistudio.google.com/apikey\n' +
'\n' +
'To continue, please set the GEMINI_API_KEY environment variable or add it to a .env file.'
);
}
return null;
}

View File

@@ -73,7 +73,7 @@ describe('AuthDialog', () => {
settings: LoadedSettings;
setAuthState: (state: AuthState) => void;
authError: string | null;
onAuthError: (error: string) => void;
onAuthError: (error: string | null) => void;
};
const originalEnv = { ...process.env };

View File

@@ -26,7 +26,7 @@ interface AuthDialogProps {
settings: LoadedSettings;
setAuthState: (state: AuthState) => void;
authError: string | null;
onAuthError: (error: string) => void;
onAuthError: (error: string | null) => void;
}
export function AuthDialog({
@@ -174,6 +174,9 @@ Logging in with Google... Please restart Gemini CLI to continue.
items={items}
initialIndex={initialAuthIndex}
onSelect={handleAuthSelect}
onHighlight={() => {
onAuthError(null);
}}
/>
</Box>
{authError && (

View File

@@ -33,9 +33,11 @@ export const useAuthCommand = (settings: LoadedSettings, config: Config) => {
const [authError, setAuthError] = useState<string | null>(null);
const onAuthError = useCallback(
(error: string) => {
(error: string | null) => {
setAuthError(error);
setAuthState(AuthState.Updating);
if (error) {
setAuthState(AuthState.Updating);
}
},
[setAuthError, setAuthState],
);

View File

@@ -23,7 +23,7 @@ export interface UIActions {
scope: SettingScope,
) => void;
setAuthState: (state: AuthState) => void;
onAuthError: (error: string) => void;
onAuthError: (error: string | null) => void;
handleEditorSelect: (
editorType: EditorType | undefined,
scope: SettingScope,