diff --git a/src/lib/authStorage.ts b/src/lib/authStorage.ts index b5beebdf..cb291b27 100644 --- a/src/lib/authStorage.ts +++ b/src/lib/authStorage.ts @@ -75,24 +75,43 @@ class AuthStorage { } getItem(key: string): string | null { + console.log('[AuthStorage] Getting key:', key); try { if (this.storage) { const value = this.storage.getItem(key); + console.log('[AuthStorage] Retrieved from storage:', !!value); + if (value) { // Verify it's not expired if (key.includes('auth-token')) { try { const parsed = JSON.parse(value); - if (parsed.expires_at && parsed.expires_at < Date.now()) { - console.warn('[AuthStorage] Token expired, removing'); + + // Supabase stores expires_at in seconds, Date.now() is in milliseconds + // Check if expires_at is in seconds (< year 3000 in milliseconds) + const expiryTime = parsed.expires_at > 10000000000 + ? parsed.expires_at // Already in milliseconds + : parsed.expires_at * 1000; // Convert from seconds to milliseconds + + if (parsed.expires_at && expiryTime < Date.now()) { + console.warn('[AuthStorage] Token expired, removing', { + expires_at: parsed.expires_at, + expiryTime: new Date(expiryTime), + now: new Date() + }); this.removeItem(key); return null; } - } catch {} + + console.log('[AuthStorage] Token valid, expires:', new Date(expiryTime)); + } catch (e) { + console.warn('[AuthStorage] Could not parse token for expiry check:', e); + } } } return value; } + console.log('[AuthStorage] Using memory storage'); return this.memoryStorage.get(key) || null; } catch (error) { console.error('[AuthStorage] Error reading from storage:', error); @@ -101,6 +120,7 @@ class AuthStorage { } setItem(key: string, value: string): void { + console.log('[AuthStorage] Setting key:', key); try { if (this.storage) { this.storage.setItem(key, value);