import { useContext } from 'react'
import _ from 'lodash'
import { UserContext } from '../contexts/UserContext'
import { useNetwork } from '../components/useNetwork'
import { intervalDates } from '../util'
import { ArtistContext } from '../contexts/ArtistContext'
import { PlaylistDsp } from '../Consts'
import { PlaylistTrackPositionWithCurrentStreams } from '../types/types'
import { PlaylistType } from '../types/Playlist'

interface TrackPlaylistsResponse {
  playlistTrackPositions: PlaylistTrackPositionWithCurrentStreams[]
}

export function useTrackPlaylistsData(
  isrc: string,
  interval: Interval,
  dsp: PlaylistDsp,
  playlistType: PlaylistType | null
) {
  const user = useContext(UserContext)
  const artist = useContext(ArtistContext)
  const { startDate, endDate } = intervalDates(interval)
  const search = new URLSearchParams(
    _.pickBy({
      startDate,
      endDate,
      dsp,
      playlistType,
    }) as _.Dictionary<string>
  ).toString()
  const path = `api/artists/${artist.sonyArtistId}/track/${isrc}/playlists?${search}`
  const response = useNetwork<TrackPlaylistsResponse>(path, user, () => {})

  return {
    ...response,
    startDate,
    endDate,
  }
}
