'use client'; import { useEffect, useState } from 'react'; import { db, auth } from '@/lib/firebase/config'; import { collection, query, where, orderBy, limit, getDocs } from 'firebase/firestore'; export default function TestSessionsPage() { const [sessions, setSessions] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const unsubscribe = auth.onAuthStateChanged(async (user) => { if (!user) { setError('Not authenticated'); setLoading(false); return; } try { const sessionsRef = collection(db, 'sessions'); const q = query( sessionsRef, where('userId', '==', user.uid), orderBy('createdAt', 'desc'), limit(20) ); const snapshot = await getDocs(q); const sessionData = snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() })); setSessions(sessionData); } catch (err: any) { console.error('Error fetching sessions:', err); setError(err.message); } finally { setLoading(false); } }); return () => unsubscribe(); }, []); return (

Recent Sessions

{loading &&

Loading...

} {error &&

Error: {error}

} {!loading && sessions.length === 0 && (

No sessions found yet. Make sure you're coding in Cursor with the extension enabled!

)} {sessions.length > 0 && (
{sessions.map((session) => (
Session ID: {session.id}
User ID: {session.userId?.substring(0, 20)}...
🗂️ Workspace:
{session.workspacePath || 'N/A'}
{session.workspaceName && (
Project: {session.workspaceName}
)}
Created: {session.createdAt?.toDate?.()?.toLocaleString() || 'N/A'}
Duration: {session.duration ? `${session.duration}s` : 'N/A'}
Model: {session.model || 'unknown'}
Cost: ${session.cost?.toFixed(4) || '0.0000'}
Tokens Used: {session.tokensUsed || 0}
Files Modified: {session.filesModified?.length || 0}
{session.filesModified && session.filesModified.length > 0 && (
View Modified Files ({session.filesModified.length})
{session.filesModified.map((file: string, idx: number) => (
{file}
))}
)} {session.conversationSummary && (
View Conversation Summary
{session.conversationSummary}
)}
))}
)}
); }