import { useQuery } from 'react-query'
import axiosInstance from '../axiosInstance'

export const MEASUREMENT_UNITS = [
  'Microgram',
  'Milligram',
  'Gram',
  'Kilogram',
  'Millilitre',
  'Litre',
  'Tablet',
  'Capsule',
  'Drop',
  'International Unit (IU)',
  'Ounces',
  'Pounds',
  'Unit',
  'Puff',
  'Patch',
  'Suppository',
  'Application',
]

interface MedicationDetailsResponse {
  status: boolean
  response: {
    measurements: string[]
  }
  message: string
}

const fetchMedicationDetails = async (): Promise<MedicationDetailsResponse> => {
  try {
    const response = await axiosInstance.get('/common/medication-details')
    return response.data
  } catch {
    return {
      status: true,
      response: { measurements: MEASUREMENT_UNITS },
      message: 'Using default measurement units',
    }
  }
}

export const useMedicationDetails = () => {
  return useQuery(
    ['medication-details'],
    fetchMedicationDetails,
    {
      staleTime: 30 * 60 * 1000,
      cacheTime: 60 * 60 * 1000,
      refetchOnWindowFocus: false,
    }
  )
}
