import { StudioProjectState } from '../types';

export const setAllTrackHeights = (height: number) => {
  return (state: StudioProjectState) => {
    return {
      ...state,
      tracks: state.tracks.map((t) => ({ ...t, height })),
    };
  };
};

export default function setTrackHeight(trackId: string, height: number) {
  return (state: StudioProjectState) => {
    if (!state.tracks.some((t) => t.id === trackId)) return state;

    return {
      ...state,
      tracks: state.tracks.map((t) =>
        t.id === trackId ? { ...t, height } : t
      ),
    };
  };
}

export const setTakeLaneHeight = (
  trackId: string,
  takeLaneId: string,
  height: number
) => {
  return (state: StudioProjectState) => {
    if (
      !state.tracks.some(
        (t) =>
          t.id === trackId && t.takeLanes.some((tl) => tl.id === takeLaneId)
      )
    )
      return state;

    return {
      ...state,
      tracks: state.tracks.map((t) =>
        t.id === trackId
          ? {
              ...t,
              takeLanes: t.takeLanes.map((tl) =>
                tl.id === takeLaneId ? { ...tl, height } : tl
              ),
            }
          : t
      ),
    };
  };
};
