use-workout-stepper.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. setStep,
  12. nextStep,
  13. prevStep,
  14. toggleEquipment,
  15. clearEquipment,
  16. toggleMuscle,
  17. clearMuscles,
  18. fetchExercises,
  19. exercisesOrder,
  20. setExercisesOrder,
  21. shuffleExercise,
  22. pickExercise,
  23. isShuffling,
  24. deleteExercise,
  25. } = useWorkoutBuilderStore();
  26. const canProceedToStep2 = selectedEquipment.length > 0;
  27. const canProceedToStep3 = selectedMuscles.length > 0;
  28. return {
  29. // state
  30. currentStep,
  31. selectedEquipment,
  32. selectedMuscles,
  33. // exercises
  34. exercisesByMuscle,
  35. isLoadingExercises,
  36. exercisesError,
  37. // navigation
  38. goToStep: setStep,
  39. nextStep,
  40. prevStep,
  41. // equipment
  42. toggleEquipment,
  43. clearEquipment,
  44. // muscles
  45. toggleMuscle,
  46. clearMuscles,
  47. // validation
  48. canProceedToStep2,
  49. canProceedToStep3,
  50. // fetch
  51. fetchExercises,
  52. // order
  53. exercisesOrder,
  54. setExercisesOrder,
  55. // shuffle
  56. shuffleExercise,
  57. // additional
  58. isShuffling,
  59. // pick
  60. pickExercise,
  61. // delete
  62. deleteExercise,
  63. };
  64. }