'use client'; import React, { useEffect, useState } from 'react'; import { useParams, useRouter } from 'next/navigation'; import { ArrowLeft, Calendar, User, Clock, CheckCircle } from 'lucide-react'; import Link from 'next/link'; export default function RecapDetailPage() { const params = useParams(); const router = useRouter(); const [recap, setRecap] = useState(null); const [isLoading, setIsLoading] = useState(true); useEffect(() => { if (!params.id) return; async function fetchRecap() { try { const res = await fetch(`/api/recap/${params.id}`); if (!res.ok) throw new Error('Failed to fetch'); const data = await res.json(); // Parse summary/exercises if string (though usually JSON in Prisma) // Assuming Prisma handles JSON parsing automatically for `details` field setRecap(data); } catch (err) { console.error(err); } finally { setIsLoading(false); } } fetchRecap(); }, [params.id]); if (isLoading) { return (
); } if (!recap) { return (

Report not found.

Return to Dashboard
); } const { summary, training_menus } = recap; const exercises = summary?.exercises || []; return (
Back to Dashboard

Session Report #{recap.id}

{new Date(recap.completed_at).toLocaleDateString()} {training_menus ? training_menus.name : `Menu #${recap.menu_id}`} {new Date(recap.completed_at).toLocaleTimeString()}
{/* Performance Summary */}

Completion Status

Completed
All exercises finished
{/* Placeholder for future detailed analysis */}

Total Load

-- kg
Analysis Coming Soon

Exercise Log

{exercises.map((ex: any, idx: number) => (
{idx + 1}

{ex.name}

Set {ex.set_index || '?'}/{ex.total_sets || '?'}
{ex.reps} Reps {ex.weight} kg
Target Met
))} {exercises.length === 0 && (
No exercise details available for this session.
)}
); }