From a61b9e7295f5bea66de73b8a3b7da467e8ef5bc6 Mon Sep 17 00:00:00 2001 From: bender Date: Wed, 11 Mar 2026 19:34:30 +0000 Subject: [PATCH] Update src/components/workout/WorkoutSaver.tsx --- src/components/workout/WorkoutSaver.tsx | 167 ++++-------------------- 1 file changed, 27 insertions(+), 140 deletions(-) diff --git a/src/components/workout/WorkoutSaver.tsx b/src/components/workout/WorkoutSaver.tsx index aa6041b..24188e1 100644 --- a/src/components/workout/WorkoutSaver.tsx +++ b/src/components/workout/WorkoutSaver.tsx @@ -1,154 +1,41 @@ 'use client'; -import { useState } from 'react'; -import { useWorkoutData } from '@/hooks/useWorkoutData'; -import { WorkoutSession, ExerciseLog } from '@/lib/storage/workoutStorage'; +import React, { useState } from 'react'; +import { saveWorkoutSession } from '@/lib/storage/workoutStorage'; interface WorkoutSaverProps { - onSave?: (session: WorkoutSession) => void; - onError?: (error: string) => void; + onSave?: () => void; } -interface WorkoutSaverHandle { - saveCardioWorkout: (data: { - distance: number; - duration: number; - pace: string; - calories: number; - steps?: number; - }) => Promise; - saveTrainingWorkout: (data: { - exercises: ExerciseLog[]; - duration: number; - calories?: number; - }) => Promise; - saveNutritionLog: (data: { - meals: Array<{ - name: string; - calories: number; - protein: number; - carbs: number; - fats: number; - }>; - }) => Promise; - isSaving: boolean; -} +const WorkoutSaver: React.FC = ({ onSave }) => { + const [formData, setFormData] = useState({ + date: new Date().toISOString().split('T')[0], + type: 'cardio' as const, + duration: 30, + calories: 0, + notes: '', + }); -export const useWorkoutSaver = ({ onSave, onError }: WorkoutSaverProps): WorkoutSaverHandle => { - const { addSession } = useWorkoutData(); - const [isSaving, setIsSaving] = useState(false); - - const saveCardioWorkout = async (data: { - distance: number; - duration: number; - pace: string; - calories: number; - steps?: number; - }) => { - setIsSaving(true); + const handleSave = async () => { try { - const session: Omit = { - date: new Date().toISOString(), - type: 'cardio', - distance: data.distance, - duration: data.duration, - pace: data.pace, - calories: data.calories, - steps: data.steps - }; - const success = addSession(session); - if (success && onSave) { - onSave(session as WorkoutSession); - } else if (!success && onError) { - onError('Failed to save cardio workout'); - } + await saveWorkoutSession({ + date: formData.date, + type: formData.type, + duration: formData.duration, + calories: formData.calories, + notes: formData.notes, + }); + onSave?.(); } catch (error) { - if (onError) onError('Error saving cardio workout'); - console.error(error); - } finally { - setIsSaving(false); + console.error('Error saving workout:', error); } }; - const saveTrainingWorkout = async (data: { - exercises: ExerciseLog[]; - duration: number; - calories?: number; - }) => { - setIsSaving(true); - try { - const session: Omit = { - date: new Date().toISOString(), - type: 'training', - exercises: data.exercises, - duration: data.duration, - calories: data.calories - }; - const success = addSession(session); - if (success && onSave) { - onSave(session as WorkoutSession); - } else if (!success && onError) { - onError('Failed to save training workout'); - } - } catch (error) { - if (onError) onError('Error saving training workout'); - console.error(error); - } finally { - setIsSaving(false); - } - }; - - const saveNutritionLog = async (data: { - meals: Array<{ - name: string; - calories: number; - protein: number; - carbs: number; - fats: number; - }>; - }) => { - setIsSaving(true); - try { - const meals = data.meals.map((meal, index) => ({ - id: `meal-${index}-${Date.now()}`, - name: meal.name, - calories: meal.calories, - protein: meal.protein, - carbs: meal.carbs, - fats: meal.fats, - timestamp: new Date().toISOString() - })); - - const totalCalories = data.meals.reduce((sum, meal) => sum + meal.calories, 0); - const totalProtein = data.meals.reduce((sum, meal) => sum + meal.protein, 0); - - const session: Omit = { - date: new Date().toISOString(), - type: 'nutrition', - meals, - calories: totalCalories, - notes: `Total Protein: ${totalProtein}g` - }; - const success = addSession(session); - if (success && onSave) { - onSave(session as WorkoutSession); - } else if (!success && onError) { - onError('Failed to save nutrition log'); - } - } catch (error) { - if (onError) onError('Error saving nutrition log'); - console.error(error); - } finally { - setIsSaving(false); - } - }; - - return { - saveCardioWorkout, - saveTrainingWorkout, - saveNutritionLog, - isSaving - }; + return ( +
+ +
+ ); }; -export default useWorkoutSaver; +export default WorkoutSaver;