super-fit-web-app / src / components / programs / exercise-reps-sets.tsx
exercise-reps-sets.tsx
Raw
import { ProgramDataProps } from '@/pages/dashboard/create-program';
import { TextField, Typography, Grid } from '@mui/material';
import { useEffect, useState } from 'react';

type ExerciseRepsAndSetsProps = {
  id: string;
  name: string;
  setExerciseData: React.Dispatch<React.SetStateAction<ProgramDataProps>>
}

const ExerciseRepsAndSets = ({ id, name, setExerciseData }: ExerciseRepsAndSetsProps) => {
  const [reps, setReps] = useState<string>('')
  const [sets, setSets] = useState<string>('')
  const [rest, setRest] = useState<string>('')

  useEffect(() => {
    setExerciseData(prevState => {
      const existingExerciseIndex = prevState.exercises.findIndex(exercise => exercise.id === id);

      if (existingExerciseIndex !== -1) {
        // Update the existing exercise object
        const updatedExercises = [...prevState.exercises];
        updatedExercises[existingExerciseIndex] = { id, reps, sets, rest };
        return { ...prevState, exercises: updatedExercises };
      } else {
        // Add a new exercise object
        return { ...prevState, exercises: [...prevState.exercises, { id, reps, sets, rest }] };
      }
    });
  }, [reps, sets, rest]);

  return (
    <>
      <Typography>{id.slice(0, 5) + '...'}</Typography>
      <Typography variant='h3'>{name}</Typography>
      <Grid container spacing={1}>
        <Grid item xs={12} md={12 / 3}>
          <TextField
            type='string'
            label={'Reps'}
            variant={'outlined'}
            onChange={(event) => setReps(event.target.value)}
          />
        </Grid>
        <Grid item xs={12} md={12 / 3}>
          <TextField
            type='string'
            label={'Sets'}
            variant={'outlined'}
            onChange={(event) => setSets(event.target.value)}
          />
        </Grid>
        <Grid item xs={12} md={12 / 3}>
          <TextField
            type='string'
            label={'Rest'}
            variant={'outlined'}
            onChange={(event) => setRest(event.target.value)}
          />
        </Grid>
      </Grid>
    </>
  )
}

export default ExerciseRepsAndSets