import { useQuery } from '@tanstack/react-query'
import { dockerApi } from '../api/docker'

export function useDocker(host?: string | null, serverId?: string | null) {
  const {
    data: containers = [],
    isLoading,
    error,
    refetch,
  } = useQuery({
    queryKey: ['docker-containers', host, serverId],
    queryFn: async () => {
      try {
        return await dockerApi.listContainers(host || undefined, serverId || undefined)
      } catch (err: unknown) {
        // Extract helpful error message from response
        const error = err as { response?: { status?: number; data?: { details?: string } } }
        if (error.response?.status === 503) {
          const details = error.response?.data?.details
          const message = details || 'Docker service unavailable. Check that Docker is running.'
          throw new Error(message)
        }
        throw err
      }
    },
    enabled: Boolean(host) || Boolean(serverId),
    retry: 1, // Don't retry too much if docker is not available
  })

  return {
    containers,
    isLoading,
    error,
    refetch,
  }
}
