'use client' import { useState, useEffect, Suspense } from 'react' import { useRedirectIfNotAuth } from '@/utils/auth' import { useSearchParams, useRouter } from 'next/navigation' import Link from 'next/link' import { UserProfile, SessionDetails, Transcript, AiMessage, getSessionDetails, deleteSession, } from '@/utils/api' type ConversationItem = (Transcript & { type: 'transcript' }) | (AiMessage & { type: 'ai_message' }); const Section = ({ title, children }: { title: string, children: React.ReactNode }) => (

{title}

{children}
); function SessionDetailsContent() { const userInfo = useRedirectIfNotAuth() as UserProfile | null; const [sessionDetails, setSessionDetails] = useState(null); const [isLoading, setIsLoading] = useState(true); const searchParams = useSearchParams(); const sessionId = searchParams.get('sessionId'); const router = useRouter(); const [deleting, setDeleting] = useState(false); useEffect(() => { if (userInfo && sessionId) { const fetchDetails = async () => { setIsLoading(true); try { const details = await getSessionDetails(sessionId as string); setSessionDetails(details); } catch (error) { console.error('Failed to load session details:', error); } finally { setIsLoading(false); } }; fetchDetails(); } }, [userInfo, sessionId]); const handleDelete = async () => { if (!sessionId) return; if (!window.confirm('Are you sure you want to delete this activity? This cannot be undone.')) return; setDeleting(true); try { await deleteSession(sessionId); router.push('/activity'); } catch (error) { alert('Failed to delete activity.'); setDeleting(false); console.error(error); } }; if (!userInfo || isLoading) { return (

Loading session details...

); } if (!sessionDetails) { return (

Session Not Found

The requested session could not be found.

← Back to Activity
) } const askMessages = sessionDetails.ai_messages || []; return (
Back

{sessionDetails.session.title || `Conversation on ${new Date(sessionDetails.session.started_at * 1000).toLocaleDateString()}`}

{new Date(sessionDetails.session.started_at * 1000).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })} {new Date(sessionDetails.session.started_at * 1000).toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit', hour12: true })} {sessionDetails.session.session_type}
{sessionDetails.summary && (

"{sessionDetails.summary.tldr}"

{sessionDetails.summary.bullet_json && JSON.parse(sessionDetails.summary.bullet_json).length > 0 &&

Key Points:

    {JSON.parse(sessionDetails.summary.bullet_json).map((point: string, index: number) => (
  • {point}
  • ))}
} {sessionDetails.summary.action_json && JSON.parse(sessionDetails.summary.action_json).length > 0 &&

Action Items:

    {JSON.parse(sessionDetails.summary.action_json).map((action: string, index: number) => (
  • {action}
  • ))}
}
)} {sessionDetails.transcripts && sessionDetails.transcripts.length > 0 && (
{sessionDetails.transcripts.map((item) => (

{item.speaker}: {item.text}

))}
)} {askMessages.length > 0 && (
{askMessages.map((item) => (

{item.role === 'user' ? 'You' : 'AI'}

{item.content}

))}
)}
); } export default function SessionDetailsPage() { return (

Loading...

}>
); }