import { redirect } from "next/navigation"; import Link from "next/link"; import { ChevronLeft } from "lucide-react"; import { getCurrentUser } from "@/lib/auth"; import { getExercises } from "@/lib/db/exercises"; import { getWorkoutById } from "@/lib/db/workouts"; import WorkoutForm, { EditWorkoutData } from "@/components/workouts/WorkoutForm"; export const metadata = { title: "Log Workout", description: "Log a new workout", }; export default async function NewWorkoutPage({ searchParams, }: { searchParams: { edit?: string }; }) { const user = await getCurrentUser(); if (!user) { redirect("/auth/login"); } const exercises = await getExercises(user.id); // If ?edit=WORKOUT_ID, fetch existing workout for editing let editWorkout: EditWorkoutData | undefined; if (searchParams.edit) { const workout = await getWorkoutById(searchParams.edit); if (workout && workout.userId === user.id) { // Group sets by exercise const grouped: Record = {}; for (const set of workout.setLogs) { const exId = set.exercise.id; if (!grouped[exId]) { grouped[exId] = { exercise: set.exercise, sets: [], }; } grouped[exId].sets.push({ setNumber: set.setNumber, reps: set.reps ?? undefined, weight: set.weight ?? undefined, rpe: set.rpe ?? undefined, notes: set.notes ?? undefined, }); } editWorkout = { id: workout.id, name: workout.name || "", date: workout.date.toISOString(), durationMinutes: workout.durationMinutes, difficulty: workout.difficulty, caloriesBurned: (workout as any).caloriesBurned ?? null, notes: workout.notes, exercises: Object.values(grouped), }; } } const isEditing = !!editWorkout; return (
{/* Header */}

{isEditing ? "Edit Workout" : "Log Workout"}

{/* Form */}
); }