@@ -5,6 +5,7 @@ import { useAuth } from '@/contexts/AuthContext'; // adjust if needed
55export interface Exercise {
66 id : string ;
77 name : string ;
8+ description ?: string ;
89 muscle_group : string ;
910 type : 'strength' | 'cardio' | 'flexibility' ;
1011}
@@ -64,11 +65,27 @@ export const WorkoutProvider = ({ children }: { children: ReactNode }) => {
6465
6566 const generateId = ( ) => Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) ;
6667
68+ const transformWorkoutForBackend = ( workout : Workout ) => ( {
69+ name : workout . name ,
70+ description : workout . notes || null ,
71+ scheduled_date : workout . date . toISOString ( ) ,
72+ duration_minutes : workout . duration ,
73+ exercises : workout . exercises . map ( ex => ( {
74+ name : ex . exercise . name ,
75+ description : ex . exercise . description || null ,
76+ category : ex . exercise . muscle_group , // or ex.exercise.type if that's better
77+ sets : ex . sets . length ,
78+ reps : ex . sets . reduce ( ( sum , s ) => sum + ( s . reps || 0 ) , 0 ) ,
79+ weight : ex . sets . reduce ( ( max , s ) => Math . max ( max , s . weight || 0 ) , 0 ) ,
80+ } ) ) ,
81+ } ) ;
82+
6783 const addWorkout = async ( workout : Workout ) => {
6884 try {
85+ const payload = transformWorkoutForBackend ( workout ) ;
6986 const response = await axios . post (
7087 'http://localhost:8000/api/v1/workouts/' , // Replace with deployment endpoint
71- workout ,
88+ payload ,
7289 {
7390 headers : {
7491 Authorization : `Bearer ${ token } ` ,
@@ -77,7 +94,16 @@ export const WorkoutProvider = ({ children }: { children: ReactNode }) => {
7794 ) ;
7895 console . log ( "Response from POST /workouts: " , response ) ;
7996 const savedWorkout = response . data ;
80- setWorkouts ( prev => [ ...prev , savedWorkout ] ) ;
97+
98+ const saved = {
99+ ...response . data ,
100+ date : new Date ( response . data . created_at ) ,
101+ exercises : [ ] , // if backend doesn't return them
102+ duration : response . data . duration_minutes || 0 ,
103+ } ;
104+
105+ setWorkouts ( prev => [ ...prev , saved ] ) ;
106+
81107 } catch ( error ) {
82108 console . error ( 'Failed to save workout to backend:' , error . response ?. data || error . message ) ;
83109 }
0 commit comments