57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
'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,
|
|
};
|
|
};
|