diff options
Diffstat (limited to 'packages/core/src/code_assist/oauth2.ts')
| -rw-r--r-- | packages/core/src/code_assist/oauth2.ts | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/packages/core/src/code_assist/oauth2.ts b/packages/core/src/code_assist/oauth2.ts index dc1ec490..f9518cbe 100644 --- a/packages/core/src/code_assist/oauth2.ts +++ b/packages/core/src/code_assist/oauth2.ts @@ -66,7 +66,9 @@ export interface OauthWebLogin { loginCompletePromise: Promise<void>; } -export async function getOauthClient( +const oauthClientPromises = new Map<AuthType, Promise<OAuth2Client>>(); + +async function initOauthClient( authType: AuthType, config: Config, ): Promise<OAuth2Client> { @@ -187,6 +189,16 @@ export async function getOauthClient( return client; } +export async function getOauthClient( + authType: AuthType, + config: Config, +): Promise<OAuth2Client> { + if (!oauthClientPromises.has(authType)) { + oauthClientPromises.set(authType, initOauthClient(authType, config)); + } + return oauthClientPromises.get(authType)!; +} + async function authWithUserCode(client: OAuth2Client): Promise<boolean> { const redirectUri = 'https://codeassist.google.com/authcode'; const codeVerifier = await client.generateCodeVerifierAsync(); @@ -416,3 +428,8 @@ async function fetchAndCacheUserInfo(client: OAuth2Client): Promise<void> { console.error('Error retrieving user info:', error); } } + +// Helper to ensure test isolation +export function resetOauthClientForTesting() { + oauthClientPromises.clear(); +} |
