From 7deb753165411337aa27be4570e2c97bed906a63 Mon Sep 17 00:00:00 2001 From: pashpashpash Date: Wed, 22 Jan 2025 00:38:47 -0800 Subject: [PATCH] login persists through reloaded window --- src/core/webview/ClineProvider.ts | 2 +- src/services/auth/FirebaseAuthManager.ts | 27 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 693ad72391..a2bf790720 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1341,7 +1341,7 @@ export class ClineProvider implements vscode.WebviewViewProvider { } } - private async getSecret(key: SecretKey) { + async getSecret(key: SecretKey) { return await this.context.secrets.get(key) } diff --git a/src/services/auth/FirebaseAuthManager.ts b/src/services/auth/FirebaseAuthManager.ts index e06653e5ac..9a53458606 100644 --- a/src/services/auth/FirebaseAuthManager.ts +++ b/src/services/auth/FirebaseAuthManager.ts @@ -25,6 +25,33 @@ export class FirebaseAuthManager { // Auth state listener onAuthStateChanged(this.auth, this.handleAuthStateChange.bind(this)); console.log("Auth state change listener added"); + + // Try to restore session + this.restoreSession(); + } + + private async restoreSession() { + console.log("Attempting to restore session"); + const provider = this.providerRef.deref(); + if (!provider) { + console.log("Provider reference lost during session restore"); + return; + } + + const storedToken = await provider.getSecret("authToken"); + if (storedToken) { + console.log("Found stored auth token, attempting to restore session"); + try { + await this.signInWithCustomToken(storedToken); + console.log("Session restored successfully"); + } catch (error) { + console.error("Failed to restore session, clearing token:", error); + await provider.setAuthToken(undefined); + await provider.setUserInfo(undefined); + } + } else { + console.log("No stored auth token found"); + } } private async handleAuthStateChange(user: User | null) {