feat(02-02): wire deleteLog through App.jsx and WorkoutPage to ExerciseCard
- Added deleteLog function in App.jsx: calls DELETE /api/logs and removes entry from local logs state
- Passed onDeleteSet={deleteLog} to WorkoutPage in workout view render
- Updated WorkoutPage function signature to accept onDeleteSet prop
- Passed onDeleteSet through to each ExerciseCard (ExerciseCard already calls it in handleDeleteSet)
- Non-logged sets (404 from backend) silently ignored via catch block
This commit is contained in:
@@ -90,6 +90,28 @@ function App() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const deleteLog = async (programExerciseId, setNumber) => {
|
||||||
|
try {
|
||||||
|
await fetch(`${API_URL}/logs`, {
|
||||||
|
method: 'DELETE',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({
|
||||||
|
user_id: userId,
|
||||||
|
program_exercise_id: programExerciseId,
|
||||||
|
date: today,
|
||||||
|
set_number: setNumber
|
||||||
|
})
|
||||||
|
})
|
||||||
|
// Remove from local logs state
|
||||||
|
setLogs(prev => ({
|
||||||
|
...prev,
|
||||||
|
[programExerciseId]: (prev[programExerciseId] || []).filter(l => l.set_number !== setNumber)
|
||||||
|
}))
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Failed to delete log:', err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const startWorkout = async (day) => {
|
const startWorkout = async (day) => {
|
||||||
await fetchProgram() // Ensure program is loaded
|
await fetchProgram() // Ensure program is loaded
|
||||||
setSelectedDay(day)
|
setSelectedDay(day)
|
||||||
@@ -135,6 +157,7 @@ function App() {
|
|||||||
week={currentWeek}
|
week={currentWeek}
|
||||||
logs={logs}
|
logs={logs}
|
||||||
onLogSet={logSet}
|
onLogSet={logSet}
|
||||||
|
onDeleteSet={deleteLog}
|
||||||
onBack={() => setView('dashboard')}
|
onBack={() => setView('dashboard')}
|
||||||
fetchProgression={fetchProgression}
|
fetchProgression={fetchProgression}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ function getMuscleGroups(exercises) {
|
|||||||
return Array.from(groups)
|
return Array.from(groups)
|
||||||
}
|
}
|
||||||
|
|
||||||
function WorkoutPage({ day, week, logs, onLogSet, onBack, fetchProgression }) {
|
function WorkoutPage({ day, week, logs, onLogSet, onDeleteSet, onBack, fetchProgression }) {
|
||||||
const [progressions, setProgressions] = useState({})
|
const [progressions, setProgressions] = useState({})
|
||||||
const [expandedExercise, setExpandedExercise] = useState(null)
|
const [expandedExercise, setExpandedExercise] = useState(null)
|
||||||
const [warmupDone, setWarmupDone] = useState(false)
|
const [warmupDone, setWarmupDone] = useState(false)
|
||||||
@@ -239,6 +239,7 @@ function WorkoutPage({ day, week, logs, onLogSet, onBack, fetchProgression }) {
|
|||||||
expandedExercise === exercise.id ? null : exercise.id
|
expandedExercise === exercise.id ? null : exercise.id
|
||||||
)}
|
)}
|
||||||
onLogSet={onLogSet}
|
onLogSet={onLogSet}
|
||||||
|
onDeleteSet={onDeleteSet}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
Reference in New Issue
Block a user