import { useContext } from 'react'
import { useNetwork } from '../components/useNetwork'
import { ArtistContext } from '../contexts/ArtistContext'
import { UserContext } from '../contexts/UserContext'
import { TimeInterval } from '../types/TimeInterval'
import { TrackWithStreamsByDspAndDate } from '../types/types'
import { timeRangeDates } from '../util'

export interface TracksScreenResponse {
  tracks: TrackWithStreamsByDspAndDate[]
}

export const cachedTracksScreenPaths: Set<string> = new Set()
export function useTracksScreenData(
  timeInterval: TimeInterval,
  onRetry: () => void
) {
  const user = useContext(UserContext)
  const artist = useContext(ArtistContext)
  const { startDate, endDate } = timeRangeDates(timeInterval)
  const path = `screens/artist/${artist.sonyArtistId}/tracks?startDate=${startDate}&endDate=${endDate}`
  cachedTracksScreenPaths.add(path)

  const { data, showToast, refreshControl } = useNetwork<TracksScreenResponse>(
    path,
    user,
    onRetry
  )

  return { data, showToast, refreshControl }
}
