import createTrack from '../createTrack';
import { StudioProjectState, StudioTrack } from '../types';

export default function addTrack(state: StudioProjectState) {
  const newTrack: StudioTrack = createTrack();
  const lastSelectedTrackIndex = state.tracks.findLastIndex(
    (track) =>
      state.selection.trackIds.includes(track.id) ||
      track.takeLanes.some((t) => state.selection.trackIds.includes(t.id))
  );

  if (lastSelectedTrackIndex === -1) {
    return {
      ...state,
      tracks: [...state.tracks, newTrack],
      selection: {
        ...state.selection,
        focusedTrackId: newTrack.id,
        trackIds: [newTrack.id],
      },
    };
  } else {
    return {
      ...state,
      tracks: [
        ...state.tracks.slice(0, lastSelectedTrackIndex + 1),
        newTrack,
        ...state.tracks.slice(lastSelectedTrackIndex + 1),
      ],
      selection: {
        ...state.selection,
        focusedTrackId: newTrack.id,
        trackIds: [newTrack.id],
      },
    };
  }
}
