summaryrefslogtreecommitdiff
path: root/packages/core/src/code_assist/oauth2.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/code_assist/oauth2.ts')
-rw-r--r--packages/core/src/code_assist/oauth2.ts19
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();
+}