Add src/app/hooks/useWorkoutTracking.ts
This commit is contained in:
56
src/app/hooks/useWorkoutTracking.ts
Normal file
56
src/app/hooks/useWorkoutTracking.ts
Normal file
@@ -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<UserMetrics>(getUserMetrics());
|
||||
const [workouts, setWorkouts] = useState<WorkoutSession[]>(getWorkoutSessions());
|
||||
const [cardioSessions, setCardioSessions] = useState<CardioSession[]>(getCardioSessions());
|
||||
const [nutritionLogs, setNutritionLogs] = useState<NutritionLog[]>(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,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user