use-workout-stepper.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. "use client";
  2. import { useWorkoutBuilderStore } from "./workout-builder.store";
  3. export function useWorkoutStepper() {
  4. const {
  5. currentStep,
  6. selectedEquipment,
  7. selectedMuscles,
  8. exercisesByMuscle,
  9. isLoadingExercises,
  10. exercisesError,
  11. exercisesOrder,
  12. shufflingExerciseId,
  13. setStep,
  14. nextStep,
  15. prevStep,
  16. toggleEquipment,
  17. clearEquipment,
  18. toggleMuscle,
  19. clearMuscles,
  20. fetchExercises,
  21. setExercisesOrder,
  22. shuffleExercise,
  23. pickExercise,
  24. deleteExercise,
  25. loadFromSession,
  26. } = useWorkoutBuilderStore();
  27. const canProceedToStep2 = selectedEquipment.length > 0;
  28. const canProceedToStep3 = selectedMuscles.length > 0;
  29. return {
  30. // state
  31. currentStep,
  32. selectedEquipment,
  33. selectedMuscles,
  34. // exercises
  35. exercisesByMuscle,
  36. isLoadingExercises,
  37. exercisesError,
  38. // navigation
  39. goToStep: setStep,
  40. nextStep,
  41. prevStep,
  42. // equipment
  43. toggleEquipment,
  44. clearEquipment,
  45. // muscles
  46. toggleMuscle,
  47. clearMuscles,
  48. // validation
  49. canProceedToStep2,
  50. canProceedToStep3,
  51. // fetch
  52. fetchExercises,
  53. // order
  54. exercisesOrder,
  55. setExercisesOrder,
  56. // shuffle
  57. shuffleExercise,
  58. // additional
  59. shufflingExerciseId,
  60. // pick
  61. pickExercise,
  62. // delete
  63. deleteExercise,
  64. // load
  65. loadFromSession,
  66. };
  67. }