diff --git a/src/app/hooks/useWorkoutTracking.ts b/src/app/hooks/useWorkoutTracking.ts new file mode 100644 index 0000000..b4e5b59 --- /dev/null +++ b/src/app/hooks/useWorkoutTracking.ts @@ -0,0 +1,56 @@ +'use client'; + +import { useState, useCallback } from 'react'; +import { + saveWorkoutSession, + saveCardioSession, + saveNutritionLog, + getUserMetrics, + getWorkoutSessions, + getCardioSessions, + getNutritionLogs, + WorkoutSession, + CardioSession, + NutritionLog, + UserMetrics, +} from '@/app/lib/storage/workoutStorage'; + +export const useWorkoutTracking = () => { + const [metrics, setMetrics] = useState(getUserMetrics()); + const [workouts, setWorkouts] = useState(getWorkoutSessions()); + const [cardioSessions, setCardioSessions] = useState(getCardioSessions()); + const [nutritionLogs, setNutritionLogs] = useState(getNutritionLogs()); + + const addWorkoutSession = useCallback((session: WorkoutSession) => { + saveWorkoutSession(session); + setWorkouts(getWorkoutSessions()); + setMetrics(getUserMetrics()); + }, []); + + const addCardioSession = useCallback((session: CardioSession) => { + saveCardioSession(session); + setCardioSessions(getCardioSessions()); + setMetrics(getUserMetrics()); + }, []); + + const addNutritionLog = useCallback((log: NutritionLog) => { + saveNutritionLog(log); + setNutritionLogs(getNutritionLogs()); + setMetrics(getUserMetrics()); + }, []); + + const refreshMetrics = useCallback(() => { + setMetrics(getUserMetrics()); + }, []); + + return { + metrics, + workouts, + cardioSessions, + nutritionLogs, + addWorkoutSession, + addCardioSession, + addNutritionLog, + refreshMetrics, + }; +};