Skip to content

Commit c513a79

Browse files
feat: make delete exercise button work (#43)
1 parent d274136 commit c513a79

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

src/features/workout-builder/model/use-workout-stepper.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export function useWorkoutStepper() {
2323
shuffleExercise,
2424
pickExercise,
2525
isShuffling,
26+
deleteExercise,
2627
} = useWorkoutBuilderStore();
2728

2829
const canProceedToStep2 = selectedEquipment.length > 0;
@@ -71,5 +72,8 @@ export function useWorkoutStepper() {
7172

7273
// pick
7374
pickExercise,
75+
76+
// delete
77+
deleteExercise,
7478
};
7579
}

src/features/workout-builder/model/workout-builder.store.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ interface WorkoutBuilderState {
2929
setExercisesOrder: (order: string[]) => void;
3030
shuffleExercise: (exerciseId: string, muscle: ExerciseAttributeValueEnum) => Promise<void>;
3131
pickExercise: (exerciseId: string) => Promise<void>;
32+
deleteExercise: (exerciseId: string) => void;
3233
loadFromSession: (params: {
3334
equipment: ExerciseAttributeValueEnum[];
3435
muscles: ExerciseAttributeValueEnum[];
@@ -90,6 +91,22 @@ export const useWorkoutBuilderStore = create<WorkoutBuilderState>((set, get) =>
9091

9192
setExercisesOrder: (order) => set({ exercisesOrder: order }),
9293

94+
deleteExercise: (exerciseId) =>
95+
set((state) => ({
96+
exercisesByMuscle: state.exercisesByMuscle
97+
.map((group) => {
98+
const filteredExercises = group.exercises.filter((ex: any) => ex.id !== exerciseId);
99+
100+
if (filteredExercises.length === group.exercises.length) {
101+
return group;
102+
}
103+
104+
return { ...group, exercises: filteredExercises };
105+
})
106+
.filter((group) => group.exercises.length > 0),
107+
exercisesOrder: state.exercisesOrder.filter((id) => id !== exerciseId),
108+
})),
109+
93110
shuffleExercise: async (exerciseId, muscle) => {
94111
set({ isShuffling: true });
95112
try {

src/features/workout-builder/ui/workout-stepper.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export function WorkoutStepper() {
4949
pickExercise,
5050
isShuffling,
5151
goToStep,
52+
deleteExercise,
5253
} = useWorkoutStepper();
5354

5455
useEffect(() => {
@@ -103,9 +104,8 @@ export function WorkoutStepper() {
103104
}
104105
};
105106

106-
const handleDeleteExercise = (exerciseId: string, muscle: string) => {
107-
alert("TODO : Delete exercise");
108-
console.log("Delete exercise:", exerciseId, "for muscle:", muscle);
107+
const handleDeleteExercise = (exerciseId: string) => {
108+
deleteExercise(exerciseId);
109109
};
110110

111111
const handleAddExercise = () => {

0 commit comments

Comments
 (0)