@@ -11,7 +11,7 @@ import {
1111 Dimensions
1212} from 'react-native' ;
1313import { LineChart } from 'react-native-chart-kit' ;
14- import { useWorkout , Workout } from '@/contexts/WorkoutContext' ;
14+ import { useWorkout , Workout , Exercise } from '@/contexts/WorkoutContext' ;
1515import { Button } from '@/components/ui/Button' ;
1616import { Input } from '@/components/ui/Input' ;
1717import { router } from 'expo-router' ;
@@ -24,6 +24,7 @@ interface WorkoutItemProps {
2424}
2525
2626const WorkoutItem = ( { workout, onPress } : WorkoutItemProps ) => {
27+ const { workouts, currentWorkout, exerSets, exerReps, exerWeights, startWorkout, getWorkouts, getExercises, getExercises_2} = useWorkout ( ) ;
2728 const formatDate = ( date : Date ) => {
2829 return date . toLocaleDateString ( 'en-US' , {
2930 month : 'short' ,
@@ -32,7 +33,19 @@ const WorkoutItem = ({ workout, onPress }: WorkoutItemProps) => {
3233 } ) ;
3334 } ;
3435
35- console . log ( "Workout Item: " , workout ) ;
36+ //getWorkouts();
37+ //console.log(workout.id);
38+
39+ //getExercises(workout.id); // Set the exercises
40+ //console.log(getExercises_2()); // Get the exercises
41+
42+ //const exercises = getExercises_2();
43+
44+ //for (const exercise of exercises) {
45+ // exerSets += exercise.sets || 0;
46+ // exerReps += exercise.reps || 0;
47+ // exerWeight += exercise.weight || 0;
48+ //}
3649
3750 return (
3851 < TouchableOpacity style = { styles . workoutItem } onPress = { onPress } >
@@ -41,9 +54,9 @@ const WorkoutItem = ({ workout, onPress }: WorkoutItemProps) => {
4154 < Text style = { styles . workoutDate } > { formatDate ( workout . date ) } </ Text >
4255 </ View >
4356 < View style = { styles . workoutStats } >
44- < Text style = { styles . workoutStat } > { workout . exercises . sets } sets</ Text >
45- < Text style = { styles . workoutStat } > { workout . exercises . reps } reps</ Text >
46- < Text style = { styles . workoutStat } > { workout . exercises . weight } weight </ Text >
57+ < Text style = { styles . workoutStat } > { exerSets } sets</ Text >
58+ < Text style = { styles . workoutStat } > { exerReps } reps</ Text >
59+ < Text style = { styles . workoutStat } > { exerWeights } weights </ Text >
4760 </ View >
4861 </ TouchableOpacity >
4962 ) ;
@@ -52,10 +65,11 @@ const WorkoutItem = ({ workout, onPress }: WorkoutItemProps) => {
5265
5366
5467const ProgressScreen = ( ) => {
55- const { workouts, currentWorkout, startWorkout, getWorkouts } = useWorkout ( ) ;
68+ const { workouts, currentWorkout, startWorkout, getWorkouts, getExercises } = useWorkout ( ) ;
5669 const { isAuthenticated, isLoading } = useAuth ( ) ;
5770 const [ showNewWorkoutModal , setShowNewWorkoutModal ] = useState ( false ) ;
5871 const [ newWorkoutName , setNewWorkoutName ] = useState ( '' ) ;
72+ const [ showFinishModal , setShowFinishModal ] = useState ( false ) ;
5973 const backgroundColor = '#FFFFFF' ;
6074 const textColor = '#333' ;
6175 const tintColor = '#70A1FF' ;
@@ -211,6 +225,17 @@ const ProgressScreen = () => {
211225 />
212226 </ View >
213227
228+ { /*Finish Old Workout Button*/ }
229+ < View style = { styles . actionContainer } >
230+ < Button
231+ title = "Finish Old Workout"
232+ onPress = { ( ) => setShowFinishModal ( true ) }
233+ size = "lg"
234+ fullWidth
235+ style = { { backgroundColor : '#FFA07A' } }
236+ />
237+ </ View >
238+
214239 { /* Recent Workouts */ }
215240 < View style = { styles . workoutHistoryContainer } >
216241 < Text style = { [ styles . sectionTitle , { color : textColor } ] } >
@@ -275,6 +300,58 @@ const ProgressScreen = () => {
275300 </ View >
276301 </ View >
277302 </ Modal >
303+
304+ { /* Finish Workout Modal*/ }
305+ < Modal
306+ visible = { showFinishModal }
307+ transparent
308+ animationType = "slide"
309+ onRequestClose = { ( ) => setShowFinishModal ( false ) }
310+ >
311+ < View style = { styles . modalOverlay } >
312+ < View style = { [ styles . modalContent , { backgroundColor } ] } >
313+ < Text style = { [ styles . modalTitle , { color : textColor } ] } >
314+ Unfinished Workouts
315+ </ Text >
316+
317+ { workouts . filter ( w => ! w . is_completed ) . length === 0 ? (
318+ < Text style = { { textAlign : 'center' , color : textColor } } >
319+ No incomplete workouts.
320+ </ Text >
321+ ) : (
322+ workouts
323+ . filter ( w => ! w . is_completed )
324+ . map ( ( workout ) => (
325+ < TouchableOpacity
326+ key = { workout . id }
327+ onPress = { ( ) => {
328+ setShowFinishModal ( false ) ;
329+ router . push ( {
330+ pathname : '/finish' ,
331+ params : { workoutId : workout . id } ,
332+ } ) ;
333+ } }
334+ style = { {
335+ padding : 12 ,
336+ backgroundColor : '#F5F8FF' ,
337+ borderRadius : 10 ,
338+ marginBottom : 10 ,
339+ } }
340+ >
341+ < Text style = { { color : textColor } } > { workout . name } </ Text >
342+ </ TouchableOpacity >
343+ ) )
344+ ) }
345+
346+ < Button
347+ title = "Close"
348+ onPress = { ( ) => setShowFinishModal ( false ) }
349+ variant = "outline"
350+ style = { { marginTop : 10 } }
351+ />
352+ </ View >
353+ </ View >
354+ </ Modal >
278355 </ SafeAreaView >
279356 ) ;
280357} ;
0 commit comments